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.

Come connettersi ai database collegabili in Oracle RAC 12cR1?

Summary: Il nostro obiettivo è fornire soluzioni che semplificano l'IT offrendo soluzioni di database, sviluppo personalizzato, data center dinamici ed elaborazione flessibile

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

Si applica a:

Oracle Database - Oracle 12cR1 12.1.0.1.0 Enterprise Edition

Sistemi operativi - Oracle Linux 6.4 con kernel 2.6.39-400.109.17.1.el6uek.x86-64 e                                          
Red Hat Enterprise Linux con kernel 2.6.32-431.el6.x86_64

Piattaforme di storage - Dell EqualLogic PS 5000 e Dell EqualLogic PS 6110

Problema:

Come connettersi ai database collegabili in Oracle RAC 12cR1?

Soluzione:

Esistono quattro modi in cui è possibile stabilire una connessione con i database collegabili (PDB).
  1. Utilizzando il servizio predefinito con lo stesso nome del PDB, che viene creato automaticamente dal software del database
  2. Utilizzando servizi definiti dall'utente, creati con la proprietà PDB mediante l'utilità SRVCTL che associa il servizio ai database collegabili
  3. Utilizzando il comando alter session e impostando il container desiderato
  4. Utilizzando Enterprise Manager Express
 1. Utilizzando il servizio predefinito per la connessione al PDB

Per stabilire una connessione con il PDB utilizzando il servizio predefinito, effettuare le operazioni riportate di seguito.
  •    È necessario creare una voce nel file tnsnames.ora che definisce gli indirizzi di database che consentono di stabilire una connessione con il database.
  •    Lo stato del PDB deve poi essere modificato passando dalla modalità "mounted" alla modalità di lettura/scrittura.
 Voce da creare nel file tnsnames.ora:

Nel caso di Oracle RAC 12c, anche se il software del database crea automaticamente un servizio predefinito con lo stesso nome del database collegabile, il file tnsnames.ora viene comunque generato con una sola voce riferita al database globale. Ad esempio, nel caso di un Oracle RAC 12c a due nodi, dove cpdb è il database globale, pdb1 e pdb2 sono i due database collegabili creati e cpdb1 e cpdb2 sono le due istanze, la voce predefinita nel file tnsnames.ora è la seguente:-

CPDB =

(DESCRIPTION =

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

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = cpdb.dbase.lab)

   )

)

Pertanto, è necessario creare le voci pertinenti per il nome di servizio predefinito dei database collegabili nel file tnsnames.ora, come mostrato di seguito:

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)

   )

)

Modifica dello stato del database collegabile:

Quando i PDB vengono creati, per impostazione predefinita, open_mode è solo "Mounted". Ciò può essere verificato come segue:

SQL> select name, open_mode from v$pdbs;

NAME                           OPEN_MODE
PDB$SEED                       READ ONLY

PDB1                           MOUNTED

PDB2                           MOUNTED

Il seguente comando apre tutti i database collegabili in modalità di lettura/scrittura.

SQL> Alter pluggable database all open;

Dopo questa operazione, è possibile stabilire la connessione con il database utilizzando sqlplus come segue:

