oracle誤drop/udate操作後のデータ復旧テスト
1、drop表、どうやって回復しますか?
下表の回復を行います。
(1)紹介ビューの復旧:DBA_RECYCLEBIN
SQL>SELECT OBJECT_NAME、ORIGINAL_NAME、CAN_UNDROP、CAN_PURGE FROM DBA_RECYCLEBIN WHERE ORGINAL_NAME='ETL'
OBJECT_NAME ORIGINAL_NAME CAN
-------------------------------
BIN$V 0 qZnPBKRBiEUAx/MzB 8 Ww==0 ETL YES
SQL>CREATE TABLE ETL AS SELECT*FROM「BIN$V 0 qZnPBKRBiEUAx/MzB 8 Ww==0」
テーブルが作成されました。
SQL>SELECT*FROM ETL;
ID
--------
1
復元完了
(2)回復できない場合:drop table etl purge;
SQL>CREATE TABLE ETL 2(NAME VRCHARR 2(10));
テーブルが作成されました
SQL>INSERT INTO ETL 2 VALES('TEST')
1行が作成されました
SQL>COMMIT
提出完了です
SQL>DROP TABLE ETL 2 PURGE;
テーブルは削除されました
SQL>SELECT OBJECT_NAME、ORIGINAL_NAME、CAN_UNDROP、CAN_PURGE FROM DBA_RECYCLEBIN WHERE ORGINAL_NAME='ETL 2'
行が選択されていません
SQL>
2、udate表の復旧
SQL>SELECT SYSATE FROM DUAL;
SYSDATE
---------------
2008-11-21 19:45:20
SQL>SELECT*FROM ETL;
ID
--------
1
SQL>UPDATE ETL SET ID=2;
1行更新しました。
SQL>SELECT*FROM ETL;
ID
--------
2
SQL>COMMIT
提出完了です。
create table test(u)bak
as
select*from test as of TIMESTAMP to_timestamp('20081126 10435'、'yyymmdd h24 miss')
テーブルが作成されました。
SQL>SELECT*FROM ETL_BAK
ID
--------
1
SQL>
udate表の復旧を完了しました。
create table etl (id number);
insert into etl values (1);
commit;
drop table etl;
drop table etl purgeであれば回復できません。下表の回復を行います。
(1)紹介ビューの復旧:DBA_RECYCLEBIN
SQL>SELECT OBJECT_NAME、ORIGINAL_NAME、CAN_UNDROP、CAN_PURGE FROM DBA_RECYCLEBIN WHERE ORGINAL_NAME='ETL'
OBJECT_NAME ORIGINAL_NAME CAN
-------------------------------
BIN$V 0 qZnPBKRBiEUAx/MzB 8 Ww==0 ETL YES
SQL>CREATE TABLE ETL AS SELECT*FROM「BIN$V 0 qZnPBKRBiEUAx/MzB 8 Ww==0」
テーブルが作成されました。
SQL>SELECT*FROM ETL;
ID
--------
1
復元完了
(2)回復できない場合:drop table etl purge;
SQL>CREATE TABLE ETL 2(NAME VRCHARR 2(10));
テーブルが作成されました
SQL>INSERT INTO ETL 2 VALES('TEST')
1行が作成されました
SQL>COMMIT
提出完了です
SQL>DROP TABLE ETL 2 PURGE;
テーブルは削除されました
SQL>SELECT OBJECT_NAME、ORIGINAL_NAME、CAN_UNDROP、CAN_PURGE FROM DBA_RECYCLEBIN WHERE ORGINAL_NAME='ETL 2'
行が選択されていません
SQL>
2、udate表の復旧
SQL>SELECT SYSATE FROM DUAL;
SYSDATE
---------------
2008-11-21 19:45:20
SQL>SELECT*FROM ETL;
ID
--------
1
SQL>UPDATE ETL SET ID=2;
1行更新しました。
SQL>SELECT*FROM ETL;
ID
--------
2
SQL>COMMIT
提出完了です。
create table test(u)bak
as
select*from test as of TIMESTAMP to_timestamp('20081126 10435'、'yyymmdd h24 miss')
テーブルが作成されました。
SQL>SELECT*FROM ETL_BAK
ID
--------
1
SQL>
udate表の復旧を完了しました。