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 به وضعیت منبع آن وابسته است.
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.