RMANバックアップ検証２ RECYCLEBIN（ゴミ箱）はバックアップセットに含まれるのか？

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

>   【Oracle Databaseリファレンス 11gリリース2 (11.2)】
>      ->  RECYCLEBIN
RECYCLEBINは、フラッシュバック・ドロップ機能がオンかオフかを制御するために使用します。
このパラメータをoffに設定すると、削除された表はごみ箱に入りません。
このパラメータをonに設定すると、削除された表はごみ箱に入り、リカバリが可能です。

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

# ■結論

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

# ■検証結果

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

```  10万件を挿入した表を用意
   
   SQL> select count(*) from tabA;
   
     COUNT(*)
   ----------
       100000
```

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

``` RECYCLEBINに何も入っていないことを確認
   
   SQL> show recyclebin;
   SQL>                 ※RECYCLEBINに何も入っていない
```

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

``` バックアップを取得(※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へ

``` 表を削除して、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)

``` バックアップを取得(※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)からリストア・リカバリ

``` バックアップ(※2)からリストア・リカバリ
   
   RMAN> restore database;
   RMAN> recover database;
```

RECYCLEBINの確認

``` 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)を取得

``` 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バックアップ検証１ バックアップセットの「未使用ブロック」とは何か？](https://qiita.com/lucky7/items/f42d9daeb4da5ebb1495)


以上