Bases de données Conteneur et bases de données pluggables

L'architecture colocative permet à une base de données Oracle de fonctionner comme une base de données Conteneur colocative (CDB).

A partir d'Oracle Database 21c, une base de données Conteneur colocative est la seule architecture prise en charge. Dans les versions précédentes, Oracle prenait en charge les bases de données non Conteneur.

A propos des conteneurs d'une base Conteneur

Un conteneur est un ensemble de schémas, d'objets et de structures associées dans une base de données Conteneur colocative. Dans une base de données Conteneur, chaque conteneur a un ID et un nom uniques.

Une base de données Conteneur inclut zéro, une ou plusieurs bases de données pluggables (PDB) et conteneurs d'application créés par le client. Une base de données pluggable est un ensemble portable de schémas, d'objets de schéma et d'objets non schéma qui apparaît à un client Oracle Net en tant que base de données distincte. Un conteneur d'application est un composant de base de données Conteneur facultatif créé par l'utilisateur qui stocke les données et les métadonnées pour un ou plusieurs back-ends d'application. Une base de données Conteneur inclut zéro ou plusieurs conteneurs d'application.

Remarque : "Conteneurs d'application" explique en détail les conteneurs d'application.

La figure suivante représente les conteneurs possibles dans une base de données Conteneur.

Figure 1 : Conteneurs dans une base de données Conteneur

Description de l'image admin112.png

Chaque base de données Conteneur contient les conteneurs suivants :

Exemple 2-1 Base de données Conteneur sans conteneur d'application

Cet exemple présente une base de données Conteneur simple avec cinq conteneurs : le conteneur système (la base de données Conteneur entière), la racine de la base de données Conteneur, la valeur de départ de la base de données pluggable (PDB$SEED) et deux bases de données pluggables. Chaque base de données pluggable dispose de sa propre application dédiée. Un administrateur de base de données pluggable différent gère chaque base de données pluggable. Un utilisateur commun existe dans une base de données Conteneur avec une seule identité. Dans cet exemple, l'utilisateur commun SYS peut gérer la racine et chaque base de données pluggable. Au niveau physique, cette base de données Conteneur est gérée par une ou plusieurs instances de base de données et contient un ensemble de fichiers de données pour chaque base de données pluggable et pour la base de données Conteneur elle-même.

Figure 2 : Base de données Conteneur sans conteneurs d'application

Description de l'image cncpt345.png

Exemple 2-2 Base de données Conteneur avec conteneur d'applications

Dans cette variante, la base de données Conteneur contient un conteneur d'application nommé saas_sales_ac. Dans le conteneur d'application, la base de données pluggable d'application cust1_pdb prend en charge une application pour un client et la base de données pluggable d'application cust2_pdb prend en charge une application pour un client différent. La base de données Conteneur contient également une base de données pluggable nommée hrpdb, qui prend en charge une application RH, mais n'appartient pas à un conteneur d'application.

Figure 3 : Base de données Conteneur avec conteneur d'applications

Description de l'image cncpt383.png

Dans cet exemple, plusieurs DBA gèrent l'environnement de base de données Conteneur :

Racine de la base de données Conteneur et conteneur système

La racine de base de données Conteneur, également appelée simplement racine, est un ensemble de schémas, d'objets de schéma et d'objets non schéma auxquels appartiennent toutes les bases de données pluggables.

Chaque base de données Conteneur possède un seul et unique conteneur racine nommé CDB$ROOT. La racine stocke les métadonnées système requises pour gérer les bases pluggables. Toutes les bases pluggables appartiennent à la racine. Le conteneur système est la racine de la base de données Conteneur et toutes les bases de données pluggables qui appartiennent à cette racine.

La racine de base de données Conteneur ne stocke pas les données utilisateur. Oracle recommande de ne pas ajouter d'objets communs à la racine ou de modifier les schémas fournis par Oracle dans la racine. Toutefois, vous pouvez créer des utilisateurs et des rôles communs pour l'administration de la base de données. Un utilisateur commun disposant des privilèges nécessaires peut basculer d'un conteneur à un autre.

