ریکاوری جدول در یک نقطهای از زمان توسط RMAN در پایگاه داده اوراکل ۱۲c
مقدمه
در نسخه های قبلی اوراکل برای ریکاور کردن یک جدول یا یک پارتیشن از یک جدول در یک نقطهای از زمان، باید بصورت دستی یک کپی در یک نقطه از زمان در پایگاهداده ایجاد و بازیابی جدول توسط data pump انجام میشد سپس جدول ایجاد شده حذف میگردید. یکی از ویژگیهای جدیدی که در اوراکل ۱۲c برای RMAN اضافه شده این است که فقط با یک دستور این مراحل انجام می گیرد. در این مستند ریکاوری جدول در یک نقطهای از زمان توسط RMAN در پایگاه داده اوراکل ۱۲c مورد بررسی قرار می گیرد.
Setup
برای نشان دادن این ویژگی، ما باید یک جدول برای انجام PITR ایجاد کنیم. این مثال فرض می کند که شما در حالت archivelog هستید و بکاپ های کافی برای ریکاوری توسط یک کپی در نقطه ای از زمان وجود دارد. برای چنین اصلاحاتی، استفاه از flashback query مناسبتر است، اما این روش از ریکاوری هدف این مستند است.
CONN / AS SYSDBA
CREATE USER test IDENTIFIED BY test
QUOTA UNLIMITED ON users;
GRANT CREATE SESSION, CREATE TABLE TO test;
CONN test/test
CREATE TABLE t1 (id NUMBER);
INSERT INTO t1 VALUES (1);
COMMIT;
SCN فعلی را چک می کنیم.
CONN / AS SYSDBA
SELECT DBMS_FLASHBACK.get_system_change_number FROM dual;
GET_SYSTEM_CHANGE_NUMBER
————————
۱۸۵۳۲۶۷
SQL>
بعد از اینکه SCN چک شد تعدادی داده به جدول اضافه می کنیم.
CONN test/test
INSERT INTO t1 VALUES (2);
COMMIT;
SELECT * FROM t1;
ID
———-
۱
۲
SQL>
Table Point in Time Recovery (PITR)
به عنوان کاربر SYS (دارای مجوز sysdba یا sysbackup ) به محیط rman وارد می شویم.
$ rman target /
اجرای دستور recovery table ، محل مناسب auxiliary destination روی دیتابیس کمکی مشخص می کنیم. نقطهای از زمان میتواند با استفاده از UNTIL SCN ، UNTIL TIME و UNTIL SEQUENCE مشخص شود. در مثال زیر برای ریکاوری، عبارت REMAP TABLE اضافه شده تا جدول مربوطه با یک اسم جدید ایجاد شود تا عملیات مقایسه بدرستی صورت پذیرد.
RECOVER TABLE ‘TEST’.’T1′
UNTIL SCN 1853267
AUXILIARY DESTINATION ‘/u01/aux’
REMAP TABLE ‘TEST’.’T1′:’T1_PREV’;
پس از تکمیل عملیات و با بررسی محتوای جدول ایجاد شده (T1_PREV) داده های SCN مورد نظر قابل مشاهده خواهد بود.
sqlplus test/test
SELECT * FROM t1_prev;
ID
———-
۱
SQL>
Table point in time recovery (PITR) to dump file
بجای اینکه عملیات ریکاوری کامل انجام شود، شما می توانید عملیات را در نقطه ای که جدول ریکاوری شده در data pump متوقف کنید، تا بعداً آن را بصورت دستی import کنید.
در مثال زیر از عبارات DATAPUMP DESTINATION ، DUMP FILE و NOTABLEIMPORT استفاده شده است.
RECOVER TABLE ‘TEST’.’T1′
UNTIL SCN 1853267
AUXILIARY DESTINATION ‘/u01/aux’
DATAPUMP DESTINATION ‘/u01/export’
DUMP FILE ‘test_t1_prev.dmp’
NOTABLEIMPORT;
پس از اتمام عملیات ، میتوانید dump file های ایجاد شده را در دایرکتوری مشخص شده، ببنید.
$ ls -al /u01/export
total 120
drwxr-xr-x. 2 oracle oinstall 4096 Dec 26 17:33 .
drwxrwxr-x. 5 oracle oinstall 4096 Dec 26 12:30 ..
-rw-r—–. 1 oracle oinstall 114688 Dec 26 17:34 test_t1_prev.dmp
$
Table point in time recovery (PITR) in a pluggable database (PDB)
روند انجام PITR یک جدول از PDB کاملاً مشابه به روند آن در دیتابیس non-cdb است.
REMAPING 12.1
در بخش قبلی نمونه تغییر نام یک جدول را دیدید. در مثال زیر، نتیجه ریکاوری به یک نقطه زمانی جدول T1 که به جدول جدیدی بنام t1_prev هست را مشاهده میکنید.
RECOVER TABLE ‘TEST’.’T1′
UNTIL SCN 1853267
AUXILIARY DESTINATION ‘/u01/aux’
REMAP TABLE ‘TEST’.’T1′:’T1_PREV’;
همچنین ممکن است که یک tablespace را remap کنید، بطور مستقل یا با remap کردن نام جدول. در مثال زیر جدول قبلی در PITR تکرار شده است، اما نتیجه آن جدولی است که در tablespace examples ایجاد شده بجای tablespace user.
RECOVER TABLE ‘TEST’.’T1′
UNTIL SCN 1853267
AUXILIARY DESTINATION ‘/u01/aux’
REMAP TABLE ‘TEST’.’T1′:’T1_PREV’
REMAP TABLESPACE ‘USERS’:’EXAMPLES’;
REMAPING 12.2
علاوه بر عملیات remapping در ۱۲٫۱ ، اوراکل ۱۲٫۲ شمارا قادر می سازد برای remap اسکیما در طی فرایند PITR یک tablespace. دستور remap جدول در حال حاضر شمارا قادر می سازد اسکیمای مقصد را هم مشخص کنید. در مثال زیر از اسکیمای test به test2 سوییچ شده است.
RECOVER TABLE ‘TEST’.’T1′
UNTIL SCN 1853267
AUXILIARY DESTINATION ‘/u01/aux’
REMAP TABLE ‘TEST’.’T1′:’TEST2′.’T1_PREV’
REMAP TABLESPACE ‘USERS’:’EXAMPLES’;
Space check 12.2
جدول و پارتیشن در PITR به یک اInstance کمکی نیاز دارند که در محل مشخص شده توسط عبارت AUXILIARY DESTINATION ایجاد شده است. در اوراکل ۱۲٫۱ عملیات ریکاوری بدون در نظر گرفتن فضای موجود در مقصد کمکی آغاز می شود. اگر فضای کافی وجود نداشته باشد عملیات failed می شود.
در اوراکل ۱۲٫۲ RMAN فضای دردسترس برای اینستنس کمکی را چک می کند و سپس عملیات را آغاز می کند.
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.