تعویض PDBهای Refreshable در پایگاهداده اوراکل ۱۸c
مقدمه
در پایگاهداده اوراکل ۱۲٫۲ مفهومی از کلون pdb تجدیدپذیر (refreshable clone pdb) معرفی شد. اما در اوراکل ۱۸c امکان دیگری هم فراهم شده تا شما بتوانید نقش بین pdb منبع و یک pdb تجدیدپذیر را تغییر دهید.
پیشنیاز
این ویژگی درحال حاضر به نسخه سازمانی (Enterprise Edition) روی سیستم های مهندسی شده مثل Exadata محدود شده است، اما در تمام نسخه های موجود در Oracle Database Cloud Services قابل استفاده میباشد. در اینجا یک راه حل برای تست آن، با فعال کردن پارامتر “exadata_feature_on_” وجود دارد.
export ORACLE_SID=cdb1
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES
sqlplus / as sysdba <<EOF
alter system set “_exadata_feature_on”=true scope=spfile;
shutdown immediate;
startup;
exit;
EOF
همانطور که می دانید Pdbهای تجدیدپذیر، یک pdb درحالت open read-only می باشند که مرتباً بروزرسانی شده و معمولاً برای منبع pdbهای دیگر و یا برای گزارش¬گیری استفاده می¬شوند.
از آنجایی که ما می خواهیم نقش ها را تغییر دهیم، نیاز به تکمیل کردن چند مرحله اضافی نسبت به pdbهای تجدیدپذیر معمولی داریم.
-هردو اینستنس (Instances) باید در حالت archivelog باشند، زیرا ما سوییچینگ (switchovers) را در هر دو جهت انجام می دهیم.
-در هر دو طرف نیاز به dblink داریم، که از امتیازات یکسان برخوردار باشند.
در مثال های زیر دو پایگاهداده در یک ماشین مجازی اجرا می شوند اما می توان آن ها را در سرورهای فیزیکی و مجازی جداگانه نیز اجرا کرد.
Cdb1: cdb محلی (Local)، که درنهایت کلون تجدیدپذیر را می سازد (pdb5_ro)
Cdb2: cdb ریموت، که برای pdb منبع استفاده شده است (pdb5)
ایجاد pdb تجدیدپذیر
به پایگاهداده محلی متصل میشویم، یک pdb در پایگاهداده محلی توسط کلون کردن از pdb ریموت ایجاد میکنیم.
sqlplus / as sysdba
CREATE PLUGGABLE DATABASE pdb5_ro FROM pdb5@clone_link
REFRESH MODE MANUAL;
ALTER PLUGGABLE DATABASE pdb5_ro OPEN READ ONLY;
تغییر نقش
بررسی کنید pdb تجدید پذیر Open و در حالت Read-Only باشد.
export ORACLE_SID=cdb1
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES
sqlplus / as sysdba
SELECT open_mode
FROM v$pdbs
WHERE name = ‘PDB5_RO’;
OPEN_MODE
———-
READ ONLY
SQL>
به پایگاهداده منبع متصل شده و نقش آن را تغییر داده و pdb را Open و در حالت Read-Only قرار میدهیم.
ما باید یک حالت بروز شدن (refresh mode) معتبر (جزء None) مشخص کنیم، که در این مثال از حالت دستی (MANUAL) استفاده می کنیم.
export ORACLE_SID=cdb3
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES
sqlplus / as sysdba
ALTER SESSION SET CONTAINER = pdb5;
ALTER PLUGGABLE DATABASE
REFRESH MODE MANUAL
FROM pdb5_ro@clone_link
SWITCHOVER;
ALTER PLUGGABLE DATABASE OPEN READ ONLY;
ما می توانیم pdb منبع اصلی را به عنوان pdb تجدیدپذیر ببینیم.
SELECT status, refresh_mode
FROM dba_pdbs
WHERE pdb_name = ‘PDB5’;
STATUS REFRES
———- ——
REFRESHING MANUAL
SQL>
همچنین می توانیم این pdb را به طور معمول بروز کنیم.
ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE REFRESH;
ALTER PLUGGABLE DATABASE OPEN READ ONLY;
تغییر نقش (سوییچ به عقب)
ضمناً می توانیم با تغییر نقش، pdbها را به نقش اصلی خود بازگردانیم.
به پایگاهداده اصلی جدید متصل شوید، تغییر نقش دهید و pdb را به حالت Read-Only، Open تغییر میدهیم.
export ORACLE_SID=cdb1
export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES
sqlplus / as sysdba
ALTER SESSION SET CONTAINER = pdb5_ro;
ALTER PLUGGABLE DATABASE
REFRESH MODE MANUAL
FROM pdb5@clone_link
SWITCHOVER;
ALTER PLUGGABLE DATABASE OPEN READ ONLY;
مجدد pdb را در حالت تجدیدپذیر مشاهده خواهیم کرد.
SELECT status, refresh_mode
FROM dba_pdbs
WHERE pdb_name = ‘PDB5_RO’;
STATUS REFRES
———- ——
REFRESHING MANUAL
SQL>
ملاحظات
به یاد داشته باشید که این Data Guard نیست. بین شروع و تکمیل تغییر نقش (switchover) لگ (lag) وجود دارد، که تراکنش ها دوباره می توانند در پایگاهداده اصلی اعمال (Apply) شوند و نمی توان با پایگاهداده Read-Only، قبل از تغییر نقش، سینک شود. در نتیجه ممکن است شما تراکنش هایی را از دست دهید که برای این منظور شما باید از دیتاگارد استفاده کنید.
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.