Oracle Shared Server (formerly MTS) lets many client sessions share a small pool of server processes. Clients connect to dispatchers, which enqueue requests; shared server processes dequeue, execute, and return results. This reduces per-session memory/process overhead and improves scalability for large numbers of lightweight, concurrent sessions.
Connect with appropriate privilege and check the key parameters:
-- As a DBA
sqlplus /nolog
CONNECT / AS SYSDBA
SHOW PARAMETER shared\_servers
SHOW PARAMETER max\_shared\_servers
SHOW PARAMETER dispatchers
Adjust conservatively and observe:
-- Example: scale shared servers and dispatchers
ALTER SYSTEM SET SHARED_SERVERS = 4;
ALTER SYSTEM SET DISPATCHERS = '(PROTOCOL=TCP)(DISPATCHERS=3)';
SELECT NAME, STATUS, REQUESTS, BYTES_RECEIVED, BYTES_SENT
FROM V$SHARED_SERVER
ORDER BY NAME;
SELECT TOTAL_REQUESTS, IDLE_TIME, BUSY_TIME
FROM V$SHARED_SERVER_MONITOR;
SELECT NAME, NETWORK, STATUS, ACCEPTED, IDLE, BUSY
FROM V$DISPATCHER
ORDER BY NAME;
SELECT NAME, TOTALQ, WAIT, (TOTALQ - WAIT) AS NOWAIT
FROM V$QUEUE
ORDER BY NAME;
SELECT CIRCUIT, SERVER, DISPATCHER, STATUS
FROM V$CIRCUIT;
-- Find the session to trace
SELECT sid, serial#
FROM v$session
WHERE username = '&USER';
BEGIN
DBMS\_MONITOR.SESSION\_TRACE\_ENABLE(
session\_id => \&SID,
serial\_num => \&SERIAL,
waits => TRUE,
binds => TRUE
);
END;
/
\-- Later
BEGIN
DBMS\_MONITOR.SESSION\_TRACE\_DISABLE(
session\_id => \&SID,
serial\_num => \&SERIAL
);
END;
/
V$QUEUE.WAIT; consider increasing SHARED_SERVERS or DISPATCHERS, and verify listener endpoints.V$DISPATCHER.IDLE/BUSY; add a dispatcher or split protocols/endpoints.Use SQL*Plus/SQLcl for command-line work and Enterprise Manager Cloud Control for fleet-level monitoring/automation. Server Manager (svrmgrl) is retired; stick to supported tooling.
SHARED_SERVERS/DISPATCHERS and watch V$ views for impact.