#contents

*Oracle 10g ごみ箱機能の使い方 [#h953a217]
Oracle 10gからの新機能である、ごみ箱の使い方(flashbackテーブル機能)を紹介します。~
削除されたテーブルを復活させるには、SQL*Plusなどのツールからコマンドベースで行う方法と~
GUIのツールで行う方法の2種類があります。以下、それぞれの方法について記述します。
#contents


**SQL*Plusを利用する方法 [#v3848cad]
以下テーブルの作成→削除→復活を実施したログです。
  1 SQL> -- テーブルの作成
  2 SQL> create table tab1 (col1 varchar2(10));
  3 
  4 表が作成されました。
  5 
  6 SQL> 
  7 SQL> -- データの作成
  8 SQL> insert into tab1 values('1234567890');
  9 
 10 1行が作成されました。
 11 
 12 SQL> 
 13 SQL> -- commit
 14 SQL> commit;
 15 
 16 コミットが完了しました。
 17 
 18 SQL> 
 19 SQL> -- データの確認
 20 SQL> select * from tab1;
 21 
 22 COL1
 23 ----------
 24 1234567890
 25 
 26 SQL> 
 27 SQL> -- テーブルの削除
 28 SQL> drop table tab1;
 29 
 30 表が削除されました。
 31 
 32 SQL> 
 33 SQL> -- データ削除の確認
 34 SQL> select * from tab1;
 35 select * from tab1
 36               *
 37 行1でエラーが発生しました。:
 38 ORA-00942: 表またはビューが存在しません。
 39 
 40 
 41 SQL> 
 42 SQL> -- ごみ箱の確認
 43 SQL> show recyclebin
 44 ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
 45 ---------------- ------------------------------ ------------ -------------------
 46 TAB1             BIN$ApeYZbkORSyMH9dBvH9Geg==$0 TABLE        2007-03-25:11:35:10
 47 SQL> 
 48 SQL> -- ごみ箱から復活
 49 SQL> flashback table "BIN$ApeYZbkORSyMH9dBvH9Geg==$0" to before drop;
 50 
 51 フラッシュバックが完了しました。
 52 
 53 SQL> -- データの確認
 54 SQL> select * from tab1;
 55 
 56 COL1
 57 ----------
 58 1234567890
 59 
 60 SQL> -- ごみ箱を経由せずに削除
 61 SQL> drop table tab1 purge;
 62 
 63 表が削除されました。
 64 
 65 SQL> -- ごみ箱の確認
 66 SQL> show recyclebin
 67 SQL> 

ごみ箱から復活させるとき、既に同一の名前で別のテーブルが存在する場合などは~
本来の名前とは別の名前で復活させることもできます。(rename オプション)↓

 SQL> flashback table "BIN$ApeYZbkORSyMH9dBvH9Geg==$0" to before drop rename to tab1_old;

何度も同じテーブルを作り直した場合に、直前に削除したテーブルではなく、2世代前のテーブルに~
戻したいという状況もあると思います。その場合は、削除されたタイムスタンプなどから判断する~
必要があります。

 SQL> show recyclebin
 ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
 ---------------- ------------------------------ ------------ -------------------
 TAB1             BIN$0TSm/hfTSpyZ+L2L+RlsqA==$0 TABLE        2007-03-25:11:47:17
 TAB1             BIN$fJXaHJIGRNu3CKezCMR95w==$0 TABLE        2007-03-25:11:42:51

上の例では、TAB1テーブルは2度削除されていて、「DROP TIME」から古い世代のTAB1を復活させるには、~
"BIN$fJXaHJIGRNu3CKezCMR95w==$0"の名前を利用して復活させる必要があります。

**GUIツール SQLDeveloperを利用する方法 [#vd7f749e]
''1.''
#ref(SQLDev1.png);
左側のオブジェクトツリーの中から「Recycle Bin」をクリックし、復活させたいテーブルを選択します。

''2.''
#ref(SQLDev2.png);
対象のテーブルを右クックし、「Flashback to Before Drop」を選択します。

''3.''
#ref(SQLDev3.png);
元のテーブル名とは別の名前で復活させる場合は、「Flashback to Object Name」欄にテーブル名を入力し、~
「Apply」ボタンを押します。元のテーブルと同じ名前で復活させる場合には、「Flashback to Object Name」欄~
は空白で問題ありません。

''4.''
テーブルが復活していることを確認して終了。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS