Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: 8.1.7.2 Listener would not register the Dispatchers...
Taken from metalink (maybe you've already went through this) - but I hope this will help ...
ORACLE MTS/Networking
QUESTIONS & ANSWERS
1. What is MTS?
Answer
References
2. What users (O/S IDs) are working through which MTS dispatchers?
Answer
This script is provided for educational purposes only. It is NOT supported
by Oracle
World Wide Technical Support. The script has been tested and appears to work
as intended.
However, you should always test any script before relying on it.
PROOFREAD THIS SCRIPT PRIOR TO USING IT! Due to differences in the way text
editors,
email packages and operating systems handle text formatting (spaces, tabs
and carriage
returns), this script may not be in an executable state when you first
receive it.
The following script will report what users (O/S IDs) are working through which MTS dispatchers.
Access privileges to the dynamic performance tables.
SET ECHO off
REM NAME: tfs
REM USAGE:"@path/..."
REM -------------------------------------------------------------------REM REQUIREMENTS:
REM -------------------------------------------------------------------REM PURPOSE:
REM -------------------------------------------------------------------REM DISCLAIMER:
REM -------------------------------------------------------------------REM Main text of script follows:
column network format a7 column disp format a4 column oracle_user format a11 column sid format 999 column serial# format 9999999 column os_user format a10 column terminal format a8 column program format a20
select d.network network, d.name disp , s.username oracle_user, s.sid sid, s.serial# serial# , p.username os_user, p.terminal terminal, s.program program from v$dispatcher d, v$circuit c, v$session s, v$process p where d.paddr = c.dispatcher (+) and c.saddr = s.saddr (+) and s.paddr = p.addr (+)
References
3. Is MTS supported on Windows NT?
Answer
4. How to trace MTS dispatchers and shared servers?
Answer
For dispatchers:
event="10248 trace name context forever, level X"
For shared servers:
event="10249 trace name context forever, level X"
X can be a value from 1 to 10, 10 being the most detailed trace. After you
add these
parameters to the INIT<sid>.ORA file, stop the instance and restart it for
the changes to take effect.
5. How to setup IPC for MTS?
Answer
LISTENER.ORA:
LISTENER=
(ADDRESS_LIST=
(ADDRESS= (PROTOCOL=IPC) (KEY=<sid name>) ) (ADDRESS= (PROTOCOL=IPC) (KEY=<alias in tnsnames.ora for the sid>) )
(SID_NAME=<sid name>) (ORACLE_HOME=<home directory path for Oracle>))
Other addresses can be added to the address list if other protocols are
being used.
If the sid name and alias in tnsnames.ora are the same only one address
entry is required for IPC.
TNSNAMES.ORA:
<alias>=
(DESCRIPTION=
(ADDRESS= (PROTOCOL=IPC) (KEY=<sid name>) ) (CONNECT_DATA= (SID=<sid name>) )
INIT.ORA entries for MTS:
MTS_DISPATCHERS="IPC,2" MTS_SERVERS=1 MTS_MAX_DISPATCHERS=6 MTS_MAX_SERVERS=3 MTS_SERVICE=<sid name> MTS_LISTENER_ADDRESS="(ADDRESS=(PROTOCOL=IPC)(KEY=<sid name>))"
To make the multi-threaded IPC connection issue a connection command. Example (using SQLPLUS):
sqlplus <username>/<password>@<alias from tnsnames.ora>
References
6. How to estimate Shared Pool utilization?
Answer
This script is provided for educational purposes only. It is NOT supported
by Oracle
World Wide Technical Support. The script has been tested and appears to work
as intended.
However, you should always test any script before relying on it.
PROOFREAD THIS SCRIPT PRIOR TO USING IT! Due to differences in the way text
editors,
email packages and operating systems handle text formatting (spaces, tabs
and carriage
returns), this script may not be in an executable state when you first
receive it.
This script estimates shared pool utilization based on current database
usage. This
should be run during peak operation, after all stored objects (i.e.
packages, views) have been loaded.
SELECT privileges on V$ tables
SET ECHO off
REM NAME: TFSSPUTL.SQL
REM USAGE:"@path/tfssputl"
REM ------------------------------------------------------------------------REM REQUIREMENTS:
REM ------------------------------------------------------------------------REM PURPOSE:
REM ------------------------------------------------------------------------ REM EXAMPLE: REM Obj mem: 2536573 bytes REM Shared sql: 4101742 bytes REM Cursors: 2125 bytes
REM ------------------------------------------------------------------------REM DISCLAIMER:
REM ------------------------------------------------------------------------REM Main text of script follows:
set echo off
spool tfssputl.lst
Rem If running MTS uncomment the mts calculation and output Rem commands.
set serveroutput on;
declare
object_mem number; shared_sql number; cursor_mem number; mts_mem number; used_pool_size number; free_mem number; pool_size varchar2(512); -- same as V$PARAMETER.VALUEbegin
select value into pool_size from v$parameter where name='shared_pool_size';
spool off
Object mem: 2536573 bytes
Shared SQL: 4101742 bytes
Cursors: 2125 bytes
Free memory: 968976 bytes (.92MB)
Shared pool utilization (total): 7968528 bytes (7.6MB)
Shared pool allocation (actual): 9000000 bytes (8.58MB)
Percentage Utilized: 89%
References
7. Is MTS supported on Netware?
Answer
8. What diagnostics can be used for MTS?
Answer
SQL*Net
+--------+ V2 +------------+ SGA +---------+ SGA +--------+ | client |<-------->| dispatcher |<----->| circuit |<----->| shared |
+--------+ +------------+ +---------+ | server | "JSMITH" "ORA_<sid>_D000" | +--------+ | "ORA_<sid>_S000" +---------+ session | +---------+
For each SQL*Net V2 MTS client session, there exists exactly one row in the
circuit
view which describes the current status of the client session.
Some of the views containing MTS information are:
V$CIRCUIT V$SHARED_SERVER V$DISPATCHER V$MTS V$QUEUE V$SESSION
These views are readable by SYS and SYSTEM by default. The DBA can provide
access
to these views to other users on the database by granting them the MONITORER
role.
References
9. How to calculate Shared Pool size when using MTS?
Answer
select value sess_mem
from v$sesstat s, v$statname n
where s.statistic# = n.statistic# and n.name = 'session uga memory' and s.sid = 23; -- replace 23 with session id of user beingmeasured
A more conservative value to use is the maximum session memory that was ever allocated by the user:
select value sess_max_mem
from v$sesstat s, v$statname n
where s.statistic# = n.statistic# and n.name = 'session uga memory max' and s.sid = 23; -- replace 23 with session id of user beingmeasured
To select this value for all the currently logged on users the following
query can be used:
select sum(value) all_sess_mem
from v$sesstat s, v$statname n
where s.statistic# = n.statistic#
and n.name = 'session uga memory max';
B) OVERHEAD
If the system is making heavy use of dynamic SQL this 20% may not be enough,
since
this will come out of the runtime heap in the shared pool. You will need to
add a
minimum of 20-30% overhead to the values calculated above to allow for
unexpected
and unmeasured usage of the shared pool other than object memory, shared sql
or cursor
memory. If the system is making heavy use of dynamic SQL 20% may not be
enough, since
this will come out of the runtime heap in the shared pool.
Answer
<service name> =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (COMMUNITY = <community>) (PROTOCOL = <protocol>) (Host = <server>) (Port = 1526) )
(SID = <sid>) (SERVER=DEDICATED) <------------)
NOTE: If Oracle Names is configured for your network, no TNSNAMES.ORA is
created.
You therefore cannot create a service name for a dedicated connection. The
workaround
this limitation (if required for testing purposes, only) is to add a
USE_DEDICATED_SERVER=ON
parameter to the SQLNET.ORA file. This parameter makes all connections from
a client workstation DEDICATED.
Answer
The IPC adapter, which is implemented on top of Unix Domain Sockets, is used for local connections to the MTS.
The BEQ adapter, which is implemented on top of Unix PIPES, cannot be
configured
for MTS. It is used to bequeath, or spawn a process and connected to them
via Unix PIPES.
Answer
lsnrctl services
P713 has 2 service handlers
DEDICATED SERVER established:5 refused:0 DISPATCHER established:0 refused:0 current:0 max:60 state:ready
D000 (machine: technique, pid: 29096) (ADDRESS=(PROTOCOL=ipc)(DEV=7)(KEY=#29096.1))
It is 60 in this case.
Any changes you make to the sessions in init.ora are reflected in the
maximum_connections
column of v$mts. It is determined as: min(os_specific_limit-3, sessions
init.ora parameter)
The 3 are reserved for listening port, incoming connection, and tracefile.
EXAMPLE
Answer
LISTENER =
(ADDRESS_LIST = (ADDRESS= (PROTOCOL=IPC) (KEY= <SID>) <- Name of SID ) (ADDRESS = (PROTOCOL = TCP) (HOST = <Server>) <- Server name (PORT = 1521) ) ) STARTUP_WAIT_TIME_LISTENER = 0 CONNECT_TIMEOUT_LISTENER = 10 LOG_DIRECTORY_LISTENER = <Oracle_Home>/network/log> <- Vaild directory LOG_FILE_LISTENER = <listener> <- Valid file name SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = <SID>) <- Name of SID (ORACLE_HOME = <Oracle_Home>) <- Path to Oracle_home ) ) TRACE_LEVEL_LISTENER = OFF
2) The following lines should be in the init<sid>.ora file:
mts_dispatchers="<protocol>,<initial_number_of_dispatchers>" mts_max_dispatchers=<maximum number of dispatchers> mts_servers=<minimum_number_of_servers> mts_service=<sid> mts_listener_address="(ADDRESS=(PROTOCOL=<protocol>) (HOST=<host_name>)(PORT=<port_number>))"
In the following example we are configuring MTS to support:
mts_dispatchers="tcp,1" mts_dispatchers="ipc,1" mts_max_dispatchers=10 mts_servers=1 mts_max_servers=10 mts_service=V716 mts_listener_address="(ADDRESS=(PROTOCOL=tcp)(host=server1)(port=1521))" mts_listener_address="(ADDRESS=(PROTOCOL=ipc)(KEY=V716))"
3) To start the system use the following procedure:
References
Answer
ALTER SYSTEM SET MTS_DISPATCHERS='TCP,0'
Note: When specifying the protocol, it must be in the same case as used in
the MTS_DISPATCHERS
command in the init<sid>.ora. For example, if you used TCP in the
init<sid>.ora then use TCP in the alter system command.
Answer
ALTER SYSTEM SET MTS_DISPATCHERS="TCP,6"
Note: When specifying the protocol, it must be in the same case as used in
the MTS_DISPATCHERS
command in the init<sid>.ora. For example, if you used TCP in the
init<sid>.ora then use TCP in the alter system command.
In this example, there will be a total of 6 dispatchers running, not an additional 6.
The total number of dispatchers you start cannot be greater than the value
of MTS_MAX_DISPATCHERS
as defined in the init<sid>.ora.
"Sambavan" <sambavan_at_alumni.utexas.net> wrote in message news:51e73568.0111010907.25d9405a_at_posting.google.com...
> Hi Folks, > > I've Oracle 8.1.7.2 SE running on Solaris 8. From the day I upgraded > my db from 8.1.6.3 to 8.1.7.2, I'm experiencing a problem where my > listener would not register the dispatchers. When you start the > instance, it would start the dispatcher and servers. But when you look > into lsnrctl services, it would show that all the service handles to > be in DEDICATED mode. > > I even tried relinking and no luck. I tried the loopback connection > and no luck... I even tried changing the tnsnames.ora file SRVR=SHARED > and it also did not work... For the last 2Months, I have been breaking > my heads to figure out what was causing this problem... > > Any thoughts on this? > > Thanx, > SamReceived on Fri Nov 02 2001 - 11:05:19 CST