The topics are:
In a clustered configuration, sharing resources is a prime consideration from a system management perspective. Sharing configuration files required by SQL*Net Version 2 is definitely a prime consideration. The configuration files are not initially set up to provide this common file facility, but with some simple coding and management techniques, the single directory, single file facility can be arranged.
The Oracle Name Server provides the centralized addressing facility required to ease the management of complex configurations. If the Oracle Name Server is not going to to be installed, changes can be made to the configuration files to ease the administration burden.
The second listener to be started then fails, because the file already exists and the first listener process holds it open. The solution is to configure the system so that the files do not clash. The next section, "SQL*Net Infrastructure," explains the easiest way to configure SQL*Net files so that the files do not clash.
The listeners can be set up to access the same databases on a cluster-wide basis in only one of the following two ways:
To configure the multiple listeners, set the LISTENER.ORA file format to allow the multiple listeners with independent logging and tracing file facilities to start.
Starting multiple listeners from the same file is more manageable if a sensible standard naming methodology can be determined first. The listeners have been named after the nodes upon which they are active. For ease of management, a DCL command file should act as an automatic listener start and stop facility to distinguish the node being acted upon and to relate this to the listener in question.
The following commands are an example associated with such a facility:
$ NODE_ID = "''F$GETSYI("NODENAME")
$ DEFINE ORA_SID 'NODE_ID'
$ LSNRCTL START LSNR'NODE_ID'
These commands invoke the listener process LSNR<nnnnnn>
where:
<nnnnnn> is the node name of the member of the OpenVMS Cluster.
The efficient way to submit this command procedure is to submit it to a batch queue on each of the nodes to run under the Oracle7 username.
Internally, the LISTENER.ORA file should be configured as follows:
LSNR<nnnnnn> = (ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = DECNET)
(NODE = <nnnnnn>)
(OBJECT = LSNR_COMMON)
)
)
STARTUP_WAIT_TIME_LSNR<nnnnnn> = 0
CONNECT_TIMEOUT_LSNR<nnnnnn> = 10
LSNR<mmmmmm> = (ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = DECNET)
(NODE = <mmmmmm>)
(OBJECT = LSNR_COMMON)
)
)
STARTUP_WAIT_TIME_LSNR<mmmmmm> = 0
CONNECT_TIMEOUT_LSNR<mmmmmm> = 10
SID_LIST_LSNR<nnnnnn> =
(SID_LIST =
(SID_DESC =
(SID_NAME = SID1)
(PROGRAM = DISK:[DIR]ORACLE_SID1_NETV2.COM)
)
(SID_DESC =
(SID_NAME = SID2)
(PROGRAM = 'DISK:[DIR]ORACLE_SID2_NETV2.COM')
)
(SID_DESC =
. other SID information as required
)
)
SID_LIST_LSNR<mmmmmm> =
(SID_LIST =
(SID_DESC =
(SID_NAME = SID1)
(PROGRAM = 'DISK:[DIR]ORACLE_SID1_NETV2.COM')
)
(SID_DESC =
(SID_NAME = SID2)
(PROGRAM = 'DISK:[DIR]ORACLE_SID2_NETV2.COM')
)
(SID_DESC =
. other SID information as required
)
)
#LOG_LEVEL may be 0, ADMIN OR DEV
LOG_LEVEL_LSNR<nnnnnn> = 0
LOG_DIRECTORY_LSNR<nnnnnn> = DISK:[LOG_DIR]
LOG_FILE_LSNR<nnnnnn> = LSNR<nnnnnn>
#TRACE_LEVEL may be 0, ADMIN OR DEV
TRACE_LEVEL_LSNR<nnnnnn> = 0
TRACE_DIRECTORY_LSNR<nnnnnn> = DISK:[TRACE_DIR]
TRACE_FILE_LSNR<nnnnnn> = LSNR<nnnnnn>
LOG_LEVEL_LSNR<mmmmmm> = 0
LOG_DIRECTORY_LSNR<mmmmmm> = DISK:[LOG_DIR]
LOG_FILE_LSNR<mmmmmm> = LSNR<mmmmmm>
TRACE_LEVEL_LSNR<mmmmmm> = 0
TRACE_DIRECTORY_LSNR<mmmmmm> = DISK:[TRACE_DIR]
TRACE_FILE_LSNR<mmmmmm> = LSNR<mmmmmm>
where:
<nnnnnn> and <mmmmmm> are indicators of the specific node, such as ALPHA1 and VAX1
If you are using the Transparent Gateway to Rdb, the Oracle Parallel Server, or something similar that accepts connections from any node in a cluster, the initial portion of the LISTENER.ORA can be adapted. This allows the use of the DECnet alias feature when connection is made to a OpenVMS cluster node address and the load balancing happens automatically. The format requires that the listener object be identical, because there is no guarantee through which node the user will connect. The modified file portion is:
LSNR<nnnnnn> = (ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = DECNET)
(NODE = <nnnnnn>)
(OBJECT = LSNR_COMMON) <------|
) |
) |
STARTUP_WAIT_TIME_LSNR<nnnnnn> = 0 |
CONNECT_TIMEOUT_LSNR<nnnnnn> = 10 |
LSNR<mmmmmm> = (ADDRESS_LIST = |
(ADDRESS = |
(PROTOCOL = DECNET) |
(NODE = <mmmmmm>) |
(OBJECT = LSNR_COMMON)<--Changed to ) load balance
) using VAX cluster alias