Gestion avancée des PDB dans Oracle : Cycle de vie, Migration et Instantanés

Administration courante et création de PDB

L'architecture Multitenant d'Oracle repose sur la gestion flexible des bases de données enfichables (PDB). Voici les commandes fondamentales pour instancier et gérer l'état opérationnel d'une PDB.

Instanciation et gestion des états

-- Création d'une nouvelle PDB à partir de la graine (seed)
CREATE PLUGGABLE DATABASE pdb_finance 
ADMIN USER admin_local IDENTIFIED BY "StrongPassword#123"
FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/CDB1/pdbseed/', '/u01/app/oracle/oradata/CDB1/pdb_finance/');

-- Modification de l'état d'ouverture
ALTER PLUGGABLE DATABASE pdb_finance OPEN;
ALTER PLUGGABLE DATABASE pdb_finance OPEN READ ONLY;

-- Persistance de l'état (pour redémarrage automatique avec le CDB)
ALTER PLUGGABLE DATABASE pdb_finance SAVE STATE;
SELECT con_name, state FROM dba_pdb_saved_states;

-- Suppression du paramètre de persistance
ALTER PLUGGABLE DATABASE pdb_finance DISCARD STATE;

-- Ouverture massive
ALTER PLUGGABLE DATABASE ALL OPEN;

Maintenance et suppression

-- Vérification du statut actuel
SHOW PDBS;
SELECT name, open_mode FROM v$pdbs;

-- Fermeture d'une instance spécifique ou globale
ALTER PLUGGABLE DATABASE pdb_finance CLOSE;
ALTER PLUGGABLE DATABASE ALL CLOSE;

-- Suppression d'une PDB (avec ou sans fichiers physiques)
DROP PLUGGABLE DATABASE pdb_finance INCLUDING DATAFILES;
-- Pour garder les fichiers (déconnexion logique uniquement)
DROP PLUGGABLE DATABASE pdb_finance KEEP DATAFILES;

Modèles de création personnalisés

Au-delà de la création simple, Oracle permet de définir des configurations de stockage précises ou de cloner des bases existantes.

-- Création avec configuration de stockage spécifique
CREATE PLUGGABLE DATABASE pdb_hr
ADMIN USER hr_mgr IDENTIFIED BY "ManagerPass"
ROLES = (connect)
FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/CDB1/pdbseed', '/u01/app/oracle/oradata/CDB1/pdb_hr')
DEFAULT TABLESPACE data_ts 
DATAFILE '/u01/app/oracle/oradata/CDB1/pdb_hr/data01.dbf' SIZE 50M AUTOEXTEND ON
STORAGE (MAXSIZE 50G);

-- Clonage d'une PDB existante
CREATE PLUGGABLE DATABASE pdb_dev FROM pdb_finance
FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/CDB1/pdb_finance', '/u01/app/oracle/oradata/CDB1/pdb_dev');

Opérations d'Unplug et Plug (Déconnexion et Connexion)

Le déplacement d'une PDB entre deux conteneurs (CDB) s'effectue via l'exportation des métadonnées dans un fichier XML.

Extraction (Unplug)

-- Arrêt nécessaire avant l'extraction
ALTER PLUGGABLE DATABASE pdb_ventes CLOSE IMMEDIATE;

-- Génération du fichier de métadonnées
ALTER PLUGGABLE DATABASE pdb_ventes UNPLUG INTO '/tmp/pdb_ventes_metadata.xml';

Insertion (Plug)

-- Intégration simple avec réutilisation des fichiers temporaires
CREATE PLUGGABLE DATABASE pdb_ventes_new USING '/tmp/pdb_ventes_metadata.xml' NOCOPY TEMPFILE REUSE;

-- Intégration avec copie des fichiers vers un nouvel emplacement
CREATE PLUGGABLE DATABASE pdb_ventes_prod USING '/tmp/pdb_ventes_metadata.xml'
COPY
FILE_NAME_CONVERT = ('/old/path/pdb_ventes', '/new/path/pdb_ventes_prod');
  • COPY : Duplique les fichiers de données.
  • MOVE : Déplace les fichiers existants.
  • NOCOPY : Utilise les fichiers là où ils se trouvent.

Hiérarchie des paramètres de configuration

Dans un environnement Multitenant, la portée des paramètres système se divise en trois niveaux :

  1. Niveau Instance (CDB) : Affecte l'ensemble du conteneur et de ses PDB.
    ALTER SYSTEM SET processes=1000 SCOPE=SPFILE;
  2. Niveau Session : Limité à la connexion active.
    ALTER SESSION SET NLS_LANGUAGE='FRENCH';
  3. Niveau PDB : Paramètres spécifiques à une base enfichable, stockés dans PDB_SPFILE$ au sein du dictionnaire du CDB.
    ALTER SYSTEM SET sga_target=512M CONTAINER=CURRENT;

Pour identifier les paramètres modifiables au niveau PDB :

SELECT name, value FROM v$parameter WHERE ispdb_modifiable = 'TRUE';

Système d'instantanés (PDB Snapshots)

Introduits pour optimiser les tests et la récupération, les snapshots capturent l'état d'une PDB à un instant T. Par défaut, Oracle peut conserver jusqu'à 8 instantanés (configurable via MAX_PDB_SNAPSHOTS).

Configuration des modes de capture

-- Mode manuel (par défaut)
CREATE PLUGGABLE DATABASE pdb_test SNAPSHOT MODE MANUAL;

-- Mode automatique (intervalle temporel)
ALTER PLUGGABLE DATABASE pdb_test SNAPSHOT MODE EVERY 12 HOURS;

Utilisation des instantanés

Les snapshots permettent de créer de nouvelles PDB pour l'analyse de données historiques ou pour effectuer un "flashback" manuel en cas d'erreru applicative.

-- Création d'un snapshot manuel
ALTER PLUGGABLE DATABASE pdb_test SNAPSHOT snap_avant_maj;

-- Création d'une PDB à partir d'un snapshot nommé
CREATE PLUGGABLE DATABASE pdb_audit FROM pdb_test USING SNAPSHOT snap_avant_maj;

-- Consultation des snapshots existants
SELECT con_name, snapshot_name, snapshot_scn, snapshot_time FROM cdb_pdb_snapshots;

Pour restaurer une PDB à partir d'un snapshot : fermez la PDB d'origine, créez une nouvelle PDB depuis le snapshot, supprimez l'ancienne et renommez la nouvelle.

Étiquettes: Oracle PDB Multitenant database-administration Oracle-18c

Publié le 8 septembre à 11h59