Comment créer une PDB
CREAR UNA APPLICATION PDB DATABASE
Los «contenedores de aplicación» es una característica de la versión 12 versión 2 (12.2). Un «application container» es un componente CDB opcional para almacenar datos y metadatos para una aplicación. Un CDB tiene 0 o varios contenedores de aplicaciones. Cada aplicación está compuesta por una configuración, metadatos y objetos compartidos. Podemos por tanto definirlo como un contenedor de aplicaciones compartidas, donde se pueden albergar diferentes versiones de la misma.
Applicantion Containers pueden ser creado de diferentes formas: desde PDBD seed, clonando PDBS, pluggind or unplugged de PDB, pero en todos los casos se usa el comando CREATE PLUGGABLE DATABASE, incluyendo la cláusula «APPLICATION CONTAINER». Para crear una Application container, debes de estar conectado al CDB root, y este debe estart abierto en modo «read write», y el nombre de la applicaton container debe de ser único.
1) Déclaration de création de la base de données en tant que conteneur d'application.
À titre d'exemple, nous allons créer un conteneur d'application pour les jouets que nous appellerons "toys_root".
CREATE PLUGGABLE DATABASE toys_root AS APPLICATION CONTAINER
ADMIN USER admin identified by ****
ROLES=(CONNECT)
CREATE_FILE_DEST=’/u02/app/oracle/oradata/ORCL/toys_root’;
/
2) Con la siguiente consulta, podemos comprobar qué tipo de PDBs hemos creado en nuestra arquitectura.
El resultado mostrará nuestra Application PDB como «Application root» a YES.

3) Nous ouvrons la base de données que nous venons de créer.
alter pluggable database TOYS_ROOT open ;
Una vez creada Application Container PDB, ya podemos realizar una prueba de cómo se gestionan las versiones de APP y cómo estas versiones se pueden replicar entre las diferentes PDBS.
4) Creamos una versión de aplicación de la PDB.
Conectados a la PDB TOYS_ROOT ejecutamos.
ALTER PLUGGABLE DATABASE application TOYS_APP begin install '1.0' ;
Nous lui demandons ainsi de créer une version d'une application que nous appellerons TOYS_APP et dont la version sera 1.0.
5) Nous vérifions que le CBD a été créé correctement.
select app_name, app_version, app_status
from dba_applications
where app_name='TOYS_APP' ;

