Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:database_service_single_instance

Oracle Services in eine Single Instance Datenbank

Min. ab Oracle 8

Wird eine Oracle Datenbank mit der RAC Option oder mit Oracle ASM aufgesetzt, werden die Services im Cluster Stack bzw. ASM Home mit srvctl definiert und laufen dann auch eigenständig im Cluster Stack.

Wie werden aber Services in einer Single Instance Umgebung definiert?

In einer Single Instance Umgebung steht das DBMS Package DBMS_SERVICE zur Verfügung um Services anzulegen und zu bearbeiten.

Beim Anlegen wird der Service Name in der Datenbank und der Service Name für das SQL*Net Protokoll definiert.

Den Service Name für das SQL*Net Protokoll registriert dann die Datenbank in dem Oracle Listener, der mit dem DB Parameter LOCAL_LISTENER hinterlegt ist (oder falls leer am Default, vermutlich localhost:1521).

Nach dem Anlegen des Service muss der Service noch gestartet werden, der Service Name wird zwar automatisch in den DB SERVICE_NAME Parameter übernommen aber nur im MEMORY!.

Soll beim nächsten Start der DB der Service gleich gestartet werden muss der Service Name auch in den DB Parameter zuvor aufgenommen werden.

Beispiel inkl. setzen der Eigenschaften des Services:

-- Create the Service
EXEC DBMS_SERVICE.CREATE_SERVICE(service_name=> 'PROD_COGNOS', network_name  => 'PROD_COGNOS');
 
DECLARE
   params dbms_service.svc_parameter_array;
   BEGIN
     -- 
    params('FAILOVER_TYPE')            :='TRANSACTION';
    params('REPLAY_INITIATION_TIMEOUT'):=1800;
    params('RETENTION_TIMEOUT')        :=86400;
    params('FAILOVER_DELAY')           :=10;
    params('FAILOVER_RETRIES')         :=30;
 
    DBMS_SERVICE.MODIFY_SERVICE(service_name=> 'PROD_COGNOS', parameter_array => params);
END;
/
 
-- Service starten
EXEC DBMS_SERVICE.START_SERVICE(service_name=> 'PROD_COGNOS')
 
-- um lange Listen von Service anzulegen mit , trennen!
ALTER system SET service_names='GPI,GPI2,PROD','PROD_COGNOS' scope=BOTH sid='*';
 
SHOW parameter service

Bzgl der Parameter siehe https://docs.oracle.com/database/121/ARPLS/d_serv.htm#ARPLS68020

Bzgl. TAF siehe auch Transparent Application Failover konfigurieren

Um eine Service wieder zu entfernen:

BEGIN
   DBMS_SERVICE.STOP_SERVICE(service_name=> 'PROD_COGNOS');
   DBMS_SERVICE.DELETE_SERVICE(service_name=> 'PROD_COGNOS');
END;
/

Mit dem Services arbeiten

Die Service der Oracle Datenbank dienen dazu die angemeldeten User an der Datenbank auch logisch zu unterscheiden.

Es können zum Beispiel alle Sessions die über einen benannten Service sich angemeldet haben auf einmal auch wieder abgemeldet werden:

Überwachen:

-- Welche Services wurden definiert und laufen auch:
 
SELECT s.name,s.network_name
    , decode((SELECT COUNT(*) FROM gv$active_services gs WHERE gs.name=s.name),0,'Not Running','Active') AS active
  FROM dba_services s
 ORDER BY s.name
/
 
-- Was ist aktiv:
 
SELECT inst_id,NAME,NETWORK_NAME FROM gv$active_services;
 
-- Wer ist wo angemeldet:
SELECT COUNT (*)
       ,  inst_id
       ,  service_name
       ,  username
    FROM gv$session
   WHERE service_name NOT LIKE 'SYS%'
GROUP BY service_name, inst_id, username
ORDER BY 4
/

siehe auch ausführliches Script: https://orapowershell.codeplex.com/SourceControl/latest#sql/tns.sql

Alle User von einem dedizierten Service abmelden:

-- Wenn die letze Transaction abgeschlossen ist:
 
BEGIN
 
DBMS_SERVICE.DISCONNECT_SESSION( service_name      => 'PROD_COGNOS'
                               , disconnect_option =>  DBMS_SERVICE.POST_TRANSACTION); 
END;
/
 
-- sofort = IMMEDIATE , mit NOREPLAY wird auch application continuity wie TAF abgebrochen und es wiederholt -- sich nicht die letzte Anmeldung
 
BEGIN
 
DBMS_SERVICE.DISCONNECT_SESSION( service_name      => 'PROD_COGNOS'
                              , disconnect_option  =>  DBMS_SERVICE.NOREPLAY); 
END;
/

Bzgl. TAF siehe auch Transparent Application Failover konfigurieren

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
"Autor: Gunther Pipperr"
dba/database_service_single_instance.txt · Zuletzt geändert: 2016/01/28 20:21 von Gunther Pippèrr