[Info-vax] OpenVMS STARTUP Whitepaper
Jan-Erik Söderholm
jan-erik.soderholm at telia.com
Fri Dec 11 11:12:18 EST 2020
Den 2020-12-11 kl. 15:51, skrev Arne Vajhøj:
> On 12/11/2020 7:55 AM, Craig A. Berry wrote:
>> On 12/10/20 11:28 PM, David Jones wrote:
>>> On Thursday, December 10, 2020 at 8:57:16 PM UTC-5, Stephen Hoffman wrote:
>>>> SQLite can be useful for storing the data, particularly for those
>>>> without Oracle licenses and that for whatever reason.
>>>
>>> Using Oracle in your startup sequencer means you have to start it before
>>> you can run
>>> the thing that starts it -- somewhat problematic. A cloud-based database
>>> still needs the
>>> network running. I link the startup driver application statically with
>>> the sqlite3 library
>>> and run it with the data file flagged as immutable (readonly, no locking).
>>
>> I believe in the case of Rdb there is no start-up because there is no
>> service -- you just link your code against the libraries and run it in
>> the context of whatever process. In other words, the same way you are
>> running SQLite.
>
> Rdb use file access (unless using the using one of the remote network
> protocols that rely SQL service or a thin JDBC driver server).
SQL/Services is for the SQL/Services API (as used by ODBC drivers),
JDBC from Java based clients or OCI from clients that thinks they are
accessing an Oracle Classic database.
Then you can run "RDBSERVER" using it's own protocoll. That s mainly for
VMS-2-VMS access such as when you want the single-node optimazitions
within a cluster and having the other cluster nodes access Rdb remotely
instead of direct shared access (involves more cross-cluster locking).
Doesn't have to be a cluster, of course.
If you are running DECnet, you can specify a remote file (just as when
using FAL) in the attach and the Rdb code will detect that and connect
the the remote RDBSERVER object without the application having to care.
(I thinkthat also works for TCPIP, do not use this).
$ tcpip sh service rdbserver
Service Port Proto Process Address State
RDBSERVER 611 TCP RDB 0.0.0.0 Enabled
$ ncp show object rdbserver
Object Number File/PID User Id Password
RDBSERVER 35 RDBSERVER.COM RDB$REMOTE <pw>
$
Anyway, RDBSERVER has nothing to do with SQL/Services that uses
a different TCPIP port and another DECnet obbject.
But yes, you can call RDBREMOTE for "file access", just as you can
with FAL, since the application doesn't care.
>
> But will Rdb work properly without the RDMS_MONITOR and RMU processes running?
>
No, your application will not do anything with the data without having
an "OK" from the monitor. You send an "attach request" (well, the code
in the sharable images does) to the monitor and the monitor says "OK".
It also logs this like:
3-AUG-2020 09:46:57.56 - Received user attach request from 0018F182:1
- process name <process>, user <user>
- image name "$1$DGA3610:<dir.dir><EXE file>"
- database name "$1$DGA3620:[dir]<*.RDB file"
- 20 global buffers allocated; 14918 free out of 20000
- sending normal user attach reply to 0018F182:1
Then the attach either ends normaly like:
3-AUG-2020 12:46:48.37 - Received user attach request from 0018F182:1
- process name <process>, user <user>
- image name "$1$DGA3610:<EXE file>"
- database name "$1$DGA3620:[dir]<.RDB file>
- 20 global buffers allocated; 14558 free out of 20000
- sending normal user attach reply to 0018F182:1
3-AUG-2020 13:01:24.30 - Received user image termination from 0018F182:1
- database name "$1$DGA3620:[dir]<.RDB file>
- 20 global buffers freed; 14578 free out of 20000
Or abnormaly like this attach:
3-AUG-2020 13:01:50.39 - Received user attach request from 0018F182:1
- process name <process>, user <user>
- image name "$1$DGA3610:<EXE file>"
- database name "$1$DGA3620:[dir]<.RDB file>
- 20 global buffers allocated; 14558 free out of 20000
- sending normal user attach reply to 0018F182:1
Then some hours later (process terminated or crashed).
One recovery process started (RDM_RB73_15FA5 in this example).
Total of 0.04 sec from process crash to recovery done.
3-AUG-2020 20:56:39.47 - Received user image termination from 0018F182:1
- database name "$1$DGA3620:[dir]<.RDB file>
- abnormal user termination detected
- %SYSTEM-S-NORMAL, normal successful completion
- Monitor created Database Recovery process RDM_RB73_15FA5 (001BDC2F)
- user termination suspended until recovery ready
3-AUG-2020 20:56:39.48 - Received recovery attach from 001BDC2F:1
- process name RDM_RB73_15FA5, user SYSTEM
- database name "$1$DGA3620:[dir]<.RDB file>
- 20 previously allocated global buffers freed
- 20 global buffers allocated; 16078 free out of 20000
- sending normal recovery attach reply to 001BDC2F:1
3-AUG-2020 20:56:39.49 - Received recovery ready from 001BDC2F:1
- process name RDM_RB73_15FA5, user SYSTEM
- database name "$1$DGA3620:[dir]<.RDB file>
- sending normal recovery ready reply to 001BDC2F:1
3-AUG-2020 20:56:39.50 - Received recovery status from 001BDC2F:1
- process name RDM_RB73_15FA5, user SYSTEM
- database name "$1$DGA3620:[dir]<.RDB file>
- dead process transaction 0 was not active
3-AUG-2020 20:56:39.51 - Received recovery image termination from 001BDC2F:1
- database name "$1$DGA3620:[dir]<.RDB file>
- 20 global buffers freed; 16098 free out of 20000
- recovery was successful
3-AUG-2020 20:56:39.51 - Received Recovery process termination from 001BDC2F:1
- database name "$1$DGA3620:[dir]<.RDB file>
> Will it work properly without the Rdb logicals being defined?
>
No, you need at least some of the logicals setup by the startup file.
$ sh log rdb*$*
(LNM$SYSTEM_TABLE)
"RDB$DISPATCH_IDENT" = "V7.3-300"
"RDB$DISPATCH_VERSION_VARIANT" = "73"
"RDBVMS$IDENT" = "V7.3-300"
"RDBVMS$IVP_DIR" = "SYS$COMMON:[SYSTEST.RDB73]"
"RDBVMS$LIB" = "SYS$COMMON:[SYSLIB]RDBVMSLIB73.OLB"
"RDBVMS$OPTION" = "SYS$COMMON:[SYSLIB]RDBVMS73.OPT"
"RDBVMS$VARIANT" = "73"
"RDBVMS$VERSION" = "7.3"
> Arne
>
>
More information about the Info-vax
mailing list