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.

Hoe kan ik verbinding maken met pluggable databases in Oracle RAC 12cR1?

Summary: We richten ons op het leveren van oplossingen die IT vereenvoudigen via databaseoplossingen, aangepaste ontwikkeling, dynamische datacenters, flexibel computergebruik

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

Van toepassing op:

Oracle Database       -     Oracle 12cR1 12.1.0.1.0 Enterprise Edition

Besturingssysteem  –     Oracle Linux 6.4 met kernel 2.6.39-400.109.17.1.el6uek.x86-64 en                                          
Red Hat Enterprise Linux met kernel 2.6.32-431.el6.x86_64

Storageplatform(s)   -      Dell EqualLogic PS 5000 en Dell EqualLogic PS 6110

Probleem:

Hoe kan ik verbinding maken met Pluggable Databases in Oracle RAC 12cR1?

Oplossing:

Er zijn vier manieren waarop een verbinding met de pluggable databases (PDB's) kan worden gemaakt.
  1. Met behulp van de standaardservice met dezelfde naam als de PDB-naam, die automatisch wordt gemaakt door de databasesoftware.
  2. Met behulp van door de gebruiker gedefinieerde services, die zijn gemaakt met de eigenschap pdb met behulp van het hulpprogramma SRVCTL dat de service koppelt aan de pluggable databases
  3. Met behulp van de opdracht alter session en het instellen van de gewenste container
  4. De Enterprise Manager Express gebruiken
 1. De standaardservice gebruiken om verbinding te maken met de PDB

Als u een verbinding met de PDB wilt maken met behulp van de standaardservice, moet u het volgende doen.
  •    Er moet een vermelding worden gemaakt in het bestand tnsnames.ora dat databaseadressen definieert waarmee een verbinding met de database kan worden gemaakt.
  •    De status van de PDB moet worden gewijzigd van gekoppeld naar lees-schrijf-modus.
 Deze vermelding moet worden gemaakt in het bestand tnsnames.ora:

In het geval van Oracle RAC 12c maakt de databasesoftware automatisch een standaardservice met dezelfde naam als de pluggable databasenaam. Desondanks wordt het bestand tnsnames.ora gegenereerd met slechts één vermelding die betrekking heeft op de algemene database. Voorbeeld: in het geval van een Oracle RAC 12c met twee knooppunten, waarbij cpdb de algemene database is, pdb1 en pdb2 de twee pluggable databases zijn die zijn aangemaakt en cpdb1 en cpdb2 de twee instanties zijn, is de standaardvermelding in het bestand tnsnames.ora zoals hieronder weergegeven:-

CPDB =

(DESCRIPTION =

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

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = cpdb.dbase.lab)

   )

)

Er moeten dus relevante vermeldingen worden gemaakt voor de standaardservicenaam van pluggable databases in het bestand tnsnames.ora, zoals hieronder wordt weergegeven:

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)

   )

)

De status van de pluggable database wijzigen:

Wanneer de pdb's worden gemaakt, is de open_mode standaard alleen 'Mounted'. Dit kan als volgt worden gecontroleerd:

SQL> select name, open_mode from v$pdbs;

NAME                           OPEN_MODE
PDB$SEED                       READ ONLY

PDB1                           MOUNTED

PDB2                           MOUNTED

Met de volgende opdracht worden alle pluggable databases in een lees-schrijf-modus geopend.

SQL> Alter pluggable database all open;

Hierna kan als volgt een verbinding kan worden gemaakt met de database met behulp van sqlplus:

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

SQL*Plus: release 12.1.0.1.0 Production op dinsdag 8 oktober 11:23:32 2013

Copyright (c) 1982, 2013, Oracle. Alle rechten voorbehouden.

Connected to: (Verbonden met:)

Oracle-database 12c Enterprise Edition release 12.1.0.1.0-64-bits Production met opties voor partitionering, echte applicatieclusters, automatisch storagebeheer, OLAP, geavanceerde analyses en het testen van echte applicaties

 2. De door de gebruiker gedefinieerde service gebruiken om verbinding te maken met de PDB

 De hierboven beschreven standaardservice mag alleen worden gebruikt voor administratieve doeleinden en niet voor applicaties. Altijd door de gebruiker gedefinieerde services moeten worden gebruikt voor applicaties, omdat de door de gebruiker gedefinieerde services kunnen worden aangepast aan de vereisten van de applicaties. Het opzetten van een verbinding met de door de gebruiker gedefinieerde services omvat de volgende stappen:
  1. Maak een database-service met de eigenschap PDB met behulp van het hulpprogramma SRVCTL
  2. Maak een vermelding in het bestand tnsnames.ora voor de gemaakte service
  3. Service starten
  4. Maak verbinding met de database met behulp van de service met de eigenschap pdb, zoals gemaakt in stap a
a. Een database-service met de eigenschap PDB maken met behulp van het hulpprogramma SRVCTL

Maak met behulp van de volgende opdrachten in het hulpprogramma SRVCTL twee database-services hr1 en sales1 om te worden gekoppeld aan de pluggable database pdb1:

