2012-06-08 14 views
0

我需要從我所有的函數,過程,包,視圖和表中提取代碼(腳本),以便在移至生產時我可以運行腳本來創建所有對象。提取數據庫對象的代碼或腳本

在開發過程中,我沒有對所有數據庫對象進行腳本備份。

什麼是提取代碼或腳本的最佳方式?任何建議或幫助都非常可觀。

感謝

回答

6

你確實使用版本控制系統嗎?請做。

如果不能使用系統函數dbms_metadata.get_ddl,它將返回用於創建對象的DDL的clob。這將需要爲每個單獨的對象完成,因此它可能值得循環通過user_objects

或者,您可以通過右鍵單擊對象並使用view選項來查看PL/SQL Developer中的定義,然後在右下角可以查看用於創建對象的SQL。

還有一個export "tool",它沒有解釋如何使用它作爲SQL Developer變體。

當然,正確的答案是得到一個版本控制系統並使用它。

+0

是否有可能整合與數據庫版本控制? – user75ponic

+2

不是我所知道的。您可以通過將所有對象DDL存儲在表中來創建您自己的,但是,它仍然不夠安全,因爲您可能會丟失所有內容。我們只有一行腳本,它循環遍歷VCS中的所有文件夾並執行其中的腳本。 – Ben

+0

是VCS是一個不錯的選擇。非常感謝。 – user75ponic

1

我不知道有關數據庫本身,而是SQL Developer將做到這一點。我非常確定TOAD和其他類似的工具。

0

對不起,但你有一個非最佳的開發實踐,不能超越一個開發人員。

不要使用SQL GUI客戶端的能力直接在數據庫中編輯數據庫對象。 (除非你刻意要創造人爲的問題。)

而是所有的SQL和PL/SQL DDL和DML應位於保存到version control system(VCS)文本文件(例如subversiongitmercurial)。用你的favorite editor來編輯文件。

通過使用命令行工具(在Oracle中爲sqlplus)執行VCS中保存的文本文件來修改數據庫。這適用於所有數據庫實例:開發,質量保證,生產。

對於大型開發項目,考慮使用schema migration工具(例如FlywayRoundhouse)。

多年來,我已經能夠通過執行一個簡單的規則,以消除萬噸的開發和生產問題的歲月:

如果代碼是不是在它不存在的VCS。

(這是驚人的,還是在2015年不使用VCS許多開發團隊有。)