Artarad_Oracle_Application_Container

Application Containers در اوراکل ۱۲٫۲ بخش سوم

مقدمه
در مقاله پیشین، روش های مختلفی برای ایجاد PDBها و Seedها آموختیم در نظر داشته باشید که در بخش قبل فقط یک برنامه ایجاد کردیم ولی می توان در یک Application Container چندین برنامه ایجاد کرد. در ادامه به ایجاد انواع دیگری از Application PDBها و Application Seedها خواهیم پرداخت.

پیاده سازی سناریو
اکنون یک Application PDB با نام west_app_pdb از یک Application Seed همگام سازی شده ایجاد می-کنیم.
ایجاد Application PDB از روی Application Seed همگام سازی شده

SALES_APP_ROOT>ho mkdir -p /u01/app/oracle/oradata/orclcdb/sales_app_root/west_app_pdb

SALES_APP_ROOT>CREATE PLUGGABLE DATABASE west_app_pdb

ADMIN USER pdb_admin IDENTIFIED BY oracle

CREATE_FILE_DEST=’/u01/app/oracle/oradata/orclcdb/sales_app_root/west_app_pdb’;

SALES_APP_ROOT>@get_app_containers

CON_ID NAME OPEN_MODE APP_ROOT APP_PDB APP_SEED

———- ——————– ———- ——– ——– ——–

۳ SALES_APP_ROOT READ WRITE YES NO NO

۴ NORTH_APP_PDB READ WRITE NO YES NO

۵ SALES_APP_ROOT$SEED READ WRITE NO YES YES

۶ WEST_APP_PDB MOUNTED NO YES NO

۸ EAST_APP_PDB READ WRITE NO YES NO

SALES_APP_ROOT>alter pluggable database west_app_pdb open;

sho pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED

———- —————————— ———- ———-

۳ SALES_APP_ROOT READ WRITE NO

۴ NORTH_APP_PDB READ WRITE NO

۵ SALES_APP_ROOT$SEED READ WRITE NO

۶ WEST_APP_PDB READ WRITE NO

۸ EAST_APP_PDB READ WRITE NO

Application PDB west_app_pdb را بررسی می کنیم تا اطمینان حاصل شود از که همگام سازی شده است، زیرا ااز یک Application Seed همگام سازی شده ایجاد شده است.

SALES_APP_ROOT>@get_app_pdb_status

NAME CON_UID APP_NAME APP_VERSIO APP_STATUS

——————– ———- ——————– ———- ———–

NORTH_APP_PDB 2659474630 SALES_APP 1.0 NORMAL

SALES_APP_ROOT$SEED 651701329 SALES_APP 1.0 NORMAL

WEST_APP_PDB 2183572329 SALES_APP 1.0 NORMAL

بنابراین زمانی که یک Application PDB از روی یک Application Seed همگام سازی شده ایجاد می شود، آن PDB با Application Root همگام سازی شده است.
ما دیدیم که زمانی که Application Seed را از روی CDB Seed ساخته ایم نیاز به همگامسازی دستی داریم.
دراینجا ما Application Seed را حذف می کنیم و سپس مجددا از Application Root آن را می سازیم.
ایجاد Application Seed از Application Root
–حذف Application Seed

SALES_APP_ROOT>ALTER PLUGGABLE DATABASE sales_app_root$SEED CLOSE IMMEDIATE;

DROP PLUGGABLE DATABASE sales_app_root$SEED INCLUDING DATAFILES;

Pluggable database dropped.

SALES_APP_ROOT>sho pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED

———- —————————— ———- ———-

۳ SALES_APP_ROOT READ WRITE NO

۴ NORTH_APP_PDB READ WRITE NO

۶ WEST_APP_PDB READ WRITE NO

۸ EAST_APP_PDB READ WRITE NO

–ایجاد Application Seed از Application Root و Open کردن آن

SALES_APP_ROOT>CREATE PLUGGABLE DATABASE AS SEED FROM sales_app_root;

Pluggable database created.

SALES_APP_ROOT>@get_app_containers

CON_ID NAME OPEN_MODE APP_ROOT APP_PDB APP_SEED

———- ——————– ———- ——– ——– ——–

۳ SALES_APP_ROOT READ WRITE YES NO NO

۴ NORTH_APP_PDB READ WRITE NO YES NO

۶ WEST_APP_PDB READ WRITE NO YES NO

۷ SALES_APP_ROOT$SEED MOUNTED NO YES YES

