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

Comment se connecter à des bases de données enfichables dans Oracle RAC 12cR1 ?

Summary: Notre objectif est d’offrir des solutions qui simplifient l’informatique en fournissant des solutions de base de données, un développement personnalisé, des centres de données dynamiques et des solutions informatiques flexibles. ...

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

S’applique à :

Base de données Oracle : Oracle 12cR1 12.1.0.1.0 Enterprise Edition

Système(s) d’exploitation : Oracle Linux 6.4 avec noyau 2.6.39-400.109.17.1.el6uek.x86-64 et                                          
Red Hat Enterprise Linux avec noyau 2.6.32-431.el6.x86_64

Plateforme(s) de stockage : Dell EqualLogic PS 5000 et Dell EqualLogic PS 6110

Problème :

Comment se connecter à des bases de données enfichables dans Oracle RAC 12cR1 ?

Solution :

Il existe quatre façons d’établir une connexion avec les bases de données enfichables (PDB).
  1. À l’aide du service par défaut portant le même nom que la pdb, automatiquement créé par le logiciel de base de données.
  2. À l’aide de services définis par l’utilisateur, créés avec la propriété pdb à l’aide de l’utilitaire SRVCTL, qui associe le service aux bases de données enfichables.
  3. À l’aide de la commande alter session, en configurant le conteneur sur le conteneur souhaité.
  4. À l’aide d’Enterprise Manager Express.
 1. Utilisation du service par défaut pour la connexion à la PDB

Pour établir une connexion avec la PDB à l’aide du service par défaut, vous devez effectuer les opérations suivantes.
  •    Une entrée doit être ajoutée au fichier tnsnames.ora, qui définit les adresses des bases de données qui nous permettent d’identifier une connexion à la base de données.
  •    L’état de la pdb doit être défini sur le mode lecture-écriture et non sur monté.
 Entrée à ajouter au fichier tnsnames.ora :

Dans le cas d’Oracle RAC 12c, bien qu’un service par défaut portant le même nom que celui de la base de données enfichable soit automatiquement créé par le logiciel de base de données, le fichier tnsnames.ora est néanmoins généré avec une seule entrée pour la base de données globale. Par exemple, dans le cas d’une base Oracle RAC 12c à deux nœuds, où cpdb est la base de données globale, pdb1 et pdb2 sont les deux bases de données enfichables créées et cpdb1 et cpdb2 sont les deux instances, l’entrée par défaut dans le fichier tnsnames.ora est la suivante :

CPDB =

(DESCRIPTION =

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

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = cpdb.dbase.lab)

   )

)

Il est donc nécessaire de créer des entrées pertinentes pour le nom de service par défaut des bases de données enfichables dans le fichier tnsnames.ora, comme indiqué ci-dessous :

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)

   )

)

Modification de l’état de la base de données enfichable :

Lorsque les pdb sont créées, par défaut, l’open_mode est « Mounted ». Cela peut être déterminé comme suit :

SQL> select name, open_mode from v$pdbs ;

NAME                           OPEN_MODE
PDB$SEED                       READ ONLY

PDB1                           MOUNTED

PDB2                           MOUNTED

La commande suivante ouvre toutes les bases de données enfichables en mode lecture/écriture.

SQL> Alter pluggable database all open ;

Ensuite, la connexion peut être établie avec la base de données à l’aide de sqlplus, comme suit :

