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.

¿Cómo conectarse a las bases de datos que se pueden conectar en Oracle RAC 12cR1?

Summary: Nuestro objetivo es ofrecer soluciones que simplifiquen la TI mediante soluciones de bases de datos, desarrollo personalizado, centros de datos dinámicos y computación flexible

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

Se aplica a:

Bases de datos Oracle: Oracle 12cR1 12.1.0.1.0 Enterprise Edition

Sistemas operativos: Oracle Linux 6.4 con kernel 2.6.39-400.109.17.1.el6uek.x86-64 y                                          
Red Hat Enterprise Linux con kernel 2.6.32-431.el6.x86_64

Plataformas de almacenamiento: Dell EqualLogic PS 5000 y Dell EqualLogic PS 6110

Problema:

¿Cómo conectarse a las bases de datos que se pueden conectar en Oracle RAC 12cR1?

Solución:

Existen cuatro formas en las que se puede establecer una conexión con las bases de datos que se pueden conectar (PDB).
  1. Mediante el servicio predeterminado con el mismo nombre que el nombre de PDB, que se crea automáticamente en el software de la base de datos.
  2. Mediante el uso de servicios definidos por el usuario, creados con la propiedad de PDB a través de la utilidad SRVCTL que asocia el servicio con las bases de datos que se pueden conectar
  3. Mediante el uso del comando “alter session” y la configuración del contenedor que se desea usar
  4. Mediante el uso de Enterprise Manager Express
 1. Uso del servicio predeterminado para conectarse a la PDB

Para establecer una conexión con la PDB mediante el servicio predeterminado, se debe realizar lo siguiente.
  •    Se debe realizar una entrada en el archivo tnsnames.ora que define las direcciones de las bases de datos que nos permiten establecer una conexión con la base de datos.
  •    El estado de la PDB debe cambiarse de montada al modo de lectura/escritura.
 Entrada que se realizará en el archivo tnsnames.ora:

En el caso de Oracle RAC 12c, aunque el software de la base de datos crea automáticamente un servicio predeterminado con el mismo nombre que el nombre de la base de datos que se puede conectar, el archivo tnsnames.ora se genera únicamente con una sola entrada, la cual pertenece a la base de datos global. Por ejemplo, en el caso de un Oracle RAC 12c de dos nodos, donde cpdb es la base de datos global, pdb1 y pdb2 son las dos bases de datos conectables creadas y cpdb1 y cpdb2 son las dos instancias, la entrada predeterminada en el archivo tnsnames.ora es como se muestra a continuación:

CPDB =

(DESCRIPTION =

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

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = cpdb.dbase.lab)

   )

)

por lo tanto, se deben crear entradas relevantes para el nombre de servicio predeterminado de las bases de datos conectables en el archivo tnsnames.ora como se muestra a continuación:

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)

   )

)

Cambio del estado de la base de datos conectable:

Cuando se crean las pdb, de manera predeterminada, el open_mode es solo “Mounted”. Esto se puede verificar de la siguiente manera:

SQL> select name, open_mode from v$pdbs;

NAME                           OPEN_MODE
PDB$SEED                       READ ONLY

PDB1                           MOUNTED

PDB2                           MOUNTED

El siguiente comando abre todas las bases de datos conectables en un modo de lectura y escritura.

SQL> Alter pluggable database all open;

Después de esto, se puede establecer una conexión con la base de datos mediante sqlplus de la siguiente manera:

