ایجاد و بروزرسانی pdb به صورت از راه دور

ایجاد یک pdb از pdb دیگر بصورت از راه دور(با کمک dblink) در اوراکل 12.1.0.2 قابل انجام است منتهی بروزرسانی این pdb)pdb کپی شده) بعد از ایجاد، در این نسخه امکان پذیر نخواهد بود و همچنین، pdb مبدا در زمان انجام کپی، باید در حالت read only قرار داشته باشد.

در اوراکل 12cR2، علاوه بر قابلیت کپی از راه دور یک pdb ان هم به صورت کاملا انلاین(pdb مبدا می تواند در حالت سرویس دهی قرار داشته باشد)، قابلیت بروزرسانی هم ارائه شد به طور کلی، در این نسخه می توان یک pdb را به سه روش زیر از بانک اطلاعاتی دیگر کپی و در مورد شیوه بروزرسانی ان اعمال نظر کرد:

1.غیر قابل بروز رسانی: در این روش، بعد از ایجاد pdb، قابلیت بروزرسانی آن وجود نخواهد داشت پس برای ایجاد pdb، صرفا کافیست بعد از ساخت Database Link، آن را(pdb جدید) با کمک دستور create pluggable database ایجاد کرده و در نهایت در حالت open read write قرار داد:

SQL> create database link DEST_LINK connect to USEF using ‘CDB18c’;

SQL> CREATE PLUGGABLE DATABASE pdb_non_refresh FROM PDB18C@dest_link REFRESH MODE NONE;

Pluggable database altered.

SQL> alter pluggable database PDB_NON_REFRESH open;

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED

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

         3 PDB_NON_REFRESH                READ WRITE NO

 

 2.بروزرسانی به روش دستی: در این روش می توان pdb کپی شده را بصورت دستی با کمک pdb از راه دور بروزرسانی کرد البته بعد از ایجاد pdb به این روش، تنها می توان ان را در حالت  read only open قرار داد(برای گزارش گیری) و امکان باز کردن ان به صورت read write وجود نخواهد داشت:

 SQL>CREATE PLUGGABLE DATABASE manual_pdb FROM PDB18C@dest_link REFRESH MODE MANUAL; 

Pluggable database altered.

SQL> alter pluggable database MANUAL_PDB open;

ORA-65341: cannot open pluggable database in read/write mode

SQL> alter pluggable database MANUAL_PDB open read only;

Pluggable database altered.

همچنین برای بروز رسانی این pdb، باید آن را در وضیعت mounted قرار داد:

SQL> ALTER PLUGGABLE DATABASE MANUAL_PDB REFRESH;

ORA-65025: Pluggable database MANUAL_PDB is not closed on all instances.

SQL> alter pluggable database MANUAL_PDB close;

Pluggable database altered.

SQL> ALTER PLUGGABLE DATABASE MANUAL_PDB REFRESH;

Pluggable database altered.

در زمان این بروزرسانی، پیامهای زیر در alert log قابل مشاهده می باشند:

2018-04-21T15:27:06.040311+04:30
ALTER PLUGGABLE DATABASE MANUAL_PDB REFRESH
2018-04-21T15:27:08.061904+04:30
Applying media recovery for pdb-4099 from SCN 6032366 to SCN 6032372
Remote log information: count-1
thr-1, seq-3, logfile-/u01/arch/parlog_1_3_27d6a2c_974028799.arc, los-1610239, nxs-18446744073709551615
MANUAL_PDB(4):Media Recovery Start
2018-04-21T15:27:08.063387+04:30
MANUAL_PDB(4):Serial Media Recovery started
MANUAL_PDB(4):max_pdb is 9
2018-04-21T15:27:08.130375+04:30
MANUAL_PDB(4):Media Recovery Log /u01/arch/parlog_1_3_27d6a2c_974028799.arc
2018-04-21T15:27:08.349375+04:30
MANUAL_PDB(4):Incomplete Recovery applied until change 6032372 time 04/21/2018 15:26:42
2018-04-21T15:27:08.352087+04:30
MANUAL_PDB(4):Media Recovery Complete (usefdb18)
Completed: ALTER PLUGGABLE DATABASE MANUAL_PDB REFRESH

برای مشاهده اثر این بروزرسانی، تغییراتی را در pdb18c اعمال می کنیم تا بررسی کنیم این تغییرات در manual_pdb اعمال خواهند شد یا خیر:

 SQL> alter session set container=PDB18C;