[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. Utilisation du service défini par l’utilisateur pour la connexion à la PDB

 Le service par défaut décrit ci-dessus doit être utilisé uniquement à des fins d’administration et ne doit pas être utilisé pour les applications. Pour les applications, vous devez toujours utiliser les services définis par l’utilisateur, car ils peuvent être personnalisés pour répondre aux exigences des applications. L’établissement d’une connexion à l’aide de services définis par l’utilisateur implique les opérations suivantes :
  1. Créer un service de base de données avec la propriété PDB à l’aide de l’utilitaire SRVCTL
  2. Créer une entrée dans le fichier tnsnames.ora pour le service créé
  3. Démarrer le service
  4. Se connecter à la base de données à l’aide du service avec la propriété PDB, créée à l’étape a
a. Créer un service de base de données avec la propriété PDB à l’aide de l’utilitaire SRVCTL

Les commandes suivantes de l’utilitaire SRVCTL créent deux services de base de données, hr1 et sales1, à associer à la base de données enfichable 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 propriété pdb peut être consultée à partir de la vue du dictionnaire de données all_services.

SQL> SELECT NAME, PDB FROM all_services;

 NAME                       PDB

pdb1.dbase.lab             PDB1

hr1                        PDB1

sales1                     PDB1

La commande $ srvctl config service –db <databasename> répertorie également les services disponibles.

b. Créer une entrée dans le fichier tnsnames.ora pour le service de base de données créé

 Nous pouvons créer les noms de service Internet HR_PDB1 et SALES_PDB1, que l’application hr et l’application sales peuvent utiliser, respectivement, pour se connecter à la base de données enfichable PDB1, comme suit :

 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. Démarrer le service

[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

Le démarrage du service associé à une pdb ouvre automatiquement la pdb en mode lecture-écriture.

d. Se connecter au service de base de données 

Un utilisateur se connecte à la pdb à l’aide d’un service de base de données avec la propriété pdb.

Par exemple, l’utilisateur SYS peut se connecter à la pdb1 à l’aide du service de base de données HR_PDB1 associé à pdb1, comme suit :

SQL> connect sys/oracle@HR_PDB1 AS SYSDBA

Connected.

SQL> SHOW CON_ID;

 CON_ID

3

SQL> SHOW CON_NAME;

CON_NAME

PDB1

3. Utilisation de la commande Alter Session pour la connexion à la PDB

Par défaut, lorsque vous vous connectez à l’instance RAC, vous vous connectez à CDB$ROOT. Chaque instance RAC ouvre l’intégralité de la PDB et une seule image système est disponible. Lorsque vous souhaitez modifier la session sur une pdb, vous pouvez modifier la session et configurer le conteneur sur le conteneur souhaité. La requête show con_name peut être utilisée pour vérifier le nom du conteneur actif.

[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

 Les descriptions de l’ID du conteneur sont les suivantes :
ID de conteneur Description
0 ID de conteneur
1 CDB$ROOT
2 PDB$SEED
3 vers 254 PDB
Tableau 1 :  Description des ID de conteneur

Dans cet exemple spécifique, con_id 3 représente la pdb1 et con_id 4 représente la 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. Utilisation d’Enterprise Manager (EM) Express pour la connexion à la PDB

Lorsque la base de données est créée à l’aide de l’Assistant de configuration de base de données (DBCA), au moment de l’achèvement, l’URL d’EM Express est fournie par le DBCA. L’URL est au format http://<hostname>:portnumber/em, avec 5500 comme ID de port parr défaut.

 Avant d’accéder à l’URL d’EM Express, il est nécessaire d’émettre l’instruction SQL suivante pour confirmer le port d’EM Express :

SQL> SELECT dbms_xdb_config.gethttpsport from dual;

GETHTTPSPORT

       5500

Si le résultat est tel qu’illustré ci-dessus, vous pouvez vous connecter à l’URL affichée par le DBCA.

Toutefois, si le résultat est nul, tel que

GETHTTPSPORT

il faut exécuter la procédure PL/SQL, DBMS_XDB_CONFIG.SETHTTPSPORT pour définir le port HTTPS pour EM Express. Par exemple :

SQL> exec dbms_xdb_config.sethttpsport(5500);

Procédure PL/SQL réussie.

Ensuite, essayez d’accéder à EM Express à l’aide de l’URL.

 Un port HTTP peut également être configuré pour EM Express, comme indiqué ci-dessous :

SQL> select dbms_xdb_config.gethttpport from dual;

 SQL> exec dbms_xdb_config.sethttpport(8080);

Pour définir le port EM Express pour les pdbs, vous devez remplacer le conteneur des pdbs correspondantes et exécuter la procédure PL/SQL pour définir le port de ce conteneur.

Ensuite, vous pouvez vérifier le port HTTP pour les cpdb,pdb1 et pdb2, comme suit :

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 Remarque : Si vous ne parvenez toujours pas à vous connecter à l’URL d’EM Express, rechargez le contrôle d’écoute en tant qu’utilisateur de la grille, puis réessayez.

Article Properties


Last Published Date

21 Feb 2021

Version

3

Article Type

Solution