6) Nous créons un tbs de test, un utilisateur et lui donnons les permissions nécessaires :
set echo on
create tablespace toys_tbs datafile size 100M autoextend on next 10M maxsize 200M ;
create user toys_owner identified by **** container=all ;
grant create session, dba to toys_owner ;
alter user toys_owner default tablespace toys_tbs ;
Nous créons une nouvelle table afin de vérifier qu'elle se réplique correctement. Il s'agira de la version 1.0. de notre application TOYS_APP.
SQL> CREATE TABLE toys_owner.raul (one number, two varchar(2)) ;
Table créée.
SQL> insert into toys_owner. raul values(1,'r') ;
1 ligne créée.
SQL> commit ;
Commit complete.
7) Fermez l'installation de l'"application".
ALTER PLUGGABLE DATABASE application TOYS_APP end install '1.0' ;
8) Nous vérifions maintenant l'état de la demande
select app_name, app_version, app_status
from dba_applications
where app_name='TOYS_APP';
APP_NAME APP_VERSION APP_STATUS
-------------------------------
TOYS_APP 1.0 NORMAL
9) Réplication entre conteneurs
Pour le test, nous allons créer deux nouveaux PDBS, en l'occurrence "robots" et "poupées".
CREATE PLUGGABLE database robots
admin user admin identified by ***
CREATE_FILE_DEST=
'/u02/app/oracle/oradata/ORCL/toys_root/robots'
Pluggable database created.
SQL> alter pluggable database robots open;
Pluggable database altered.
CREATE PLUGGABLE database dolls
admin user admin identified by ***
CREATE_FILE_DEST=
‘/u02/app/oracle/oradata/ORCL/toys_root/dolls’;
SQL> alter pluggable database dolls open;
Pluggable database altered.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
2 PDB$SEED READ ONLY NO
3 TOYS_ROOT READ WRITE NO
4 PDB1 READ WRITE NO
5 TOYS_ROOT$SEED READ WRITE NO
6 ROBOTS READ WRITE NO
7 DOLLS READ WRITE NO
Nous allons maintenant dans les conteneurs nouvellement recréés pour effectuer la synchronisation de notre application.
Nous passons au conteneur ROBOTS et rafraîchissons l'application, dans ce cas tst_app
SQL> ALTER SESSION SET CONTAINER=ROBOTS;
Session altered.
SQL> ALTER PLUGGABLE DATABASE APPLICATION TOYS_APP SYNC ;
Pluggable database altered.
Nous vérifions que le tableau a été actualisé
SQL> show con_name
CON_NAME
------------------------------
ROBOTS
SQL> DESC TOYS_OWNER.RAUL
Name Null? Type
---------------------------------- -------- -----------------------
UNO NUMBER
DOS VARCHAR2(2)
SQL> select * from toys_owner.raul;
UNO DO
---------- --
1 r
Vamos a realizar la misma operación de sincronización en la otra PDB.
SQL> ALTER SESSION SET CONTAINER=DOLLS ;
Session modifiée.
Et nous effectuons la même opération. Nous synchronisons l'application :
SQL> ALTER PLUGGABLE DATABASE APPLICATION TOYS_APP SYNC ;
Base de données enfichable modifiée.
Nous vérifions que la table a été répliquée :
SQL> desc toys_owner.raul
Nom Null ? Type
UNO NUMBER
DOS VARCHAR2(2)
SQL> select * from toys_owner.raul ;
UNO DO
1 r
A tout moment vous pourrez connaître l'état de votre APP, son état et sa version
Vous pouvez le vérifier avec une requête similaire à la suivante, où vous indiquez le nom de l'APP, son id, son état, si elle est implicite ou non, etc.
select app_name, app_version, app_id, app_status,
app_implicit implicit
from dba_applications ;
APP_NAME APP_VERSION APP_ID APP_STATUS I ---------------------------------------- ------------------------------ ---------- ------------ - TOYS_APP 1.0 2 NORMAL N
10) Mettre à jour notre APP.
Une fois que nous avons créé et vérifié le fonctionnement du conteneur d'application, nous pouvons créer différentes versions de celui-ci, ou supprimer une version de l'APP lorsqu'elle n'est plus valide.
Pour mettre à jour la version de notre APP, nous devons utiliser les commandes begin upgrade / end upgrade, bien sûr à l'intérieur de l'APP_ROOT.
SQL> alter pluggable database application TOYS_APP1 begin upgrade '1.0' to '1.1' ;
Pluggable database altered.
SQL> insert into toys_owner. raul values(2,'d') ;
1 row created.
SQL> commit ;
Commit complete.
SQL> alter pluggable database application TOYS_APP1 end upgrade ;
Base de données enfichable modifiée.
SQL> alter session set container=DOLLS ;
SQL> ALTER PLUGGABLE DATABASE APPLICATION TOYS_APP1 SYNC ;
Base de données enfichable modifiée.
SQL> SELECT * FROM TOYS_OWNER.RAUL ;
ONE TWO
---------- --
1 r
2 d
11) Désinstallation d'une application
Pour désinstaller une application, il faut effectuer les opérations suivantes :
SQL> ALTER PLUGGABLE DATABASE APPLICATION TOYS_APP BEGIN UNINSTALL ; Base de données enfichable modifiée. SQL> drop user toys_owner cascade ; utilisateur supprimé. SQL> drop tablespace TOYS_TBS INCLUANT CONTENU ET DATAFILES ; tablespace abandonné SQL> ALTER PLUGGABLE DATABASE APPLICATION TOYS_APP END UNINSTALL ; Base de données enfichable modifiée.
En definitiva, Oracle nos permite tener «versiones» de diferentes aplicaciones, que pueden ser sincronizadas a través de las PDB, actualizadas, clonadas, etc.