[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. Todos los derechos reservados.

Connected to:

Oracle Database 12c Enterprise Edition versión 12.1.0.1.0 - Producción de 64 bits con partición, Real Application Clusters, Automatic Storage Management, OLAP, análisis avanzados y opciones de prueba en aplicaciones reales

 2. Uso del servicio definido por el usuario para conectarse a la PDB

 El servicio predeterminado descrito anteriormente solo debe utilizarse para fines administrativos y no debe utilizarse para aplicaciones. Siempre se deben utilizar los servicios definidos por el usuario para las aplicaciones, ya que los servicios definidos por el usuario pueden personalizarse para adaptarse a los requisitos de las aplicaciones. El establecimiento de una conexión mediante los servicios definidos por el usuario implica los siguientes pasos:
  1. Cree un servicio de base de datos con la propiedad de PDB mediante la utilidad SRVCTL
  2. Cree una entrada en el archivo tnsnames.ora para el servicio creado
  3. Inicie el servicio
  4. Conéctese a la base de datos mediante el servicio que tiene la propiedad de PDB, creada en el paso "a"
a. Crear un servicio de base de datos con la propiedad PDB mediante la utilidad SRVCTL

Los siguientes comandos utilizados mediante la utilidad SRVCTL crean dos servicios de base de datos hr1 y sales1 que se asociarán con la base de datos conectable 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 propiedad pdb se puede ver desde la vista del diccionario de datos all_services.

SQL> SELECT NAME, PDB FROM all_services;

 NAME                       PDB

pdb1.dbase.lab             PDB1

hr1                        PDB1

sales1                     PDB1

El comando $ srvctl config service –db <databasename> también enumera los servicios disponibles.

b. Crear una entrada en el archivo tnsnames.ora para el servicio de base de datos creado

 Podemos crear los nombres de servicio de red HR_PDB1 y SALES_PDB1 que la aplicación hr y la aplicación de ventas pueden utilizar, respectivamente, para conectarse a la base de datos que se puede conectar, pdb1, de la siguiente manera:

 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. Inicie el servicio

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

El servicio hr1 no se está ejecutando

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

El inicio del servicio asociado con una pdb abre automáticamente la pdb en un modo de lectura y escritura.

d. Conéctese al servicio de base de datos

Un usuario se conecta a la pdb mediante un servicio de base de datos que tiene la propiedad pdb.

Por ejemplo, el usuario SYS puede conectarse a la pdb1 mediante el servicio de base de datos HR_PDB1 asociado con pdb1 de la siguiente manera:

SQL> connect sys/oracle@HR_PDB1 AS SYSDBA

Connected.

SQL> SHOW CON_ID;

 CON_ID

3

SQL> SHOW CON_NAME;

CON_NAME

PDB1

3. Uso del comando “Alter Session” para conectarse a la PDB

De manera predeterminada, cuando se conecta a la instancia de RAC, se conecta a CDB$ROOT. Cada instancia de RAC abre la PDB en su totalidad, y se encuentra disponible una sola imagen del sistema. Cuando desea cambiar la sesión a una pdb, puede hacerlo mediante la modificación de la sesión y la configuración del contenedor en el contenedor deseado. La consulta show con_name se puede usar para verificar el nombre del contenedor actual.

[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. Todos los derechos reservados. 

Conectado a:

Oracle Database 12c Enterprise Edition versión 12.1.0.1.0 - Producción de 64 bits

Con partición, Real Application Clusters, Automatic Storage Management, OLAP,

análisis avanzados y opciones de prueba en aplicaciones reales

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

 Las siguientes son las descripciones de ID del contenedor:
ID del contenedor Descripción
0 CDB completa
1 CDB$ROOT
2 PDB$SEED
De 3 a 254 PDB
Tabla 1:  Descripciones de ID de contenedor

En este ejemplo específico, con_id 3 representa pdb1 y con_id 4 representa 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. Todos los derechos reservados.

Conectado a:

Oracle Database 12c Enterprise Edition versión 12.1.0.1.0 - Producción de 64 bits

Con las opciones Real Application Clusters y Automatic Storage Management,

 SQL> show con_id;

CON_ID

0

 SQL> show con_name;

 CON_NAME

Non Consolidated

4. Uso de Enterprise Manager (EM) Express para conectarse a la PDB

Cuando la base de datos se crea mediante Database Configuration Assistant (DBCA), este último proporciona la dirección URL para EM Express en el momento de la finalización. La dirección URL tiene el formato http://<hostname>:portnumber/em con 5500 como el ID de puerto predeterminado.

Antes de ir a esa URL para acceder a EM Express, se debe emitir la siguiente declaración de SQL a fin de confirmar el puerto para EM Express:

SQL> SELECT dbms_xdb_config.gethttpsport from dual;

GETHTTPSPORT

       5500

Si la salida es como se muestra anteriormente, se puede conectar a la URL que muestra DBCA.

Sin embargo, si la salida es nula, como

GETHTTPSPORT

Entonces, se debe ejecutar el procedimiento PL/SQL DBMS_XDB_CONFIG.SETHTTPSPORT a fin de establecer el puerto HTTPS para EM Express. Por ejemplo:

SQL> exec dbms_xdb_config.sethttpsport(5500);

PL/SQL procedure successfully completed.

Después de esto, intente acceder a EM Express mediante la URL.

 También se puede configurar un puerto HTTP para EM Express como se indica a continuación:

SQL> select dbms_xdb_config.gethttpport from dual;

 SQL> exec dbms_xdb_config.sethttpport(8080);

A fin de configurar el puerto EM Express para las pdb, se debe cambiar el contenedor a las respectivas pdb y ejecutar el procedimiento PL/SQL a fin de configurar el puerto para ese contenedor.

Después de hacer eso, se puede comprobar el puerto HTTP para cpdb,pdb1 y pdb2 de la siguiente manera:

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: Si aún no puede conectarse a la URL de EM Express, vuelva a cargar el control de escucha como un usuario de cuadrícula y, a continuación, vuelva a intentarlo.

Article Properties


Last Published Date

21 Feb 2021

Version

3

Article Type

Solution