Sunday, August 31, 2014
Wednesday, August 27, 2014
How do I suspend or quiesce the UniVerse database?
To perform valid backups of your database, it is important to suspend the database. This prevents modifications of files during the backup process. Our standard backup script uses database suspension with snapshots to create point-in-time images of your database files, but it is also possible to perform the suspension procedure manually:
Do not forget to remove the suspension after you have completed the backup, or users will be unable to use Eclipse.
Log in as root
Run the following command to suspend the database:
uv -admin -L
Run the following command to validate the status of the database:
uv -admin -R
Run the following command to sync any cached data to disk:
sync
At this point, the database files are ready for backup
When the backup is completed, run the following command to release the database:
uv -admin -U
Universe Editor Commands
The EDITOR can be called with the following formats:
ED (file and record id's will be prompted)
ED file (record id's will be prompted)
ED file id (edit the record 'id' in 'file')
ED file id id... (edit multiple id's in 'file')
ED file * (edit all records in 'file')
SELECT ... (may precede 'ED file' command)
Special ASCII characters may be entered as:
...^nnn... where nnn is the decimal character code
...^^... will enter a single UP ARROW character.
An Editor command ending with a '?' will be placed on the command stack, but will not be executed.
The following commands may be used in the Editor:
A - Do the last 'A any' (APPEND) command again.
A any - APPEND 'any' to this line.
ABORT - Toggle command execution ABORT between ON and OFF.
B - Set the current line pointer to the BOTTOM line.
B any - BREAK the current line after 'any' into two lines.
BLOCK - Toggle BLOCK operation verification between ON and OFF.
C - Do the last 'CHANGE' command again.
C/// - CHANGE one or more lines.
Formats permitted are:
C/from/to C/from/to/#
C/from/to/G C/from/to/#G C/from/to/G#
C/from/to/B C/from/to/BG C/from/to/GB
where / - is any delimiter character.
from - is the character string to be replaced.
to - is the character string to substitute.
# - is the number of lines to CHANGE. (The default is one)
G - is the letter 'G' (global) CHANGE all instances in line.
B - is the letter 'B', CHANGE all lines in the defined BLOCK.
CASE - Toggle CASE mode between ON and OFF. When CASE is ON, input will remain in the
case as typed. When CASE is OFF, input will be UPCASEd for case insensitivity support.
TCL CASE insensitivity must be ON to use CASE.
case as typed. When CASE is OFF, input will be UPCASEd for case insensitivity support.
TCL CASE insensitivity must be ON to use CASE.
CAT any - CONCATENATE the next line onto the current line, separated by 'any'.
COL - Display relative COLUMN POSITIONS on the CRT.
COPY - COPY a BLOCK (see '<' and '>' ), source block is unchanged.
D - DELETE the current line.
D# - DELETE '#' lines starting with the current line.
DE - DELETE the current line.
DE# - DELETE '#' lines starting with the current line.
DELETE - DELETE the entire record from the FILE.
DROP - DROP (DELETE) all lines in the defined BLOCK (see '<' and '>' ).
DUP - DUPLICATE the current line.
DUP# - DUPLICATE the current line '#' times.
EX - EXIT the editor (same as QUIT).
F - Do the last 'FIND' command again.
any - FIND the next line that starts with the string 'any'.
F# any - FIND the next line that contains the string 'any' starting in column '#'.
FANCY.FORMAT - Format a BASIC program to show logical structure by indenting. This command is
similar to the FORMAT command except that it handles comments and labels
differently.
similar to the FORMAT command except that it handles comments and labels
differently.
FD - Delete the entire record from the file (same as DELETE).
FI - FILE the record (same as FILE).
FIL - FILE the record under the originally specified name.
FILE name - FILE the record under the specified 'name'.
FILE f name - FILE record 'name' in file 'f'.
FORMAT - FORMAT a BASIC program to show logical structure by indenting.
G# - GO TO line '#' (set line pointer to line '#'; 'G' is optional).
G< - GO TO line defined by the beginning of the current BLOCK.
G> - GO TO line defined by the end of the current BLOCK.
HELP - Prompt user to display HELP information on the CRT.
HELP any - Display HELP information on CRT for 'any'.
I - INSERT new lines AFTER the current line. Prompt for successive lines of INPUT until
NULL input. An INPUT line of a single space will store a NULL line.
NULL input. An INPUT line of a single space will store a NULL line.
IB - INSERT new lines BEFORE the current line. Prompt for successive lines of INPUT until
NULL input. An INPUT line of a single space will store a NULL line.
NULL input. An INPUT line of a single space will store a NULL line.
I any - INSERT (INPUT) the line 'any' AFTER the current line.
IB any - INSERT (INPUT) the line 'any' BEFORE the current line.
L - Do the last 'LOCATE' command again.
L any - LOCATE the next line that contains the string 'any'.
L# - LIST '#' lines starting with the current line on to the CRT.
LOAD name - LOAD the record 'name' from the current FILE; line #'s will be prompted.
LOAD f name - LOAD the record 'name' from file 'f'; line #'s will be prompted.
M - Do the last 'MATCH' command again.
M any - Search for next line that MATCHES the pattern 'any'.
MOVE - MOVE a BLOCK (see '<' and '>' ); source block is deleted.
N - Go on to next selected record; used when SELECT list is active.
OOPS - RESTORE the record to the condition prior to the last change.
P - PRINT on CRT the same number of lines specified with last 'P#'.
P# - PRINT on CRT '#' lines starting with the current line.
PB - PRINT on CRT all lines in the defined BLOCK (see '<' and '>' ).
PE - The PE command allows a user to execute any legal PERFORM command from within
the editor. Upon completion of the command, control will be returned to the editor.
the editor. Upon completion of the command, control will be returned to the editor.
PERFORM - The PERFORM command allows a user to execute any legal PERFORM command from
within the editor. Upon completion of the command, control will be returned to the
editor.
within the editor. Upon completion of the command, control will be returned to the
editor.
PL# - PRINT the current line and the next '#' lines; do not change the current line pointer.
PL-# - PRINT the current line and the prior '#' lines; do not change the current line pointer.
PO# - POSITION current line pointer to line '#' ('PO' is optional).
PP# - PAGE.PRINT a window of '#' lines around the current line; do not change the current
line pointer.
line pointer.
Q - QUIT - EXIT the editor.
QUIT - QUIT - EXIT the editor.
R - Do the last 'REPLACE' (R any) command again.
R any - REPLACE this line with 'any'.
R/// - CHANGE one or more lines (same as C/// command.)
RELEASE - RELEASE the update record LOCK for this file.
SAVE - SAVE (FILE) a copy of this record under the original name.
SAVE name - SAVE (FILE) a copy of this record under the specified 'name'.
SAVE f name - SAVE (FILE) a copy of this record as record 'name' in file 'f'.
SEQ/// - Generate SEQUENTIAL numbers. Formats permitted are:
SEQ/from/start/# SEQ/from/start/#/inc
where / - is any delimiter character.
from - is the optional character string to replace.
start - is the starting sequential number.
# - is the number of lines to SEQUENCE, or the letter 'B'
(sequence in defined BLOCK).
inc - is the optional increment (default is one).
SIZE - Display the SIZE of this record (# of LINES/FIELDS, # of BYTES).
SPOOL - SPOOL entire record to PRINTER.
SPOOL# - SPOOL '#' lines to the PRINTER.
SPOOLHELP - SPOOL the HELP listing to the default PRINTER.
STAMP - INSERT a 'last modified' stamp into the record, which begins with a '*' (for BASIC
'comment'), and contains the account name, LOGIN name (if different from account
name), date and time. Used to mark when record was last changed.
'comment'), and contains the account name, LOGIN name (if different from account
name), date and time. Used to mark when record was last changed.
T - Set current line to the TOP (before first line).
UNLOAD name - UNLOAD to record 'name' in this FILE; line #'s are prompted.
UNLOAD f name- UNLOAD to record 'name' in file 'f'; line #'s are prompted.
X - EXIT (QUIT) from the editor and abandon an active SELECT list.
XEQ - The XEQ command allows a user to execute any legal PERFORM command from
within the editor. Upon completion of the command, control will be returned back to
the editor.
within the editor. Upon completion of the command, control will be returned back to
the editor.
.A# any - Append 'any' to stack command '#'. The default for '#' is 1.
.C#/s1/s2 - CHANGE string 's1' to string 's2' in stack command '#'. The default for '#' is 1. '/' is
any delimiter character.
any delimiter character.
.D# - DELETE stack command '#'. The default for '#' is 1.
.D name - DELETE pre-stored command record 'name' from file '&ED&'.
.D f name - DELETE pre-stored command record 'name' from file 'f'.
.I# - Prompt for successive command lines to INSERT at stack command '#' until null input.
'#' defaults to 1.
'#' defaults to 1.
.I# any - INSERT (INPUT) 'any' at command stack '#'. '#' defaults to 1.
.L# - LIST, on the CRT, the last '#' commands in the command stack. '#' defaults to 9.
.L name - LIST, on the CRT, the pre-stored command string in record 'name' in file '&ED&'.
.L f name - LIST, on the CRT, the pre-stored command string in record 'name' in file 'f'.
.L f * - LIST, on the CRT, the names of the pre-stored command records in file 'f'. 'f' defaults
to '&ED&'.
to '&ED&'.
.R# - RECALL command '#' to stack position 1 (moves command '#', does not copy it).
.R name - RECALL pre-stored command record 'name' to the stack.
.R f name - RECALL pre-stored command record 'name' in file 'f' to the stack.
.S# name - SAVE commands, starting with command '#' and ending with command 1 in the stack,
in record 'name' in file '&ED&'.
in record 'name' in file '&ED&'.
.S# f name - SAVE commands, starting with command '#' and ending with command 1 in the stack,
in record 'name' in file 'f'.
in record 'name' in file 'f'.
.S n s#,e# - SAVE commands starting with command 's#' and ending with command 'e#' in the
stack, in record 'n' in file '&ED&'.
stack, in record 'n' in file '&ED&'.
For example, '.S n 4,2' saves three commands, with stack command #4 becoming
pre-stored command #1, in record 'n' in file '&ED&'.
pre-stored command #1, in record 'n' in file '&ED&'.
.S f n s#,e# - SAVE commands starting with command 's#' and ending with command 'e#' in the
stack, in record 'n' in file 'f'.
stack, in record 'n' in file 'f'.
For example, '.S n 4,2' saves three commands, with stack command #4 becoming
pre-stored command #1, in record 'n' in file 'f'.
pre-stored command #1, in record 'n' in file 'f'.
.X# - EXECUTE stack command '#' and put it in stack position 1.
.X name - EXECUTE the pre-stored commands in record 'name' in file '&ED&'.
.X f name - EXECUTE the pre-stored commands in record 'name' in file 'f'.
.XK - EXECUTE KILL. This command ABORTs a pre-stored command string after execution is
suspended by a PAUSE command.
suspended by a PAUSE command.
.XR - EXECUTE RESUME. This command RESTARTs a pre-stored command string after
execution is suspended by a PAUSE command.
execution is suspended by a PAUSE command.
PAUSE - Is a pre-stored command string command (i.e. It is valid only within the pre-stored
command string itself) that suspends command execution when encountered. A '.XR'
command restarts execution and a '.XK' command aborts execution.
command string itself) that suspends command execution when encountered. A '.XR'
command restarts execution and a '.XK' command aborts execution.
LOOP #1 #2 - Is a pre-stored command string command (i.e. It is valid only within the pre-stored
command string itself) that repeats the sequence of commands beginning with
command '#1' and ending with the LOOP command itself, for '#2' iterations. Both '#1'
and '#2' default to 1.
command string itself) that repeats the sequence of commands beginning with
command '#1' and ending with the LOOP command itself, for '#2' iterations. Both '#1'
and '#2' default to 1.
+# - Advance current line POINTER by '#' lines.
-# - Back up current line POINTER by '#' lines.
# - Set the current line POINTER to the '#' line.
< - Define the first line of a BLOCK (for COPY/CHANGE/DROP/MOVE/PB).
> - Define the last line of a BLOCK (for COPY/CHANGE/DROP/MOVE/PB).
<> - Define first and last line of a BLOCK (for COPY/CHANGE/DROP/MOVE/PB).
^ - Switch UP ARROW on/off to display non-printing characters as ^nnn where nnn is
the decimal equivalent of ASCII code.
the decimal equivalent of ASCII code.
? - PRINT key parameters on the CRT.
Shutdown D3 from the command line
Here is what you need to shutdown D3 from the command line
d3 -0 -n pick0 -d '\rdm\rDM\rDM\rshutdown (y\r'
It can be done in cron (linux) or used with UPS's that shutdown the host in Windows, etc.
Assuming no password on DM account. Otherwise you'll need that in the command line.
D3 Auto Boot
We no longer use /etc/inittab to auto boot D3. It was replaced by a new subsystem called Upstart.
There is now a directory called /etc/init. We must place our d3 boot configuration file in there.
vi /etc/init/d3.conf
# D3 Database start on last console tty12 (alt F12)
description "D3 database server"
start on stopped rc RUNLEVEL=[2345]
exec /usr/bin/d3 -0 -a x -t tty12
Once you save the d3.conf file, you can start D3 one of 2 ways:
1) Reboot and it will start, a good final test
2) Use the command "start d3" and it will execute this new d3.conf file.
To see if it is really running issue this command:
# initcl status d3
d3 start/running, process 5547
To stop d3, just login to D3 and issue the normal shutdown command at TCL. Also, there is d3 -k in Linux but only use this as a last resort.
# start d3
d3 start/running, process 5547
# initctl status d3
d3 start/running, process 5547
Tuesday, August 26, 2014
D3 - Replace variable length strings
I came across an issue where I needed to convert a single (1) character to two (2) characters and the normal CONVERT statement just did not cut it.
So I found this little command buried in the D3 docs called “EREPLACE”
It will convert a variable length string to another variable length string in a record, array or string.
Use:
In your code, you have to put in “$OPTIONS EXT” (without the quotes obviously) preferably in the top of the program where you might have $INCLUDE for instance.
Then you can use this command like this:
NSTRING = EREPLACE(“The new time is…”,”new”,”oldest”)
PRINT NSTRING
Which will print “The oldest time is…”
I hope you can use this in your D3 adventures. There might be other tricks out there, but this worked pretty well and it was very quick.
Let me know if you have any questions.
Subscribe to:
Posts (Atom)