۸ EAST_APP_PDB READ WRITE NO YES NO

زمانی که Application Seed را Open می کنیم، یک خطا در خصوص لزوم اجرای اسکریپت pdb_to_apppdb.sql درPDB معمولی ایجاد شده دریافت می کنیم برای تبدیل کامل آن به Application PDB.

SALES_APP_ROOT>ALTER PLUGGABLE DATABASE SALES_APP_ROOT$SEED OPEN;

Warning: PDB altered with errors.

SALES_APP_ROOT> SELECT cause, type, message, status, action

FROM pdb_plug_in_violations

WHERE name=’SALES_APP_ROOT$SEED’;

CAUSE TYPE MESSAGE STATUS ACTION

————— ——— —————————— ——— ——————————

Non-Application ERROR Non-Application PDB plugged in PENDING Run pdb_to_apppdb.sql.

PDB to Applica as an Application PDB, requir

tion PDB es pdb_to_apppdb.sql be run.

CDB$ROOT>alter session set container= SALES_APP_ROOT$SEED;

set sqlprompt SALES_APP_ROOT$SEED>

SALES_APP_ROOT$SEED>alter pluggable database SALES_APP_ROOT$SEED close immediate;

alter pluggable database SALES_APP_ROOT$SEED open;

SALES_APP_ROOT$SEED>@?/rdbms/admin/pdb_to_apppdb

….. Part of the output follows . . . .

SALES_APP_ROOT$SEED>– leave the PDB in the same state it was when we started

SALES_APP_ROOT$SEED>BEGIN

۲ execute immediate ‘&open_sql &restricted_state’;

۳ EXCEPTION

۴ WHEN OTHERS THEN

۵ BEGIN

۶ IF (sqlcode <> -900) THEN

۷ RAISE;

۸ END IF;

۹ END;

۱۰ END;

۱۱ /

PL/SQL procedure successfully completed.

SALES_APP_ROOT$SEED>

SALES_APP_ROOT$SEED>WHENEVER SQLERROR CONTINUE;

SALES_APP_ROOT>

پس از اجرای کامل اسکریپت pdb_to_apppdb.sql

SALES_APP_ROOT> SELECT cause, type, message, status, action

