بازیابی جداول از بکاپ RMAN

از اوراکل نسخه 12cR1 می توان تنها یک جدول خاص را با استفاده از بکاپ RMAN بازیابی کرد.

در زمان بازیابی جدول با این روش، ابتدا instance موقتی ایجاد شده و در پی آن tablespaceهایی که جدول مورد نظر به آنها وابسته است، بازیابی خواهند شد.

پس از ان، از این جدول به روش data pump، دامپی گرفته خواهد شد که در هنگام بازیابی بر روی بانک اصلی، از این فایل استفاده می شود.

بعد از بازیابی جدول، همه فایلهای ایجاد شده اعم از دیتافایل و نیز دامپ فایل، حذف خواهند شد.

این روش محدودیتهایی را هم به همراه دارد از قبیل:

1. کاربر sys نباید مالک جدول باشد.

2. tablespace ای که جدول در ان قرار دارد، نباید SYSAUX و SYSTEM باشد.

3. بانک مقصد باید در حالت read/write و مود ارشیو قرار داشته باشد.

مثال زیر را ببینید:

مثال: در این مثال قصد داریم جدول usef.tbl1 را به 10 دقیقه قبلبرگردانیم. قبل از انجام ریکاوری، باید scn مربوط به ده دقیقه قبل را در بانک جاری بدست آورد:

SQL> select timestamp_to_scn(sysdate-10/24/60) from dual;

285697212528

دستور زیر، عمل ریکاوری جدول tbl1 را در بانک جاری انجام خواهد داد:

RMAN> RECOVER TABLE usef.tbl1

UNTIL SCN 285697212528

AUXILIARY DESTINATION ‘/u01/aux’

DATAPUMP DESTINATION ‘/u01/pump’

DUMP FILE ‘usef_tbl1.dat’

REMAP TABLE ‘USEF’.’TBL1′:’TBL9′;

RMAN-05026: WARNING: presuming following set of tablespaces applies to specified Point-in-Time

List of tablespaces expected to have UNDO segments

Tablespace SYSTEM

Tablespace UNDOTBS1

Creating automatic instance, with SID=’gtkj’

initialization parameters used for automatic instance:

db_name=TEST

db_unique_name=gtkj_pitr_TEST

compatible=12.1.0.2.0

restore clone datafile  1, 4, 3;

 switch clone datafile all;

}

renamed tempfile 1 to /u01/aux/TEST/datafile/o1_mf_temp_%u_.tmp in control file

datafile 1 switched to datafile copy

input datafile copy RECID=4 STAMP=934128982 file name=/u01/aux/TEST/datafile/o1_mf_system_d8gm3738_.dbf

datafile 4 switched to datafile copy

input datafile copy RECID=5 STAMP=934128982 file name=/u01/aux/TEST/datafile/o1_mf_undotbs1_d8gm373l_.dbf

datafile 3 switched to datafile copy

input datafile copy RECID=6 STAMP=934128982 file name=/u01/aux/TEST/datafile/o1_mf_sysaux_d8gm374l_.dbf

{

set until  scn 285697212528;

sql clone “alter database datafile  5 online”;

recover clone database tablespace  “USEF_TBS”, “SYSTEM”, “UNDOTBS1”, “SYSAUX” delete archivelog;

alter clone database open resetlogs;

}

sql “create or replace directory TSPITR_DIROBJ_DPDIR as ”

   EXPDP> . . exported “USEF”.”TBL1″                               5.304 KB       4 rows

   EXPDP> Master table “SYS”.”TSPITR_EXP_gtkj_qgBa” successfully loaded/unloaded

   EXPDP> Dump file set for SYS.TSPITR_EXP_gtkj_qgBa is:

   EXPDP>   /u01/pump/usef_tbl1.dat

   IMPDP> Processing object type TABLE_EXPORT/TABLE/TABLE_DATA

   IMPDP> . . imported “USEF”.”TBL9″                               5.304 KB       4 rows

auxiliary instance file /u01/aux/TEST/datafile/o1_mf_temp_d8gm508s_.tmp deleted

auxiliary instance file /u01/aux/GTKJ_PITR_TEST/onlinelog/o1_mf_3_d8gm8j8v_.log deleted

auxiliary instance file /u01/aux/GTKJ_PITR_TEST/onlinelog/o1_mf_2_d8gm8hsb_.log deleted

auxiliary instance file /u01/aux/GTKJ_PITR_TEST/onlinelog/o1_mf_1_d8gm8h96_.log deleted

auxiliary instance file /u01/aux/GTKJ_PITR_TEST/datafile/o1_mf_usef_tbs_d8gm6pnp_.dbf deleted

auxiliary instance file /u01/aux/TEST/datafile/o1_mf_sysaux_d8gm374l_.dbf deleted

auxiliary instance file /u01/aux/TEST/datafile/o1_mf_undotbs1_d8gm373l_.dbf deleted

auxiliary instance file /u01/aux/TEST/datafile/o1_mf_system_d8gm3738_.dbf deleted

auxiliary instance file /u01/aux/TEST/controlfile/o1_mf_d8gm30lg_.ctl deleted

auxiliary instance file usef_tbl1.dat deleted

Finished recover at 24-JAN-17

همچنین با پارامتر NOTABLEIMPORT می توان از imort شدن جدول در بانک مقصد جلوگیری کرد که در نهایت همه دیتافایلهای مربوط به بانک موقت پاک می شوند ولی فایل دامپ کماکان باقی خواهد ماند.

برای انجام ریکاوری به این شیوه، دستور قبلی به صورت زیر اصلاح می شود:

RMAN> RECOVER TABLE usef.tbl1

UNTIL SCN 285697212528

AUXILIARY DESTINATION ‘/u01/aux’

DATAPUMP DESTINATION ‘/u01/pump’

DUMP FILE ‘usef_tbl1.dat’

NOTABLEIMPORT;

بعد از اجرای دستور بالا، می توان با استفاده از دامپ ایجاد شده، جدول را به صورت دستی برگرداند:

impdp usef/abc directory=xx dumpfile=usef_tbl1.dat remap_table=tbl1:tbl4

Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 – 64bit Production

. . imported “USEF”.”TBL4″                               5.304 KB       4 rows

Job “USEF”.”SYS_IMPORT_FULL_01″ successfully completed at Tue Jan 24 21:05:02 2017 elapsed 0 00:00:01

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

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

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