我已經創建了一個包含頭文件和一個包含大量代碼的正文的Oracle PL/SQL包。我可以使用較新的代碼替換舊版本的Oracle pl/sql源代碼
後來,我用不同的源代碼(實際上我打算保存在不同的包名下)重新編寫CREATE OR REPLACE PACKAGE BODY...
聲明後意外刪除了該代碼。
有沒有什麼辦法可以從包中恢復舊的替換源代碼?
我已經創建了一個包含頭文件和一個包含大量代碼的正文的Oracle PL/SQL包。我可以使用較新的代碼替換舊版本的Oracle pl/sql源代碼
後來,我用不同的源代碼(實際上我打算保存在不同的包名下)重新編寫CREATE OR REPLACE PACKAGE BODY...
聲明後意外刪除了該代碼。
有沒有什麼辦法可以從包中恢復舊的替換源代碼?
除非您已經啓用日誌記錄/ DDL命令的審計或數據庫的備份,那麼答案是幾乎可以肯定不是
數據庫定義,包括存儲過程,應該始終像對待源代碼,並維持在代碼庫中
源代碼管理是任何和所有代碼必須的,包括數據庫的東西。小增量更改和頻繁簽入是確保順利進行軟件開發的關鍵。 – 2010-06-04 21:10:32
感謝您的意見 - 不幸的是,我很難學會這一點。實際上,當我完成之後,我幾乎可以使用SQL Developer中的「Export DDL」選項保存一份代碼的硬拷貝 - 但是出現了一些問題,我失去了它的蹤跡。無論如何 - 這一集確保我不會再次忘記它。 – VVP 2010-06-04 23:14:57
它發生在我們所有人身上。只有兩種類型的人:那些做備份/使用源代碼管理的人,以及從未有過數據丟失的人 – 2010-06-05 07:54:47
您可能可以通過在all_source上使用閃回查詢來將其恢復。
例如我的包體目前是2.0版本,執行這個查詢作爲標準用戶:
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.
我知道我這樣的連接作爲SYSDBA用戶後改變了這一9:30左右今天晚上我跑這個查詢:
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.
CVS/etc怎麼樣? – 2010-06-04 18:20:35