Skip to main content
  • Place orders quickly and easily
  • View orders and track your shipping status
  • Create and access a list of your products
  • Manage your Dell EMC sites, products, and product-level contacts using Company Administration.

Wie kann ich eine Verbindung zu austauschbaren Datenbanken in Oracle RAC 12cR1 herstellen?

Summary: Unser Ziel besteht darin, Lösungen zu liefern, die den IT-Alltag vereinfachen, z. B. Datenbanklösungen, benutzerdefinierte Entwicklung, dynamische Rechenzentren, flexible Datenverarbeitung. ...

This article may have been automatically translated. If you have any feedback regarding its quality, please let us know using the form at the bottom of this page.

Article Content


Symptoms

Gilt für:

Oracle Database – Oracle 12cR1 12.1.0.1.0 Enterprise Edition

Betriebssystem(e) – Oracle Linux 6.4 mit Kernel 2.6.39-400.109.17.1.el6uek.x86-64   &                                          
Red Hat Enterprise Linux mit Kernel 2.6.32-431.el6.x86_64

Storage-Plattform(en) – Dell EqualLogic PS 5000 & Dell EqualLogic PS 6110

Problem:

Wie kann ich eine Verbindung zu austauschbaren Datenbanken in Oracle RAC 12cR1 herstellen?

Lösung:

Es gibt vier Möglichkeiten, eine Verbindung mit austauschbaren Datenbanken (PDBs) herzustellen.
  1. Verwendung des standardmäßigen Dienstes mit einem Namen, der dem Namen der austauschbaren Datenbank entspricht, der von der Datenbank-Software automatisch erstellt wird.
  2. Verwendung von benutzerdefinierten Diensten, die mit der Eigenschaft der austauschbaren Datenbank und mithilfe des Dienstprogramms SRVCTL erstellt werden.
  3. Verwenden des Befehls "alter session" und Festlegen des Containers als gewünschten Container
  4. Verwenden von Enterprise Manager Express
 1. Verwendung des Standarddienstes für die Verbindung mit der PDB

Um eine Verbindung mit der PDB mithilfe des Standarddienstes herzustellen, führen Sie folgende Schritte durch.
  •    In der Datei "tnsnames.ora" muss ein Eintrag erfolgen, der die Datenbankenadressen bestimmt, die uns die Erstellung einer Verbindung zur Datenbank ermöglichen.
  •    Der Status der austauschbaren Datenbank muss vom Modus "mounted" zu Lese-/Schreibmodus geändert werden.
 Folgender Eintrag muss in der Datei tnsnames.ora erfolgen:

Im Fall von Oracle RAC 12c wird zwar von der Datenbanksoftware automatisch ein Standarddienst mit demselben Namen wie der Name der austauschbaren Datenbank erstellt, die Datei tnsnames.ora wird jedoch nur mit einem einzigen Eintrag generiert, der sich auf die globale Datenbank bezieht. Beispiel: Im Fall eines Oracle RAC 12c mit zwei Nodes, wobei cpdb die globale Datenbank ist, sind pdb1 und pdb2 die zwei erstellten austauschbaren Datenbanken und cpdb1 und cpdb2 die beiden Instanzen. Der Standardeintrag in der Datei tnsnames.ora lautet wie folgt:-

CPDB =

(DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = cpdb.dbase.lab)

   )

)

Daher müssen relevante Einträge für den Standarddienstnamen von austauschbaren Datenbanken in der Datei tnsnames.ora erstellt werden, wie unten gezeigt:

PDB1 =

(DESCRIPTION =                                                             

   (ADDRESS = (PROTOCOL = TCP) (HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = pdb1.dbase.lab)

   )

)

PDB2 =

(DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP) (HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = pdb2.dbase.lab)

   )

)

Ändern des Status der austauschbaren Datenbank:

Wenn die pdbs erstellt werden, lautet der open_mode standardmäßig nur „Mounted“. Dies kann wie folgt überprüft werden:

SQL> select name, open_mode von v$pdbs;

NAME OPEN_MODE
PDB$SEED                       READ ONLY

PDB1                           MOUNTED

PDB2                           MOUNTED

Der folgende Befehl öffnet alle austauschbaren Datenbanken im Lese-/Schreibmodus.

SQL> Alter pluggable database all open;

Anschließend kann die Verbindung mit der Datenbank mithilfe von sqlplus wie folgt hergestellt werden:

[oracle@node1 bin]$ sqlplus sys/oracle@pdb1 as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Tue Oct 8 11:23:32 2013

Copyright (c) 1982, 2013, Oracle. Alle Rechte vorbehalten

