next Backup / Recovery
up Fundamentals
previous Namensauflösung unter Oracle
  Contents   Index

Subsections


Shared Server

Der Oracle Shared Server wurde aus dem Oracle Multithreaded Server weiterentwickelt. Bei der Multithreaded Server-Konfiguration übernimmt ein Dispatcher-Prozess die Zuordnung von Benutzer-Prozessen und Server-Prozessen. Wird eine neue Benutzer-Verbindung zur Datenbank hergestellt, so werden alle Anweisungen dieser Benutzer-Verbindung durch den Dispatcher-Prozess in eine Anforderungs-Warteschlange (Request-Queue) eingeordnet. Die Server-Prozesse holen nun die Anweisungen aus der Request-Queue heraus und führen diese Anweisungen in der Datenbank aus. Das Ergebnis der Anweisung wird in einer Antwort-Warteschlange (Response-Queue) abgelegt, um vom Dispatcher-Prozess an den Benutzerprozess weitergeleitet zu werden. Es kann somit beispielsweise 100 Benutzerprozesse geben, die von lediglich 10 oder 20 Serverprozessen bedient werden.

Erhält der Listener eine Anforderung von einem Client für eine Shared-Server-Verbindung, so leitet der Listener die Anforderung an den am wenigsten beschäftigten Dispatcher weiter. Dieser kommuniziert nun mit dem Client, um eine Verbindung herzustellen. Diese Vorgehensweise wird als Direct Handoff bezeichnet. Der Client kommuniziert immer mit dem gleichen Dispatcher. Vor Oracle 9i hat der Listener die Adresse des Dispatchers an den Client zurückgegeben. Der Client hat dann die Verbindung initiiert.

Da ein Dispatcher-Prozess nur ein Kommunikationsprotokoll 'bedienen' kann, brauchen Sie für jedes Kommunikationsprotokoll einen Dispatcher-Prozess. Die Server-Prozesse starten beim Starten der Instanz.


Connection Pooling

Wenn alle Dispatchers belegt sind, könnten sich keine neuen User verbinden. Welche Session ist untätig (Idle ca. >3 Sekunden)? Diese Session wird temporär getrennt und muß jetzt selber warten bis eine andere Session Idle wird. Der PMON regelt dies.


Aktivierung des Connection Pooling

alter system set
  dispatchers = '(protocol = tcp)
                 (dispatchers = 3)
                 (pool=on)'
;
Hinweis:
DISPATCHER ist per Default gleich 0. Dies muss unbedingt erhöht werden, da sonst nur dedizierte Prozesse laufen.
SHARED_SERVERS
alter system set
  shared_servers = 2
  max_shared_servers = 20
;
Empfehlung von Oracle:
SHARED_SERVERS >= 1 (Default = 0).
Default für MAX_SHARED_SERVERS ist 20 oder 2 * SHARED_SERVERS.


Views

select * from V$SESSION;
select * from V$DISPATCHER;
select * from V$QUEUE;
select * from V$SHARED_SERVER;

next Backup / Recovery
up Fundamentals
previous Namensauflösung unter Oracle
  Contents   Index


Stefan Hietel dama.go GmbH, Robert Warnke http://rowa.giso.de