ヘッダーと多くのコードを含む本文を含むOraclePL/SQLパッケージを作成しました。
後で、別のソースコード(実際には別のパッケージ名で保存するつもりでした)でCREATE OR REPLACE PACKAGE BODY...
ステートメントを再実行した後、誤ってその本体からコードを消去してしまいました。
置き換えられた古いソースコードをパッケージから復元する方法はありますか?
All_sourceでフラッシュバッククエリを使用すると、元に戻すことができる場合があります。
例えば私のパッケージ本体は現在バージョン2であり、このクエリを標準ユーザーとして実行しています。
SQL> select text
2 from all_source
3 where name = 'CARPENTERI_TEST'
4 and type = 'PACKAGE BODY';
TEXT
package body carpenteri_test
is
procedure do_stuff
is
begin
dbms_output.put_line('version 2');
end do_stuff;
end carpenteri_test;
10 rows selected.
今夜9時30分頃にこれを変更したので、SYSDBAユーザーとして接続した後、次のクエリを実行しました。
SQL> select text
2 from all_source
3 as of timestamp
4 to_timestamp('04-JUN-2010 21:30:00', 'DD-MON-YYYY HH24:MI:SS')
5 where name = 'CARPENTERI_TEST'
6 and type = 'PACKAGE BODY';
TEXT
----------------------------------------------------------------------------
package body carpenteri_test
is
procedure do_stuff
is
begin
dbms_output.put_line('version 1');
end do_stuff;
end carpenteri_test;
10 rows selected.
フラッシュバックの詳細については、 ここ を参照してください。 Tom Kyteは、all_source here でフラッシュバックを使用する方法も示しています。
DDLコマンドのロギング/監査を有効にしている場合、またはデータベースのバックアップを行っている場合を除いて、答えはほぼ確実ではありません
ストアドプロシージャを含むデータベース定義は、常にソースコードのように扱い、コードリポジトリに保持する必要があります