Verbunden mit:

Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 – 64-Bit-Produktion mit Partitionierung, Real Application Clusters, Automatic Storage Management, OLAP, erweiterte Analyse und Testoptionen für reale Anwendungen

 2. Verwenden des nutzerdefinierten Dienstes für die Verbindung mit der PDB

 Der oben beschriebene Standarddienst sollte nur zu administrativen Zwecken und nicht für Anwendungen verwendet werden. Benutzerdefinierte Services müssen immer für Anwendungen verwendet werden, da benutzerdefinierte Dienste an die Anforderungen der Anwendungen angepasst werden können. Die Einrichtung einer Verbindung mit benutzerdefinierten Diensten umfasst die folgenden Schritte:
  1. Erstellen eines Datenbankdienstes mit Eigenschaft der austauschbaren Datenbank mithilfe des Dienstprogramms SRVCTL
  2. Erstellen eines Eintrags in der Datei "tnsnames.ora" für den erstellten Dienst.
  3. Den Dienst starten
  4. Erstellen der Verbindung zur Datenbank über den Dienst mit der Eigenschaft der austauschbaren Datenbank, die in Schritt a erstellt wurde.
a. Erstellen eines Datenbankdienstes mit Eigenschaft der austauschbaren Datenbank mithilfe des Dienstprogramms SRVCTL

Mithilfe des SRVCTL-Dienstprogramms und der folgenden Befehle erstellen Sie die zwei Datenbankdienste hr1 und sales1, die der austauschbaren Datenbank pdb1 zugeordnet werden sollen:

[[oracle@node1 bin]$ srvctl add service -db cpdb -service hr1 -pdb pdb1 -preferred cpdb1 -available cpdb2

[oracle@node1 bin]$ srvctl add service -db cpdb -service sales1 -pdb pdb1 -preferred cpdb1 -available cpdb2

 Die Eigenschaft pdb kann über die Datenkatalogansicht all_services angezeigt werden.

SQL> SELECT NAME, PDB FROM all_services;

 NAME                       PDB

pdb1.dbase.lab             PDB1

hr1                        PDB1

sales1                     PDB1

Der Befehl $ srvctl config service –db <databasename> listet auch die verfügbaren Dienste auf.

b. Erstellen eines Eintrags in der Datei tnsnames.ora für den erstellten Datenbankdienst

 Wir können die net-Dienstnamen HR_PDB1 und SALES_PDB1 erstellen, die in der HR- bzw. die Sales-Anwendung verwendet werden können, um eine Verbindung zur austauschbaren Datenbank pdb1 herzustellen. Folgen Sie hierzu den folgenden Schritten:

 HR_PDB1 =

(DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = hr1.dbase.lab)

   )

)

SALES_PDB1 =

(DESCRIPTION =

   (ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = sales1.dbase.lab)

   )

)

 c. Den Dienst starten

[oracle@nsnode1 bin]$ srvctl status service -db cpdb -service hr1

Service hr1 is not running

[oracle@nsnode1 bin]$ srvctl start service -db cpdb -service hr1

Das Starten des mit einer PDB verknüpften Dienstes öffnet die PDB automatisch in einem Lese-/Schreibmodus.

d. Herstellen einer Verbindung zum Datenbankdienst 

Ein Nutzer stellt über einen Datenbankdienst mit der Eigenschaft PDB eine Verbindung zur PDB her.

Beispielsweise kann der SYS-Nutzer eine Verbindung zur pdb1 über den Datenbankdienst HR_PDB1, der pdb1 zugeordnet ist, wie folgt herstellen:

SQL> connect sys/oracle@HR_PDB1 AS SYSDBA

Connected.

SQL> SHOW CON_ID;

 CON_ID

3

SQL> SHOW CON_NAME;

CON_NAME

PDB1

3. Verwenden des Befehls „Alter Session“ für die Verbindung mit der PDB

Wenn Sie eine Verbindung zur RAC-Instanz herstellen, stellen Sie standardmäßig eine Verbindung zum CDB$ROOT her. Jede RAC-Instanz öffnet die austauschbare Datenbank als Ganzes und es steht ein einzelnes System-Image zur Verfügung. Wenn Sie die Sitzung in eine austauschbare Datenbank ändern möchten, können Sie dies tun, indem Sie die Sitzung ändern und den Container auf den gewünschten Container festlegen. Die Abfrage „show con_name“ kann verwendet werden, um den Namen des aktuellen Containers zu überprüfen.

[oracle@node1 bin]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on Wed Oct 9 13:56:27 2013

Copyright (c) 1982, 2013, Oracle. All rights reserved. 

Verbunden mit:

Oracle Database 12c Enterprise Edition Version 12.1.0.1.0 – 64-Bit-Produktion

Mit Partitionierung, Real Application Clusters, Automatic Storage Management, OLAP,

erweiterte Analyse und Testoptionen für reale Anwendungen

SQL> show con_name;

CON_NAME

CDB$ROOT

SQL> ALTER SESSION SET CONTAINER = PDB1;

Session altered.

SQL> SHOW CON_NAME;

CON_NAME

PDB1

 SQL> ALTER SESSION SET CONTAINER = PDB2;

Session altered.

SQL> SHOW CON_ID;

CON_ID

4

SQL> ALTER SESSION SET CONTAINER = CDB$ROOT;

Session altered.

 SQL> SHOW CON_NAME;



CON_NAME CDB$ROOT

 Die Container-ID-Beschreibungen lauten wie folgt:
Container-ID Beschreibung
0 Gesamte CDB
1 CDB$ROOT
2 PDB$SEED
3 bis 254 PDBs
Tabelle 1:  Container-ID-Beschreibungen

In diesem spezifischen Beispiel steht con_id 3 für pdb1 und con_id 4 für pdb2.

[grid@node1 bin]$ echo $ORACLE_HOME

/u01/app/12.1.0/grid

 [grid@node1 bin]$ echo $ORACLE_SID

+ASM1

[grid@node1 bin]$ sqlplus / as sysdba

 SQL*Plus: Release 12.1.0.1.0 Production on Wed Oct 9 13:51:39 2013

Copyright (c) 1982, 2013, Oracle. Alle Rechte vorbehalten.

Verbunden mit:

Oracle Database 12c Enterprise Edition Version 12.1.0.1.0 – 64-Bit-Produktion

Mit Real Application Clusters und Automatic Storage Management

 SQL> show con_id;

CON_ID

0

 SQL> show con_name;

 CON_NAME

Non Consolidated

 4. Verwenden von Enterprise Manager (EM) Express für die Verbindung mit der PDB

Wenn die Datenbank mit Database Configuration Assistant (DBCA) erstellt wird, wird die URL für EM Express zum Zeitpunkt der Fertigstellung des DBCA bereitgestellt. Die URL hat das Format http://<hostname>:portnumber/em mit 5500 als Standardport-ID.

 Bevor Sie zu dieser URL gehen, um auf EM Express zuzugreifen, muss die folgende SQL-Anweisung ausgegeben werden, um den Port für EM Express zu bestätigen:

SQL> SELECT dbms_xdb_config.gethttpsport from dual;

GETHTTPSPORT

       5500

Wenn die Ausgabe wie oben angezeigt wird, kann eine Verbindung mit der vom DBCA angezeigten URL hergestellt werden.

Wenn die Ausgabe jedoch null ist, wie z. B.

GETHTTPSPORT, dann sollte das PL/SQL-Verfahren DBMS_XDB_CONFIG.SETHTTPSPORT ausgeführt werden, um den HTTPS-Port für EM Express festzulegen.

dann muss man den PL/SQL-Vorgang ausführen: DBMS_XDB_CONFIG. SETHTTPSPORT, um den HTTPS-Port für EM Express festzulegen. Beispiel:

SQL> exec dbms_xdb_config.sethttpsport(5500);

PL/SQL procedure successfully completed.

Versuchen Sie danach, über die URL auf EM Express zuzugreifen.

 Auch ein HTTP-Port kann für EM Express konfiguriert werden, wie unten angegeben:

SQL> select dbms_xdb_config.gethttpport from dual;

 SQL> exec dbms_xdb_config.sethttpport(8080);

Um den EM Express-Port für die pdbs festzulegen, muss der Container in die entsprechenden pdbs geändert und das PL/SQL-Verfahren zum Festlegen des Ports für diesen Container ausgeführt werden.

Danach kann der HTTP-Port für cpdb, pdb1 und pdb2 wie folgt überprüft werden:

SQL> select dbms_xdb_config.gethttpport from dual;

GETHTTPPORT

       8080

SQL> alter session set container = pdb1;

Session altered.

SQL> select dbms_xdb_config.gethttpport from dual;

 GETHTTPPORT

       8081

SQL> alter session set container = pdb2;

Session altered.

SQL> select dbms_xdb_config.gethttpport from dual;

GETHTTPPORT

       8082 
SLN310924_en_US__1icon HINWEIS: Wenn Sie weiterhin keine Verbindung zur EM Express-URL herstellen können, laden Sie die Empfängersteuerung als Grid-Nutzer neu und versuchen Sie es dann erneut.

Article Properties


Last Published Date

21 Feb 2021

Version

3

Article Type

Solution