блог Oracle на испанском языке

Как создать PDB PDB

СОЗДАТЬ PDB

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) Оператор для создания базы данных как контейнера приложений.

В качестве примера мы создадим контейнер приложений для игрушек под названием «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) С помощью следующего запроса мы можем проверить, какие типы PDB-файлов были созданы в нашей архитектуре.

В результате наш Application PDB будет отображаться PDB «Application root» с значением YES.

3) Открываем базу данных, которую мы только что создали.

alter pluggable database TOYS_ROOT open;

После создания PDBконтейнера приложения мы можем проверить, как осуществляется управление версиями приложений и как эти версии можно реплицировать между различными PDB-контейнерами.

4) Создаем версию приложения из PDB.

Подключившись к PDB , запускаем.

ALTER PLUGGABLE DATABASE application TOYS_APP begin install ‘1.0’;

Тем самым мы указываем, что создается версия приложения, которую мы назовем TOYS_APP, и версия которой будет 1.0.

5) Comprobamos si la CDB se ha creado correctamente.

select app_name, app_version, app_status
from dba_applications
where app_name=’TOYS_APP’;

6) Создаем тестовый tbs, пользователя и предоставляем необходимые разрешения:

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;

Создаем новую таблицу, чтобы проверить, правильно ли она реплицируется. Это будет версия 1.0 нашего приложения TOYS_APP.

SQL> CREATE TABLE toys_owner.raul (uno number, dos varchar(2));
Table created.
SQL> insert into toys_owner. raul values(1,’r’);
1 row created.
SQL> commit;
Commit complete.

7) Завершаем Установка «приложения»

ALTER PLUGGABLE DATABASE application TOYS_APP end install ‘1.0’;

8) Проверяем теперь состояние приложения

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) Репликация между контейнерами

Для проведения теста создадим две новые PDB, в данном случае «robots» и «dolls».

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 READ ONLY NO
3 TOYS_ROOT READ WRITE NO
4 PDB1 READ WRITE NO
5 TOYS_ROOT$SEED READ WRITE NO
6ROBOTS READWRITE NO
7DOLLS READWRITE NO

Теперь переходим к недавно воссозданным контейнерам для синхронизации нашего приложения.

Переключаемся на контейнер ROBOTS и обновляем приложение, в данном случае tst_app

SQL> ALTER SESSION SET CONTAINER=ROBOTS;

Session altered.

SQL> ALTER PLUGGABLE DATABASE APPLICATION TOYS_APP SYNC ;

Pluggable database altered.

Проверяем, что таблица была обновлена

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

Давайте выполним ту же операцию синхронизации в другом PDB.

SQL> ALTER SESSION SET CONTAINER=DOLLS;
Session altered.

И выполняем ту же операцию. Синхронизируем приложение:

SQL> ALTER PLUGGABLE DATABASE APPLICATION TOYS_APP SYNC ;
Pluggable database altered.

Проверяем, что таблица была реплицирована:

SQL> desc toys_owner.raul
Name Null? Type
UNO NUMBER
DOS VARCHAR2(2)

SQL> select * from toys_owner.raul;
UNO DO
1 r

В любой момент вы можете узнать состояние вашего APP, каково его текущее состояние и версия

Вы можете проверить это с помощью запроса, подобного следующему, где указано имя APP, его идентификатор, состояние, является ли оно неявным и т. д.

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) Обновление версии нашего APP.

После того, как мы создали и проверили работу Application Container, мы можем создавать разные версии приложения или удалять версию APP, когда она больше недействительна.

Чтобы обновить версию нашего APP, мы должны использовать команды begin upgrade / end upgrade, конечно, внутри 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;
Pluggable database altered.

SQL> alter session set container=DOLLS;
SQL> ALTER PLUGGABLE DATABASE APPLICATION TOYS_APP1 SYNC;
Pluggable database altered.

 SQL> SELECT * FROM TOYS_OWNER.RAUL;
   UNO DOS
---------- --
     1 r
     2 d

11) Удаление приложения

Чтобы удалить приложение, мы должны выполнить следующие действия:

SQL> ALTER PLUGGABLE DATABASE APPLICATION TOYS_APP BEGIN UNINSTALL;
Pluggable database altered.

SQL> drop user toys_owner cascade;
user dropped.

SQL> drop tablespace TOYS_TBS INCLUDING CONTENTS AND DATAFILES;
tablespace dropped

SQL> ALTER PLUGGABLE DATABASE APPLICATION TOYS_APP END UNINSTALL;
Pluggable database altered.

В конечном итоге Oracle позволяет нам иметь «версии» различных приложений, которые можно синхронизировать через PDB, обновлять, клонировать и т. д.

Теги:
Oracle ACE