Oracle 10g ごみ箱機能の使い方

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

SQL*Plusを利用する方法

以下テーブルの作成→削除→復活を実施したログです。

 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を利用する方法

1.

SQLDev1.png

左側のオブジェクトツリーの中から「Recycle Bin」をクリックし、復活させたいテーブルを選択します。

2.

SQLDev2.png

対象のテーブルを右クックし、「Flashback to Before Drop」を選択します。

3.

SQLDev3.png

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

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


添付ファイル: fileSQLDev3.png 500件 [詳細] fileSQLDev2.png 459件 [詳細] fileSQLDev1.png 458件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-04-07 (金) 16:01:32 (81d)