Oracle

將數據更改從一個數據庫應用到另一個數據庫

  • December 16, 2013

我有一個在 Oracle 9i 數據庫上執行的應用程序,我正在尋找更實用的方法來將數據更改(而不是模式更改)從開發數據庫部署到生產環境。目前我的工作如下:

設置開發數據庫所需的所有參數(這可能需要幾個月),使用者驗證所有內容,然後我必須再次應用所有內容(這可能需要幾個月時間)。我不能只將開發數據庫導入生產,因為生產中的所有數據都會失去。有什麼辦法可以避免這種“返工”嗎?

我嘗試了 SQL Developer 上可用的數據庫複製和數據差異工具,但沒有奏效,因為在表上插入新數據時它存在很多依賴關係問題。

關鍵是在我處理開發數據庫時保留使用者在生產中創建的新/更改數據。然後導入我所做的而不失去使用者同時所做的。

提前致謝。

一種方法是確保所有屬性表或元數據都具有 date_created 和 date_last_modified 日期。然後,您可以過濾創建日期在某個時間段內的位置,並將更改導出為插入或更新。

我做的更難。對開發屬性的所有更改都保存為插入/更新腳本,我使用項目/錯誤跟踪器來跟踪所有更改集合。我每週都會更新開發,因此如果您忘記了序列或授權之類的內容,您可以立即看到。典型的更改可能涉及數據插入、包更新、授權、序列和触發器,因此您必須保持其井井有條。

編輯:盧克問你如何將更改保存為腳本?我做兩件事:

  • 所有屬性和類型都由一組過程和函式添加。這將檢查輸入是否有效,更新任何日誌記錄/審計表,並根據您在數據庫中可能擁有的任何業務邏輯驗證更改。這需要大量的設置工作,但可以讓您有一個一致的做法來添加新的元數據。每次使用過程或函式時,都可以將呼叫保存為 sql 語句。
  • 我使用 Toad,它能夠根據幾乎任何標準過濾表並將結果導出為插入。

您可能希望將開發環境中的更改記錄為一個腳本或一系列腳本,以便可以像任何其他軟體一樣對它們進行 QA 和部署。

如果此類更改可行,另一種解決方案是隔離使用者數據和開發人員接觸的數據。這將允許您批量載入開發人員的更改,而不是接觸使用者數據。

引用自:https://dba.stackexchange.com/questions/55092