SQL> create table tbl(last_name varchar2(9));

SQL> insert into tbl values(‘USEFZADEH’);

 بعد از بروزرسانی manual_pdb، تغییرات را بررسی می کنیم:

 SQL> ALTER PLUGGABLE DATABASE MANUAL_PDB REFRESH;

SQL> alter pluggable database MANUAL_PDB open read only;

SQL> alter session set container=MANUAL_PDB;

SQL> select * from tbl;

LAST_NAME

———

USEFZADEH

تغییرات در manual_pdb به درستی اعمال شده است.

3.بروزرسانی خودکار: pdb ایجاد شده دقیقا مشابه manual pdb می باشد با این تفاوت که با ایجاد یک scheduler_job در پس زمینه، بروزرسانی را به صورت خودکار انجام می شود:

SQL> CREATE PLUGGABLE DATABASE Automatically_pdb FROM PDB18C@dest_link REFRESH MODE EVERY 1 MINUTES;

Pluggable database altered.

 مشاهده مشخصات scheduler_job:

select owner,job_name from dba_scheduler_jobs where job_name like ‘%AUTOMATIC%’;

SYS          AUTOMATICALLY_PDB_2539133358_REFRESH

همچنین در هر یک دقیقه(بر اساس زمان تعیین شده)، پیامهایی به جهت بروزرسانی در alert log قابل مشاهده خواهند بود:

2018-04-21T15:36:59.287246+04:30
AUTOMATICALLY_PDB(5):alter pluggable database refresh
2018-04-21T15:37:02.260273+04:30
Applying media recovery for pdb-4099 from SCN 6033636 to SCN 6033665
Remote log information: count-1
thr-1, seq-3, logfile-/u01/arch/parlog_1_3_27d6a2c_974028799.arc, los-1610239, nxs-18446744073709551615
AUTOMATICALLY_PDB(5):Media Recovery Start
2018-04-21T15:37:02.261849+04:30
AUTOMATICALLY_PDB(5):Serial Media Recovery started
AUTOMATICALLY_PDB(5):max_pdb is 9
2018-04-21T15:37:02.334578+04:30
AUTOMATICALLY_PDB(5):Media Recovery Log /u01/arch/parlog_1_3_27d6a2c_974028799.arc
2018-04-21T15:37:02.562613+04:30
AUTOMATICALLY_PDB(5):Incomplete Recovery applied until change 6033665 time 04/21/2018 15:36:35
2018-04-21T15:37:02.565688+04:30
AUTOMATICALLY_PDB(5):Media Recovery Complete (usefdb18)
AUTOMATICALLY_PDB(5):Completed: alter pluggable database refresh

برای خارج کردن یک pdb از فرایند بروزرسانی، می توان از دستورات زیر استفاده کرد:

 SQL> alter pluggable database AUTOMATICALLY_PDB close;

ORA-65020: pluggable database AUTOMATICALLY_PDB already closed 

SQL> alter pluggable database AUTOMATICALLY_PDB REFRESH MODE NONE;

Pluggable database altered.

SQL> alter pluggable database AUTOMATICALLY_PDB open;

Pluggable database altered.

SQL> alter session set container=AUTOMATICALLY_PDB;

Session altered.

SQL> show pdbs   

CON_ID CON_NAME                       OPEN MODE  RESTRICTED

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

5 AUTOMATICALLY_PDB              READ WRITE NO 

بعد از اجرای این دستورات، قابلیت بروزرسانی این pdb از بین خواهد رفت و می توان از این pdb برای سرویس دهی به صورت read write استفاده کرد.

پ.ن 1:دیتافایلهای مربوط به pdbهای کلون، در مسیری که برای پارامتر db_create_file_dest تعیین شده است، ایجاد خواهند شد.

پ.ن 2:دستور زیر، حالت بروزرسانی هر کدام از pdbها را نشان می دهد:

 SQL> SELECT pdb_name, refresh_mode, refresh_interval FROM dba_pdbs;

PDB_NAME             REFRES REFRESH_INTERVAL

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

MANUAL_PDB              MANUAL

AUTOMATICALLY_PDB    AUTO                  1

PDB_NON_REFRESH      NONE

 

ارتباط با نویسنده مطلب:vahidusefzadeh@ کانال تخصصی اوراکل و لینوکس: OracleDB@

Comment (1)

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد.