DB Creation   «Prev  Next»

Lesson 5 Starting Oracle Shared Server
Objective Start and verify Shared Server correctly, then connect.

Start Oracle Shared Server (the correct way)

What Shared Server is: an Oracle database architecture in which many client sessions share a smaller pool of server processes. It helps when you have thousands of concurrent, mostly idle or short-lived connections (e.g., many web users).

When to use it: prefer mid-tier connection pooling (UCP/ODP.NET/OCI) for app servers. Consider Shared Server when you cannot reduce session counts (many ad-hoc or tool sessions), or for specific legacy deployments. It is optional and fully supported in modern releases.

Prerequisites

Enable Shared Server

You can enable it dynamically or persistently. In CDBs, run in the correct container.

Option A - Dynamically (no restart)


-- As SYSDBA
-- Minimum pool
ALTER SYSTEM SET SHARED_SERVERS = 2 SCOPE=BOTH;

\-- Create TCP dispatchers (adjust protocol/attributes for your network)
ALTER SYSTEM SET DISPATCHERS = '(PROTOCOL=TCP)(DISPATCHERS=2)' SCOPE=BOTH;

\-- Optional: request multiple shared servers during peak periods
ALTER SYSTEM SET MAX\_SHARED\_SERVERS = 50 SCOPE=BOTH; 

Option B - Persistent (init parameters)


-- In SPFILE (persists across restarts)
ALTER SYSTEM SET SHARED_SERVERS      = 2 SCOPE=SPFILE;
ALTER SYSTEM SET DISPATCHERS         = '(PROTOCOL=TCP)(DISPATCHERS=2)' SCOPE=SPFILE;
ALTER SYSTEM SET MAX_SHARED_SERVERS  = 50 SCOPE=SPFILE;

\-- Then restart the instance 

Verify configuration


-- Check parameters
SHOW PARAMETER shared_servers
SHOW PARAMETER dispatchers
SHOW PARAMETER max_shared_servers

\-- Sessions and queues (simple sanity checks)
SELECT NAME, VALUE FROM V\$PARAMETER
WHERE NAME IN ('shared\_servers','dispatchers','max\_shared\_servers');

SELECT \* FROM V\$SHARED\_SERVER WHERE STATUS = 'BUSY' OR STATUS = 'FREE';
SELECT \* FROM V\$DISPATCHER;

\-- Listener view (if available)
\-- lsnrctl status  (run at OS prompt) 

Connect from SQL*Plus

There is no special client syntax required. Use standard Easy Connect or a TNS alias.


-- OS authentication (local)
sqlplus / AS SYSDBA

\-- Or service-based (password file / remote)
sqlplus sys@//dbhost:1521/ORCLPDB1 AS SYSDBA 

Sizing guidelines (quick start)

Troubleshooting


-- Are dispatchers up?
SELECT NAME, STATUS, MESSAGES FROM V$DISPATCHER;

\-- Are shared servers spawning?
SELECT SERVER\_ID, STATUS, REQUESTS FROM V\$SHARED\_SERVER;

\-- Are requests queuing?
SELECT \* FROM V\$QUEUE WHERE TYPE IN ('COMMON','DISPATCHER');

\-- Is the listener seeing the service?
\-- lsnrctl status  (look for your service and handler(s)) 

Common mistakes to avoid

Modern administration note

For monitoring, automation, and fleet operations, use Enterprise Manager Cloud Control. For connectivity modernization from legacy SQL*Net/Net8 content, prefer Easy Connect Plus with service names and wallets where appropriate.

Historical corner (condensed)

Server Manager (svrmgrl) was Oracle’s pre-9i DBA tool (CLI/GUI). It was retired and functionality moved into SQL*Plus. Any references to svrmgr, svrmgr30, or CONNECT INTERNAL are strictly historical; follow the modern equivalents above.


Quick reference


-- Minimal enablement
ALTER SYSTEM SET SHARED_SERVERS = 2 SCOPE=BOTH;
ALTER SYSTEM SET DISPATCHERS = '(PROTOCOL=TCP)(DISPATCHERS=2)' SCOPE=BOTH;

\-- Verify
SHOW PARAMETER shared\_servers
SHOW PARAMETER dispatchers
SELECT \* FROM V\$DISPATCHER;
SELECT \* FROM V\$SHARED\_SERVER;

\-- Connect (examples)
sqlplus / AS SYSDBA
sqlplus sys@//dbhost:1521/ORCLPDB1 AS SYSDBA 

SEMrush Software 5 SEMrush Banner 5