Oracle recommande AL32UTF8 pour le jeu de caractères racine. Les bases pluggables avec des jeux de caractères différents peuvent résider dans la même base de données Conteneur sans nécessiter de conversion de jeu de caractères.

Exemple 2-3 Tous les conteneurs d'une base Conteneur

La requête suivante, émise par un utilisateur administratif connecté à la racine de base de données Conteneur, répertorie tous les conteneurs de la base de données Conteneur (y compris la racine de base de données d'origine et la racine de base de données Conteneur), classés par CON_ID.

COL NAME FORMAT A15
SELECT NAME, CON_ID, DBID, CON_UID, GUID
FROM   V$CONTAINERS ORDER BY CON_ID;

NAME          CON_ID       DBID    CON_UID GUID
------------- ------ ---------- ---------- --------------------------------
CDB$ROOT           1 1895287725          1 2003321EDD4F60D6E0534E40E40A41C5
PDB$SEED           2 2795386505 2795386505 200AC90679F07B55E05396C0E40A23FE
SAAS_SALES_AC      3 1239646423 1239646423 200B4CE0A8DC1D24E05396C0E40AF8EE
SALESPDB           4 3692549634 3692549634 200B4928319C1BCCE05396C0E40A2432
HRPDB              5 3784483090 3784483090 200B4928319D1BCCE05396C0E40A2432

Voir aussi : "Comptes utilisateur communs"

Bases pluggables

Une base de données pluggable est un ensemble créé par l'utilisateur de schémas, d'objets et de structures associées qui apparaît logiquement dans une application client en tant que base de données distincte.

Chaque base de données pluggable appartient à SYS, quel que soit l'utilisateur qui l'a créée. SYS est un utilisateur commun dans la base de données Conteneur, ce qui signifie que cet utilisateur a la même identité dans la racine et dans toutes les bases existantes et futures de la base de données Conteneur.

Types de base de données pluggable

Toutes les bases de données pluggables sont créées par l'utilisateur avec l'instruction CREATE PLUGGABLE DATABASE, à l'exception de PDB$SEED, qui est fournie par Oracle.

Vous pouvez créer les types de base de données pluggable suivants.

Base de données pluggable standard

Ce type de base de données pluggable résulte de l'exécution de CREATE PLUGGABLE DATABASE sans spécifier la base de données pluggable en tant que base de données pluggable d'origine, proxy ou racine d'application. Ses capacités dépendent du conteneur dans lequel vous le créez :

Racine d'application

Considérez une racine d'application comme un conteneur racine propre à l'application. Il sert de référentiel pour une définition maître d'un back-end d'application, y compris les données et métadonnées communes. Pour créer une racine d'application, connectez-vous à la racine de base de données Conteneur et indiquez la clause AS APPLICATION CONTAINER dans une instruction CREATE PLUGGABLE DATABASE. Reportez-vous à Application Root.

Prédéfinir des bases pluggables

Contrairement à une base de données pluggable standard, une base de données pluggable prédéfinie n'est pas destinée à prendre en charge une application. La valeur de départ est plutôt un modèle pour la création de bases de données pluggables prenant en charge les applications. Une valeur de départ peut être l'une des suivantes :

Base de données pluggables proxy

Une base de données pluggable proxy est une base de données pluggable qui utilise un lien de base de données pour référencer une base de données pluggable dans une base de données Conteneur distante. Lorsque vous émettez une instruction dans une base pluggable proxy alors que celle-ci est ouverte, l'instruction s'exécute dans la base pluggable référencée.

Vous devez créer une base de données pluggable proxy lorsque vous êtes connecté à la racine de base de données Conteneur ou à la racine d'application. Vous pouvez modifier ou supprimer une base de données pluggable proxy de la même manière qu'une base de données pluggable standard.

Finalité des bases pluggables

Pour une application, une base de données pluggable est une base de données Oracle autonome et entièrement fonctionnelle. Vous pouvez consolider les bases de données pluggables en une seule base de données Conteneur pour réaliser des économies d'échelle, tout en maintenant l'isolation entre les bases de données pluggables.

Vous pouvez utiliser des bases pluggables pour atteindre les objectifs spécifiques suivants :

Voir aussi :

Base de données pluggables proxy

Une base de données pluggable proxy fait référence à une base de données pluggable distante appelée base de données pluggable référencée.

Bien que vous émettiez des instructions SQL dans la base de données pluggable proxy (de référence), ces instructions s'exécutent dans la base de données pluggable référencée. A cet égard, une base de données pluggable proxy est vaguement analogue à un fichier de lien symbolique sous Linux.

Les bases pluggables proxy offrent les avantages suivants :

Pour créer une base de données pluggable proxy, exécutez CREATE PLUGGABLE DATABASE avec la clause AS PROXY FROM, où FROM indique le nom de la base de données pluggable référencée et un lien de base de données. L'instruction de création copie uniquement les fichiers de données appartenant aux tablespaces SYSTEM et SYSAUX.

Exemple 2-4 Création d'une base pluggable proxy

Cet exemple se connecte au conteneur saas_sales_ac dans une base de données Conteneur de production locale. L'utilisateur commun sales_admin crée une base de données pluggable proxy nommée sales_sync_pdb. Cette base de données pluggable d'application référence une racine d'application nommée saas_sales_test_ac dans une base de données Conteneur de développement distante, à laquelle elle accède à l'aide du lien de base de données cdb_dev_rem. Lorsqu'une mise à niveau d'application se produit dans saas_sales_ac dans la base de données Conteneur de production, la mise à niveau est automatiquement propagée à la racine d'application saas_sales_test_ac dans la base de données Conteneur de développement distante.

CONNECT sales_admin@saas_sales_ac
Password: ***********

CREATE PLUGGABLE DATABASE sales_sync_pdb AS PROXY FROM saas_sales_test_ac@cdb_dev_rem;

Noms des bases pluggables

Les conteneurs d'une base de données Conteneur partagent le même espace de noms, ce qui signifie qu'ils doivent avoir des noms uniques dans cet espace de noms.

Les noms des conteneurs suivants ne doivent pas entrer en conflit dans la même base de données Conteneur :

Par exemple, si la même base de données Conteneur contient les conteneurs d'application saas_sales_ac et saas_sales_test_ac, deux bases de données pluggables d'application nommées cust1 ne peuvent pas résider simultanément dans les deux conteneurs. Les règles d'espace de noms empêchent également la création d'une base de données pluggable nommée cust1pdb dans la racine de base de données Conteneur et d'une base de données pluggable nommée cust1pdb dans une racine d'application.

Les noms des bases pluggables et des conteneurs racine d'application doivent suivre les mêmes règles que les noms de service réseau. De plus, étant donné qu'une base de données pluggable ou une racine d'application a un service avec son propre nom, le nom de conteneur doit être unique dans toutes les bases de données Conteneur dont les services sont exposés via un processus d'écoute spécifique. Le premier caractère d'un nom de conteneur créé par l'utilisateur doit être alphabétique, les caractères restants étant alphanumériques ou un trait de soulignement (_). Etant donné que les noms de service ne tiennent pas compte de la casse, les noms de conteneur ne tiennent pas compte de la casse et sont en majuscules même s'ils sont indiqués à l'aide d'identificateurs délimités.

Voir aussi : Référence des services Oracle AI Database Net pour les règles relatives aux noms de service

Liens de base de données entre bases pluggables

Par défaut, un utilisateur connecté à une base de données pluggable doit utiliser des liens de base de données pour accéder aux objets d'une autre base de données pluggable.

Figure 4 : Lien de base de données entre bases pluggables

Description de l'image cncpt384.png

Les exceptions à la règle sont les suivantes :

Lors de la création d'une base de données pluggable proxy, vous devez indiquer un nom de lien de base de données dans la clause FROM de l'instruction CREATE PLUGGABLE DATABASE ... AS PROXY. Si la base de données pluggable proxy et la base de données pluggable référencée résident dans des bases de données Conteneur distinctes, le lien de base de données doit être défini dans la racine de la base de données Conteneur qui contiendra la base de données pluggable proxy. Le lien de base de données doit se connecter à la base de données pluggable référencée distante ou à la racine de la base de données Conteneur distante.

Voir aussi : "Objets communs et locaux"