[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. Utilizzando il servizio definito dall'utente per la connessione al PDB

 Il servizio predefinito descritto sopra deve essere utilizzato solo per scopi amministrativi e non per le applicazioni. Occorre sempre utilizzare i servizi definiti dall'utente per le applicazioni, in quanto tali servizi possono essere personalizzati in base ai requisiti delle applicazioni. Stabilire una connessione mediante servizi definiti dall'utente comporta i seguenti passaggi:
  1. Creare un servizio di database con la proprietà PDB mediante l'utilità SRVCTL
  2. Creare una voce nel file tnsnames.ora per il servizio creato
  3. Avviare il servizio
  4. Connettersi al database mediante il servizio con la proprietà PDB creata nel primo passaggio
a. Creare un servizio di database con la proprietà PDB utilizzando l'utilità SRVCTL

I seguenti comandi che utilizzano l'utilità SRVCTL creano due servizi di database hr1 e sales1 da associare al database collegabile 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

La proprietà pdb può essere visualizzata dalla vista del dizionario dei dati all_services.

SQL> SELECT NAME, PDB FROM all_services;

 NAME                       PDB

pdb1.dbase.lab             PDB1

hr1                        PDB1

sales1                     PDB1

Anche il comando $ srvctl config service –db <databasename> elenca i servizi disponibili.

b.Creare una voce nel file tnsnames.ora per il servizio di database creato

 È possibile creare i nomi dei servizi di rete HR_PDB1 e SALES_PDB1 che l'applicazione hr e l'applicazione sales possono utilizzare, rispettivamente, per connettersi al database collegabile pdb1, come indicato di seguito:

 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. Avviare il servizio

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

Il servizio hr1 non è in esecuzione

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

L'avvio del servizio associato a un pdb apre automaticamente il pdb in modalità di lettura e scrittura.

d. Connettersi al servizio di database

Un utente si connette al PDB utilizzando un servizio di database con la proprietà PDB.

Ad esempio, l'utente SYS può connettersi al pdb1 utilizzando il servizio di database HR_PDB1 associato a pdb1, come indicato di seguito:

SQL> connect sys/oracle@HR_PDB1 AS SYSDBA

Connected.

SQL> SHOW CON_ID;

 CON_ID

3

SQL> SHOW CON_NAME;

CON_NAME

PDB1

3. Utilizzando il comando Alter Session per la connessione al PDB

Per impostazione predefinita, quando ci si connette all'istanza RAC, ci si connette a CDB$ROOT. Ogni istanza RAC apre il PDB complessivo ed è disponibile un'unica immagine di sistema. Quando si desidera cambiare la sessione per un PDB, è possibile farlo modificando la sessione e impostando il contenitore desiderato. Per verificare il nome del container corrente, si può utilizzare la query show con_name.

[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. Tutti i diritti riservati. 

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

 Le descrizioni degli ID container sono le seguenti:
ID container Descrizione
0 Intero CDB
1 CDB$ROOT
2 PDB$SEED
Da 3 a 254 PDB
Tabella 1.  Descrizione degli ID container

In questo esempio specifico, con_id 3 rappresenta pdb1 e con_id 4 rappresenta 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.Utilizzando Enterprise Manager(EM) Express per la connessione al PDB

Quando il database viene creato utilizzando Database Configuration Assistant (DBCA), al momento del completamento l'URL per EM Express viene fornito da DBCA. L'URL ha il formato http://<hostname>:p ortnumber/em con 5500 come ID porta predefinito.

 Prima di passare a tale URL per accedere a EM Express, è necessario rilasciare la seguente istruzione SQL per confermare la porta per EM Express:

SQL> SELECT dbms_xdb_config.gethttpsport from dual;

GETHTTPSPORT

       5500

Se l'output è come mostrato in precedenza, è possibile connettersi all'URL visualizzato da DBCA.

Tuttavia, se l'output è nullo, ad esempio

GETHTTPSPORT,

è necessario eseguire la procedura PL/SQL DBMS_XDB_CONFIG.SETHTTPSPORT per impostare la porta HTTPS per EM Express. Ad esempio:

SQL> exec dbms_xdb_config.sethttpsport(5500);

PL/SQL procedure successfully completed.

Dopo questa operazione, provare ad accedere a EM Express utilizzando l'URL.

 Una porta HTTP può essere configurata per EM Express anche come indicato di seguito:

SQL> select dbms_xdb_config.gethttpport from dual;

 SQL> exec dbms_xdb_config.sethttpport(8080);

Per impostare la porta EM Express per i PDB, è necessario modificare il container nei rispettivi PDB ed eseguire la procedura PL/SQL per impostare la porta per tale contenitore.

Dopo aver eseguito questa operazione, è possibile controllare la porta HTTP per cpdb, pdb1 e pdb2 come indicato di seguito:

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 NOTA: se non è ancora possibile connettersi all'URL di EM Express, ricaricare il controllo listener come utente grid e riprovare.

Article Properties


Last Published Date

21 Feb 2021

Version

3

Article Type

Solution