` FROM pdb_plug_in_violations

WHERE name=’SALES_APP_ROOT$SEED’;

CAUSE TYPE MESSAGE STATUS ACTION

————— ——– —————————— ——— —————-

Non-Application ERROR Non-Application PDB plugged in RESOLVED Run pdb_to_apppdb.sql

PDB to Applica as an Application PDB, requir

tion PDB es pdb_to_apppdb.sql be run.

SALES_APP_ROOT>sho pdbs 

CON_ID CON_NAME OPEN MODE RESTRICTED

———- —————————— ———- ———-

۳ SALES_APP_ROOT READ WRITE NO

۴ NORTH_APP_PDB READ WRITE NO

۶ WEST_APP_PDB READ WRITE NO

۷ SALES_APP_ROOT$SEED READ WRITE YES

۸ EAST_APP_PDB READ WRITE NO

توجه داشته باشید که Application Seed فقط تا زمانی که از Application Root ایجاد شده است با آن همگام سازی شده است.

SALES_APP_ROOT>@get_app_pdb_status

NAME CON_UID APP_NAME APP_VERSIO APP_STATUS

——————– ———- ——————– ———- ————

NORTH_APP_PDB 2659474630 SALES_APP 1.0 NORMAL

WEST_APP_PDB 2183572329 SALES_APP 1.0 NORMAL

SALES_APP_ROOT$SEED 1481998572 SALES_APP 1.0 NORMAL

ما دیدیم که Application Seed ایجاد شده با Application Root همگام سازی شده بود، اما برای تبدیل non-application PDB به Application PDB باید اسکریپت pdb_to_apppdb.sql اجرا شود.
روش دیگر ایجاد Application Seed همگام سازی شده، ایجاد آن از روی یک Application PDB همگام سازی شده است. در این مورد لازم به اجرای اسکریپت pdb_to_apppdb.sql نمی باشد.
ایجاد Application Seed از روی Application PDB همگام سازی شده
ما Application Seed را حذف و مجددا از روی Application PDB north_app_pdb ایجاد خواهیم کرد
–حذف Application Seed

SALES_APP_ROOT>ALTER PLUGGABLE DATABASE sales_app_root$SEED CLOSE IMMEDIATE;

DROP PLUGGABLE DATABASE sales_app_root$SEED INCLUDING DATAFILES;

sho pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED

———- —————————— ———- ———-

۳ SALES_APP_ROOT READ WRITE NO

۴ NORTH_APP_PDB READ WRITE NO

۶ WEST_APP_PDB READ WRITE NO

۸ EAST_APP_PDB READ WRITE NO

–ایجاد مجدد Application Seed از روی Application PDB همگام سازی شده

SALES_APP_ROOT>CREATE PLUGGABLE DATABASE AS SEED FROM north_app_pdb

CREATE_FILE_DEST=’/u01/app/oracle/oradata/orclcdb/sales_app_root/sales_app_root_seed’;

Pluggable database created.

SALES_APP_ROOT>ALTER PLUGGABLE DATABASE sales_app_root$SEED OPEN;

@get_app_containers

CON_ID NAME OPEN_MODE APP_ROOT APP_PDB APP_SEED

———- ——————– ———- ——– ——– ——–

۳ SALES_APP_ROOT READ WRITE YES NO NO

۴ NORTH_APP_PDB READ WRITE NO YES NO

۵ SALES_APP_ROOT$SEED READ WRITE NO YES YES

۶ WEST_APP_PDB READ WRITE NO YES NO

۸ EAST_APP_PDB READ WRITE NO YES NO

ما می توانیم ببینیم که Application Seed ایجاد شده به طور خودکار همگام سازی شده است، زیرا از روی یک Application PDB همگام سازی شده ایجاد شده است.

SALES_APP_ROOT>@get_app_pdb_status

NAME CON_UID APP_NAME APP_VERSIO APP_STATUS

——————– ———- ——————– ———- ———-

NORTH_APP_PDB 2659474630 SALES_APP 1.0 NORMAL

WEST_APP_PDB 2183572329 SALES_APP 1.0 NORMAL

SALES_APP_ROOT$SEED 375608118 SALES_APP 1.0 NORMAL

بطور مشابه، اگر Application Seed از روی Application PDB ایجاد می شد که همگام سازی نشده بود، Application Seed نیز بدون همگام سازی ایجاد می شد.
از این رو، وضعیت همگام سازی Application Seed ایجاد شده مشابه است با Application PDB منبع آن.
در ادامه ایجاد یک Application PDB: south_app_pdb از روی یک Application PDB همگام سازی شده را خواهیم آموخت.
ایجاد یک Application PDB از روی Application PDB همگام سازی شده

SALES_APP_ROOT>ho mkdir -p /u01/app/oracle/oradata/orclcdb/sales_app_root/south_app_pdb

SALES_APP_ROOT>CREATE PLUGGABLE DATABASE south_app_pdb FROM north_app_pdb

CREATE_FILE_DEST=’/u01/app/oracle/oradata/orclcdb/sales_app_root/south_app_pdb’;

Pluggable database created.

SALES_APP_ROOT>alter pluggable database south_app_pdb open;

@get_app_containers

CON_ID NAME OPEN_MODE APP_ROOT APP_PDB APP_SEED

———- ——————– ———- ——– ——– ——–

۳ SALES_APP_ROOT READ WRITE YES NO NO

۴ NORTH_APP_PDB READ WRITE NO YES NO

۵ SALES_APP_ROOT$SEED READ WRITE NO YES YES

۶ WEST_APP_PDB READ WRITE NO YES NO

۷ SOUTH_APP_PDB READ WRITE NO YES NO

۸ EAST_APP_PDB READ WRITE NO YES NO

۶ rows selected.

Application PDB:south_app_pdb ایجاد شده با برنامه sales_app همگام سازی شده است، زیرا منبع ایجاد آن، یعنی north_app_pdb با برنامه sales_app همگام سازی شده است.

SALES_APP_ROOT>@get_app_pdb_status

NAME CON_UID APP_NAME APP_VERSIO APP_STATUS

——————– ———- ——————– ———- ————

NORTH_APP_PDB 2659474630 SALES_APP 1.0 NORMAL

WEST_APP_PDB 2183572329 SALES_APP 1.0 NORMAL

SALES_APP_ROOT$SEED 375608118 SALES_APP 1.0 NORMAL

SOUTH_APP_PDB 2255926930 SALES_APP 1.0 NORMAL

اگر Application PDB ایجاد شده از روی یک منبعی باشد که همگام سازی نشده باشد، Application PDB ایجاد شده نیز همگام سازی نشده است. درنتیجه وضعیت همگام سازی Application PDB به وضعیت منبع آن وابسته است.

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *