اوراکل 21c – بازگرداندن دیتابیس به هر زمانی در گذشته

خرید بک لینک

اوراکل در نسخه 19c اجازه نمی دهد که یک pdb را به زمانی از یک ORPHAN incaation برگردانیم:

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Apr 21 08:28:57 2022
Version 19.3.0.0.0
SQL> SELECT con_id, status, pdb_incaation# inc#, begin_resetlogs_scn, end_resetlogs_scn FROM v$pdb_incaation ORDER BY 3; CON_ID STATUS INC# BEGIN_RESETLOGS_SCN END_RESETLOGS_SCN
---------- ------- ---------- ------------------- ----------------- 3 PARENT 0 1920977 1920977 3 ORPHAN 1 1963437 1963437 3 CURRENT 2 1964176 1964176
SQL> alter pluggable database pdb1401 close;
Pluggable database altered.
SQL> flashback pluggable database to scn 1962565;
ORA-39889: Specified System Change Number (SCN) or timestamp is in the middle of a previous PDB RESETLOGS operation.
SQL> flashback pluggable database PDB1401 to scn 1963437;
ORA-39889: Specified System Change Number (SCN) or timestamp is in the middle of a previous PDB RESETLOGS operation.
[oracle@stb ~]$ rman target sys/[email protected]:1521/pdb1401
RMAN> reset pluggable database pdb1401 to incaation 1;
'RMAN-07536: command not allowed when coected to a Pluggable Database'

اما در نسخه 21c این قابلیت به وجود آمد تا بتوان یک PDB را به هر زمانی در گذشته برگرداند(البته گذشته نزدیک). در ادامه با سناریوی زیر و با ایجاد یک ORPHAN incaation بیشتر با این فیچر را آشنا خواهیم شد.

alter session set container=pdb1401;
SQL> create table usef.mtbl (id number,des varchar2(100));
Table created.
SQL> insert into usef.mtbl values (1,'flashback_0');
1 row created.
SQL> commit;
Commit complete.
SQL> SELECT CURRENT_SCN from V$DATABASE;
CURRENT_SCN
-----------
2665904
SQL> create restore point flashback_0;
SQL> SELECT con_id, status, pdb_incaation# inc#, begin_resetlogs_scn, end_resetlogs_scn FROM v$pdb_incaation ORDER BY 3; CON_ID STATUS INC# BEGIN_RESETLOGS_SCN END_RESETLOGS_SCN
---------- ------- ---------- ------------------- ----------------- 3 PARENT 0 1 1 3 CURRENT 0 2601843 2601843

تا اینجای سناریو، عبارت flashback_0 را در جدول mtbl(ستون des) درج کرده ایم در این قسمت با اجرای دستور زیر عبارت flashback_0 را به flashback_1 تغییر می دهیم:

SQL> update usef.mtbl set des='flashback_1';
1 row updated.
SQL> commit;
Commit complete.
SQL> SELECT CURRENT_SCN from V$DATABASE;
CURRENT_SCN
-----------
2665948
SQL> create restore point flashback_1;
Restore point created.
اولین flashback

قصد داریم تغییر انجام شده(تغییر از عبارت flashback_0 به flashback_1) را از طریق flashback کردن pdb برگردانیم(البته در این حالت روشهای بهتری چون flashback کردن جدول هم در دسترس هستند):

SQL> alter pluggable database pdb1401 close;
Pluggable database altered.
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ---------- 3 PDB1401 MOUNTED
SQL> flashback pluggable database to restore point flashback_0;
Flashback complete.
SQL> alter pluggable database pdb1401 open resetlogs;
Pluggable database altered.
SQL> select des from usef.mtbl;
DES
-------------------
flashback_0

همانطور که می بینید، جدول mtbl بعد از انجام عملیات flashback، عبارت flashback_0 را در خود دارد و PDB هم وارد incaation جدید شده است:

SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ---------- 3 PDB1401 READ WRITE NO
SQL> SELECT CURRENT_SCN from V$DATABASE;
CURRENT_SCN
-----------
2666758
SQL> SELECT con_id, status, pdb_incaation# inc#, begin_resetlogs_scn, end_resetlogs_scn FROM v$pdb_incaation ORDER BY 3; 3 PARENT 0 2601843 2601843 3 CURRENT 1 2666493 2666493

برای پیش بردن سناریو، نیاز داریم تا یک ORPHAN incaation ایجاد کنیم بنابرین باید flashback دیگری را اجرا کنیم. قبل از انجام flashback جدید، عبارت flashback_2 را در ستون des ثبت می کنیم.

SQL> update usef.mtbl set des='flashback_2';
1 row updated.
SQL> commit;
Commit complete.
SQL> SELECT CURRENT_SCN from V$DATABASE;
CURRENT_SCN
-----------
2666829
SQL> create restore point flashback_2;
Restore point created.
دومین flashback

PDB را به incaation اول بر می گردانیم(restore point flashback_0):

SQL> alter pluggable database pdb1401 close;
Pluggable database altered.
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ---------- 3 PDB1401 MOUNTED
SQL> flashback pluggable database to restore point flashback_0;
Flashback complete.
SQL> alter pluggable database pdb1401 open resetlogs;
Pluggable database altered.
SQL> select des from usef.mtbl;
DES
------------------------
flashback_0

flashback به درستی انجام شد و pdb وارد incaation جدید شد. همچنین incaation قبلی که در آن عبارت flashback_2 را در جدول mtbl ثبت کرده بودیم، وضعیتش به ORPHAN تغییر کرده است:

SQL> SELECT con_id, status, pdb_incaation# inc#, begin_resetlogs_scn, end_resetlogs_scn FROM v$pdb_incaation ORDER BY 3; CON_ID STATUS INC# BEGIN_RESETLOGS_SCN END_RESETLOGS_SCN
---------- ------- ---------- ------------------- ----------------- 3 PARENT 0 2601843 2601843 3 ORPHAN 1 2666493 2666493 3 CURRENT 2 2667898 2667898
سومین flashback

قصد داریم pdb1401 را به ORPHAN incaation ایجاد شده برگردانیم جایی که عبارت flashback_2 را در جدول mtbl ثبت کرده بودیم و همینطور restore pointای با نام flashback_1 را ساخته بودیم. این کار در نسخه 19c امکان پذیر نبود اما اوراکل نسخه 21c این قابلیت را به ما می دهد:

SQL> alter pluggable database pdb1401 close;
Pluggable database altered.
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ---------- 3 PDB1401 MOUNTED
SQL> flashback pluggable database to restore point flashback_1;
Flashback complete.
SQL> alter pluggable database pdb1401 open resetlogs;
Pluggable database altered.
SQL> select des from usef.mtbl;
DES
--------------------------------------------------------------------------------
flashback_1
SQL> SELECT con_id, status, pdb_incaation# inc#, begin_resetlogs_scn, end_resetlogs_scn FROM v$pdb_incaation ORDER BY 3; CON_ID STATUS INC# BEGIN_RESETLOGS_SCN END_RESETLOGS_SCN
---------- ------- ---------- ------------------- ----------------- 3 PARENT 0 2601843 2601843 3 ORPHAN 1 2666493 2666493 3 ORPHAN 2 2667898 2667898 3 CURRENT 3 2669267 2669267

 

ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده اوراکل در سراسر کشور...................... تلفن: 09128110897 ایمیل:[email protected]

تالار های تخصصی...

ما را در سایت تالار های تخصصی دنبال می‌کنید

برچسب: نویسنده: خنجی بازدید: 216 تاريخ: دوشنبه 19 ارديبهشت 1401 ساعت: 20:48

صفحه بندی