Posted at

RMANバックアップ検証2 RECYCLEBIN(ゴミ箱)はバックアップセットに含まれるのか?


「RECYCLEBINをonに設定すると、削除された表はごみ箱に入り、リカバリが可能です。」と書かれていたので、RECYCLEBIN(ゴミ箱)もバックアップセットに含まれているかを検証した。


【Oracle Databaseリファレンス 11gリリース2 (11.2)】

-> RECYCLEBIN

RECYCLEBINは、フラッシュバック・ドロップ機能がオンかオフかを制御するために使用します。

このパラメータをoffに設定すると、削除された表はごみ箱に入りません。

このパラメータをonに設定すると、削除された表はごみ箱に入り、リカバリが可能です。


この記事では11gリリース2 (11.2)を使っています。


■結論


RECYCLEBINに格納された領域に関しては、RECYCLEBINがPurgeされない限りバックアップセットに含まれる。


■検証結果

10万件を挿入した表を用意


SQL> select count(*) from tabA;

COUNT(*)
----------
100000

RECYCLEBINに何も入っていないことを確認


SQL> show recyclebin;
SQL> ※RECYCLEBINに何も入っていない

バックアップを取得(※1)


RMAN> backup database;

$ ll
-rw-r----- 1 oracle oinstall 9830400 6月 10 18:16 2019 o1_mf_ncsnf_TAG20190610T181545_fsdfmj4x_.bkp
-rw-r----- 1 oracle oinstall 1004937216 6月 10 18:16 2019 o1_mf_nnndf_TAG20190610T181545_fsdfl3qv_.bkp ※1
10万件のデータが挿入された状態のサイズ

表を削除して、RECYCLEBINへ


SQL> drop table tabA;

表が削除されました。

表tabA がRECYCLEBINに入っていることを確認


SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
TABA BIN$dYHZHSm1DILgUKjADDgYeA==$0 TABLE 2019-06-10:18:19:02

バックアップを取得(※2)


RMAN> backup database;

$ ll
-rw-r----- 1 oracle oinstall 9830400 6月 10 18:16 2019 o1_mf_ncsnf_TAG20190610T181545_fsdfmj4x_.bkp
-rw-r----- 1 oracle oinstall 9830400 6月 10 18:19 2019 o1_mf_ncsnf_TAG20190610T181932_fsdfsyyr_.bkp
-rw-r----- 1 oracle oinstall 1004937216 6月 10 18:16 2019 o1_mf_nnndf_TAG20190610T181545_fsdfl3qv_.bkp ※1
-rw-r----- 1 oracle oinstall 1004969984 6月 10 18:19 2019 o1_mf_nnndf_TAG20190610T181932_fsdfs509_.bkp ※2
表を削除(purgeは未実行)してもサイズはほぼ変わらない

バックアップ(※2)からリストア・リカバリ


RMAN> restore database;
RMAN> recover database;

RECYCLEBINの確認


SQL> sho recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
TABA BIN$dYHZHSm1DILgUKjADDgYeA==$0 TABLE 2019-06-10:18:19:02
※リカバリした環境でもRECYCLEBINに入っていた

purgeした状態でバックアップ(※3)を取得


SQL> purge recyclebin;

リサイクルビンがパージされました。

SQL> show recyclebin
SQL> ※Purgeの結果消えた

RMAN> backup database;

$ ll
-rw-r----- 1 oracle oinstall 9830400 6月 10 18:16 2019 o1_mf_ncsnf_TAG20190610T181545_fsdfmj4x_.bkp
-rw-r----- 1 oracle oinstall 9830400 6月 10 18:19 2019 o1_mf_ncsnf_TAG20190610T181932_fsdfsyyr_.bkp
-rw-r----- 1 oracle oinstall 9830400 6月 10 18:41 2019 o1_mf_ncsnf_TAG20190610T184111_fsdh2l2n_.bkp
-rw-r----- 1 oracle oinstall 1004937216 6月 10 18:16 2019 o1_mf_nnndf_TAG20190610T181545_fsdfl3qv_.bkp
-rw-r----- 1 oracle oinstall 1004969984 6月 10 18:19 2019 o1_mf_nnndf_TAG20190610T181932_fsdfs509_.bkp
-rw-r----- 1 oracle oinstall 987848704 6月 10 18:41 2019 o1_mf_nnndf_TAG20190610T184111_fsdh1r2k_.bkp ※3
ゴミ箱をpurgeしたことでファイルの容量も減った


■まとめ


  • オブジェクトを削除することにより、RMANのバックアップセットのサイズを小さくすることが出来るが、
    RECYCLEBINに格納されたままだとバックアップセットのサイズは小さくならない。


■関連リンク

RMANバックアップ検証1 バックアップセットの「未使用ブロック」とは何か?

以上