[[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

 De eigenschap pdb kan worden weergegeven vanuit de datawoordenlijstweergave van all_services.

SQL> SELECT NAME, PDB FROM all_services;

 NAME                       PDB

pdb1.dbase.lab             PDB1

hr1                        PDB1

sales1                     PDB1

De opdracht $ srvctl config service –db geeft ook de beschikbare services weer.

b. Een vermelding in het bestand tnsnames.ora maken voor de gemaakte service

 We kunnen de HR_PDB1 en SALES_PDB1, netservicenamen maken die respectievelijk gebruikt kunnen worden door de applicaties hr en sales om als volgt verbinding met de pluggable database pdb1 te maken:

 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. De service starten

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

Service hr1 is niet actief

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

Wanneer de service die is gekoppeld aan een pdb wordt gestart, wordt de pdb automatisch geopend in een lees-schrijf-modus.

d. Verbinding maken met de database-service 

Een gebruiker maakt verbinding met de pdb met behulp van een database-service met de eigenschap pdb.

Zo kan de SYS-gebruiker bijvoorbeeld als volgt verbinding maken met de pdb1 met behulp van de database-service HR_PDB1 die is gekoppeld aan pdb1:

SQL> connect sys/oracle@HR_PDB1 AS SYSDBA

Verbonden.

SQL> SHOW CON_ID;

 CON_ID

3

SQL> SHOW CON_NAME;

CON_NAME

PDB1

3. De opdracht Alter Session gebruiken om verbinding te maken met de PDB

Wanneer u verbinding maakt met de RAC-instantie, kunt u standaard verbinding maken met de CDB$ROOT. Elke RAC-instantie opent de PDB als geheel en er is één systeemimage beschikbaar. Wanneer u de sessie wilt wijzigen in een pdb, kunt u dit doen door de sessie te wijzigen en de gewenste container in te stellen. De query show con_name kan worden gebruikt om de naam van de huidige container te verifiëren.

[oracle@node1 bin]$ sqlplus / as sysdba

SQL*Plus: release 12.1.0.1.0 Production op woensdag 9 oktober 13:56:27 2013

Copyright (c) 1982, 2013, Oracle. Alle rechten voorbehouden. 

Connected to: (Verbonden met:)

Oracle database 12c Enterprise Edition release 12.1.0.1.0 - 64-bits Production

Met opties voor partitionering, echte applicatieclusters, automatisch storagebeheer, OLAP,

geavanceerde analyses en het testen van echte applicaties

SQL> show con_name;

CON_NAME

CDB$ROOT

SQL> ALTER SESSION SET CONTAINER = PDB1;

Sessie gewijzigd.

SQL> SHOW CON_NAME;

CON_NAME

PDB1

 SQL> ALTER SESSION SET CONTAINER = PDB2;

Sessie gewijzigd.

SQL> SHOW CON_ID;

CON_ID

4

SQL> ALTER SESSION SET CONTAINER = CDB$ROOT;

Sessie gewijzigd.

 SQL> SHOW CON_NAME;

CON_NAME

CDB$ROOT

 De omschrijving van de container-ID is als volgt:
Container-ID Beschrijving
0 Hele CDB
1 CDB$ROOT
2 PDB$SEED
3 tot 254 PDB's
Tabel 1: Omschrijvingen van container-ID

In dit specifieke voorbeeld wordt pdb1 vertegenwoordigd door con_id 3 en pdb2 door con_id 4.

[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 op woensdag 9 oktober 13:51:39 2013

Copyright (c) 1982, 2013, Oracle. Alle rechten voorbehouden.

Connected to: (Verbonden met:)

Oracle database 12c Enterprise Edition release 12.1.0.1.0 - 64-bits Production

Met opties voor echte applicatieclusters en automatisch storagebeheer

 SQL> show con_id;

CON_ID

0

 SQL> show con_name;

 CON_NAME

Niet geconsolideerd

 4. De Enterprise Manager (EM) Express gebruiken om verbinding te maken met de PDB

Wanneer de database wordt gemaakt met behulp van de Database Configuration Assistant (DBCA), wordt op het moment van voltooiing de URL voor de EM Express geleverd door DBCA. De URL heeft de indeling http://:poortnummer/em met 5500 als de standaardpoort-ID.

 Voordat u naar die URL gaat om toegang te krijgen tot de EM Express, moet u de volgende SQL-instructie geven om de poort voor de EM Express te bevestigen:

SQL> SELECT dbms_xdb_config.gethttpsport from dual;

GETHTTPSPORT

       5500

Als de uitvoer is zoals hierboven weergegeven, kunt u verbinding maken met de URL die wordt weergegeven door de DBCA.

Maar als de output null is, zoals

GETHTTPSPORT

moet u vervolgens de PL/SQL-procedure uitvoeren, DBMS_XDB_CONFIG.SETHTTPSPORT om de HTTPS-poort voor de EM Express in te stellen. Bijvoorbeeld:

SQL> exec dbms_xdb_config.sethttpsport(5500);

De PL/SQL-procedure is voltooid.

Probeer daarna de EM Express te openen met behulp van de URL.

 Een HTTP-poort kan ook worden geconfigureerd voor de EM Express, zoals hieronder is aangegeven:

SQL> select dbms_xdb_config.gethttpport from dual;

 SQL> exec dbms_xdb_config.sethttpport(8080);

Om de EM Express-poort voor de pdb's in te stellen, moet u de container wijzigen in de respectievelijke pdb's en de PL/SQL-procedure uitvoeren om de poort voor die container in te stellen.

Wanneer u dat hebt gedaan, kunt u de HTTP-poort voor de cpdb, pdb1 en pdb2 als volgt controleren:

SQL> select dbms_xdb_config.gethttpport from dual;

GETHTTPPORT

       8080

SQL> alter session set container = pdb1;

Sessie gewijzigd.

SQL> select dbms_xdb_config.gethttpport from dual;

 GETHTTPPORT

       8081

SQL> alter session set container = pdb2;

Sessie gewijzigd.

SQL> select dbms_xdb_config.gethttpport from dual;

GETHTTPPORT

       8082 
SLN310924_nl_NL__1icon Opmerking: Als u nog steeds geen verbinding kunt maken met de URL voor EM Express, herlaadt u de listener control als netgebruiker en probeert u het opnieuw.

Article Properties


Last Published Date

21 Feb 2021

Version

3

Article Type

Solution