Jak se připojit k připojitelným databázím v systému Oracle RAC 12cR1?
Summary: Našim cílem je zjednodušit IT dodáváním řešení databází, vlastního vývoje, dynamických datových center a flexibilní výpočetní techniky.
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
Symptoms
Platí pro:
Oracle Database – Oracle 12cR1 12.1.0.1.0 Enterprise Edition
Operační systémy – Oracle Linux 6.4 s jádrem 2.6.39-400.109.17.1.el6uek.x86-64 a
Platformy úložiště – Dell EqualLogic PS 5000 a Dell EqualLogic PS 6110
Problém:
Jak se připojit k připojitelným databázím v systému Oracle RAC 12cR1?
Řešení:
Existují čtyři způsoby, jak navázat spojení s připojitelnými databázemi (PDB).
Chcete-li navázat spojení s PDB pomocí výchozí služby, je třeba provést následující kroky.
V systému Oracle RAC 12c databázový software sice automaticky vytvoří výchozí službu se stejným názvem, jaký má připojitelná databáze, soubor tnsnames.ora se však přesto vygeneruje pouze s jedním záznamem, který se týká globální databáze. Například v případě systému Oracle RAC 12c se dvěma uzly, kde CPDB je globální databáze, PDB1 a PDB2 jsou dvě vytvořené připojitelné databáze a CPDB1 a CPDB2 jsou dvě instance, výchozí položka v souboru tnsnames.ora bude jako níže:-
CPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cpdb.dbase.lab)
)
)
Proto je v souboru tnsnames.ora nutné vytvořit relevantní záznamy pro výchozí název služby databází s možností zapojení, jak je uvedeno níže:
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)
)
)
Změna stavu připojitelné databáze:
Když jsou vytvořeny PDB, ve výchozím nastavení má možnost open_mode hodnotu pouze „Mounted“. To lze ověřit následujícím způsobem:
SQL>select name, open_mode from v$pdbs;
NAME OPEN_MODE
PDB$SEED READ ONLY
PDB1 MOUNTED
PDB2 MOUNTED
Následující příkaz otevře všechny připojitelné databáze v režimu čtení a zápisu.
SQL> Alter pluggable database all open;
Poté lze navázat připojení s databází pomocí sqlplus následujícím způsobem:
[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. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options
2. Připojení k PDB pomocí služby definované uživatelem
Výchozí služba uvedená výše by se měla používat pouze pro administrativní účely, a nikoli pro aplikace. Pro aplikace je nutné vždy používat služby definované uživatelem, protože je lze přizpůsobit tak, aby vyhovovaly požadavkům aplikací. Navázání spojení pomocí služeb definovaných uživatelem zahrnuje následující kroky:
Následující příkazy nástroje SRVCTL vytvoří dvě databázové služby hr1 a sales1, které budou přidruženy k připojitelné databázi 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
Vlastnost pdb lze také zobrazit ze zobrazení datového slovníku all_services.
SQL> SELECT NAME, PDB FROM all_services;
NAME PDB
pdb1.dbase.lab PDB1
hr1 PDB1
sales1 PDB1
Příkaz $ srvctl config service –db <název_databáze> rovněž uvede dostupné služby.
b. Vytvoření záznamu v souboru tnsnames.ora pro vytvořenou databázovou službu
Můžeme vytvořit HR_PDB1 a SALES_PDB1, síťové názvy služeb, které mohou aplikace hr a sales používat k připojení k připojitelné databázi pdb1, a to následujícím způsobem:
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. Spuštění služby
[oracle@nsnode1 bin]$ srvctl status service -db cpdb -service hr1
Služba hr1 neběží
[oracle@nsnode1 bin]$ srvctl start service -db cpdb -service hr1
Spuštění služby přidružené k PDB automaticky otevře PDB v režimu pro čtení či zápis.
d. Připojení k databázové službě
Uživatel se připojí k PDB pomocí databázové služby s vlastností PDB.
Uživatel SYS se může například připojit k pdb1 pomocí databázové služby HR_PDB1 přidružené k pdb1 následovně:
SQL> connect sys/oracle@HR_PDB1 AS SYSDBA
Connected.
SQL> SHOW CON_ID;
CON_ID
3
SQL> SHOW CON_NAME;
CON_NAME
PDB1
3. Použití příkazu Alter Session pro připojení k PDB
Ve výchozím nastavení se při připojování k instanci RAC připojujete k CDB$ROOT. Každá instance RAC otevírá PDB jako celek a je k dispozici jediná bitová kopie systému. Pokud chcete změnit relaci na PDB, můžete tak učinit změnou relace a nastavením kontejneru na požadovaný kontejner. Dotaz „show con_name“ lze použít k ověření názvu aktuálního kontejneru.
[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.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options
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
Popisy ID kontejneru jsou následující:
Tabulka 1: Popisy ID kontejneru
V tomto konkrétním příkladu „con_id 3“ představuje pdb1 a „con_id 4“ zase 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. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options
SQL> show con_id;
CON_ID
0
SQL> show con_name;
CON_NAME
Non Consolidated
4. Připojení k PDB pomocí nástroje Enterprise Manager(EM) Express
Pokud je databáze vytvořena pomocí nástroje Database Configuration Assistant (DBCA), je adresa URL pro nástroj EM Express v okamžiku dokončení poskytnuta nástrojem DBCA. Adresa URL má formát http://<název_hostitele>:číslo_portu/em a jako ID výchozího portu je nastavena hodnota 5500.
Než přejdete na tuto adresu URL pro přístup k nástroji EM Express, je třeba spustit následující příkaz SQL za účelem potvrzení portu pro nástroj EM Express:
SQL> SELECT dbms_xdb_config.gethttpsport from dual;
GETHTTPSPORT
5500
Pokud se zobrazí výstup, který je uveden výše, můžete se připojit k adrese URL zobrazené nástrojem DBCA.
Pokud má však výstup nulovou hodnotu, například
GETHTTPSPORT
, potom je nutné provést postup PL/SQL DBMS_XDB_CONFIG.SETHTTPSPORT, aby bylo možné nastavit port HTTPS pro nástroj EM Express. Například:
SQL> exec dbms_xdb_config.sethttpsport(5500);
PL/SQL procedure successfully completed.
Poté zkuste otevřít nástroj EM Express pomocí adresy URL.
Port HTTP lze také nakonfigurovat pro nástroj EM Express, jak je uvedeno níže:
SQL> select dbms_xdb_config.gethttpport from dual;
SQL> exec dbms_xdb_config.sethttpport(8080);
Chcete-li nastavit port EM Express pro pdbs, je třeba změnit kontejner na příslušné pdbs a spustit postup PL /SQL za účelem nastavení portu pro tento kontejner.
Poté můžete zkontrolovat port HTTP pro cpdb, pdb1 a pdb2 následujícím způsobem:
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
POZNÁMKA: Pokud se stále nemůžete připojit k adrese URL nástroje EM Express, načtěte znovu ovládací prvek pro naslouchání jako uživatel mřížky a zkuste to znovu.
Oracle Database – Oracle 12cR1 12.1.0.1.0 Enterprise Edition
Operační systémy – Oracle Linux 6.4 s jádrem 2.6.39-400.109.17.1.el6uek.x86-64 a
Red Hat Enterprise Linux s jádrem 2.6.32-431.el6.x86_64
Platformy úložiště – Dell EqualLogic PS 5000 a Dell EqualLogic PS 6110
Problém:
Jak se připojit k připojitelným databázím v systému Oracle RAC 12cR1?
Řešení:
Existují čtyři způsoby, jak navázat spojení s připojitelnými databázemi (PDB).
- Pomocí výchozí služby se stejným názvem jako název PDB, který je automaticky vytvořen databázovým softwarem.
- Pomocí uživatelem definovaných služeb vytvořených s vlastností PDB pomocí nástroje SRVCTL, který spojuje službu s připojitelnými databázemi
- Pomocí příkazu pro změnu relace a nastavení kontejneru na požadovaný kontejner
- Pomocí nástroje Enterprise Manager Express
Chcete-li navázat spojení s PDB pomocí výchozí služby, je třeba provést následující kroky.
- V souboru tnsnames.ora, který definuje databázové adresy umožňující navázat spojení s databází, je nutné vytvořit záznam.
- Stav PDB je třeba změnit z režimu Mounted na režim Read/Write.
V systému Oracle RAC 12c databázový software sice automaticky vytvoří výchozí službu se stejným názvem, jaký má připojitelná databáze, soubor tnsnames.ora se však přesto vygeneruje pouze s jedním záznamem, který se týká globální databáze. Například v případě systému Oracle RAC 12c se dvěma uzly, kde CPDB je globální databáze, PDB1 a PDB2 jsou dvě vytvořené připojitelné databáze a CPDB1 a CPDB2 jsou dvě instance, výchozí položka v souboru tnsnames.ora bude jako níže:-
CPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleRACscan.dbase.lab)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cpdb.dbase.lab)
)
)
Proto je v souboru tnsnames.ora nutné vytvořit relevantní záznamy pro výchozí název služby databází s možností zapojení, jak je uvedeno níže:
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)
)
)
Změna stavu připojitelné databáze:
Když jsou vytvořeny PDB, ve výchozím nastavení má možnost open_mode hodnotu pouze „Mounted“. To lze ověřit následujícím způsobem:
SQL>select name, open_mode from v$pdbs;
NAME OPEN_MODE
PDB$SEED READ ONLY
PDB1 MOUNTED
PDB2 MOUNTED
Následující příkaz otevře všechny připojitelné databáze v režimu čtení a zápisu.
SQL> Alter pluggable database all open;
Poté lze navázat připojení s databází pomocí sqlplus následujícím způsobem:
[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. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options
2. Připojení k PDB pomocí služby definované uživatelem
Výchozí služba uvedená výše by se měla používat pouze pro administrativní účely, a nikoli pro aplikace. Pro aplikace je nutné vždy používat služby definované uživatelem, protože je lze přizpůsobit tak, aby vyhovovaly požadavkům aplikací. Navázání spojení pomocí služeb definovaných uživatelem zahrnuje následující kroky:
- Vytvořte databázovou službu s vlastností PDB pomocí nástroje SRVCTL
- Pro vytvořenou službu vytvořte záznam v souboru tnsnames.ora
- Spuštění služby
- Připojte se k databázi pomocí služby s vlastností PDB vytvořené v kroku A
Následující příkazy nástroje SRVCTL vytvoří dvě databázové služby hr1 a sales1, které budou přidruženy k připojitelné databázi 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
Vlastnost pdb lze také zobrazit ze zobrazení datového slovníku all_services.
SQL> SELECT NAME, PDB FROM all_services;
NAME PDB
pdb1.dbase.lab PDB1
hr1 PDB1
sales1 PDB1
Příkaz $ srvctl config service –db <název_databáze> rovněž uvede dostupné služby.
b. Vytvoření záznamu v souboru tnsnames.ora pro vytvořenou databázovou službu
Můžeme vytvořit HR_PDB1 a SALES_PDB1, síťové názvy služeb, které mohou aplikace hr a sales používat k připojení k připojitelné databázi pdb1, a to následujícím způsobem:
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. Spuštění služby
[oracle@nsnode1 bin]$ srvctl status service -db cpdb -service hr1
Služba hr1 neběží
[oracle@nsnode1 bin]$ srvctl start service -db cpdb -service hr1
Spuštění služby přidružené k PDB automaticky otevře PDB v režimu pro čtení či zápis.
d. Připojení k databázové službě
Uživatel se připojí k PDB pomocí databázové služby s vlastností PDB.
Uživatel SYS se může například připojit k pdb1 pomocí databázové služby HR_PDB1 přidružené k pdb1 následovně:
SQL> connect sys/oracle@HR_PDB1 AS SYSDBA
Connected.
SQL> SHOW CON_ID;
CON_ID
3
SQL> SHOW CON_NAME;
CON_NAME
PDB1
3. Použití příkazu Alter Session pro připojení k PDB
Ve výchozím nastavení se při připojování k instanci RAC připojujete k CDB$ROOT. Každá instance RAC otevírá PDB jako celek a je k dispozici jediná bitová kopie systému. Pokud chcete změnit relaci na PDB, můžete tak učinit změnou relace a nastavením kontejneru na požadovaný kontejner. Dotaz „show con_name“ lze použít k ověření názvu aktuálního kontejneru.
[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.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options
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
Popisy ID kontejneru jsou následující:
| ID kontejneru | Popis |
| 0 | Whole CDB |
| 1 | CDB$ROOT |
| 2 | PDB$SEED |
| 3 až 254 | PDB |
V tomto konkrétním příkladu „con_id 3“ představuje pdb1 a „con_id 4“ zase 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. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options
SQL> show con_id;
CON_ID
0
SQL> show con_name;
CON_NAME
Non Consolidated
4. Připojení k PDB pomocí nástroje Enterprise Manager(EM) Express
Pokud je databáze vytvořena pomocí nástroje Database Configuration Assistant (DBCA), je adresa URL pro nástroj EM Express v okamžiku dokončení poskytnuta nástrojem DBCA. Adresa URL má formát http://<název_hostitele>:číslo_portu/em a jako ID výchozího portu je nastavena hodnota 5500.
Než přejdete na tuto adresu URL pro přístup k nástroji EM Express, je třeba spustit následující příkaz SQL za účelem potvrzení portu pro nástroj EM Express:
SQL> SELECT dbms_xdb_config.gethttpsport from dual;
GETHTTPSPORT
5500
Pokud se zobrazí výstup, který je uveden výše, můžete se připojit k adrese URL zobrazené nástrojem DBCA.
Pokud má však výstup nulovou hodnotu, například
GETHTTPSPORT
, potom je nutné provést postup PL/SQL DBMS_XDB_CONFIG.SETHTTPSPORT, aby bylo možné nastavit port HTTPS pro nástroj EM Express. Například:
SQL> exec dbms_xdb_config.sethttpsport(5500);
PL/SQL procedure successfully completed.
Poté zkuste otevřít nástroj EM Express pomocí adresy URL.
Port HTTP lze také nakonfigurovat pro nástroj EM Express, jak je uvedeno níže:
SQL> select dbms_xdb_config.gethttpport from dual;
SQL> exec dbms_xdb_config.sethttpport(8080);
Chcete-li nastavit port EM Express pro pdbs, je třeba změnit kontejner na příslušné pdbs a spustit postup PL /SQL za účelem nastavení portu pro tento kontejner.
Poté můžete zkontrolovat port HTTP pro cpdb, pdb1 a pdb2 následujícím způsobem:
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
POZNÁMKA: Pokud se stále nemůžete připojit k adrese URL nástroje EM Express, načtěte znovu ovládací prvek pro naslouchání jako uživatel mřížky a zkuste to znovu.
Article Properties
Article Number: 000146485
Article Type: Solution
Last Modified: 21 Feb 2021
Version: 3
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.