Oracle
在 Oracle 中測試程式碼更新的推薦方法
我們有很多自建的高性能 Oracle 12c 數據庫伺服器,帶有兩個相當大的實例(OLTP 和數據倉庫)用於開發目的。我們的 PL/SQL 開發人員有時必須重新定義表結構、更新數百萬到數十億行、創建/測試新索引等等。每次更新腳本執行並且數據發生變化時,我們都必須重新導入所有表空間,重新創建複製等,因為我們需要再次測試更新。此過程大約需要 3-5 小時(其中大部分在後台執行),直到開發人員可以再次訪問伺服器。與此同時,他們切換到另一台未更改的伺服器再次進行測試,當然,在更新之後就無法使用(根據需要重複…)。
我的團隊任務包括為這些確切目的重新創建數據庫,至少可以說這很煩人。
我正在嘗試提出一些替代方案,並研究了在測試、ARCHIVELOG 模式、巨大的 UNDO 表空間或保留時間、閃回恢復等之前創建 RMAN 備份。我想出的任何東西都不是我需要的, 我想。
Mind:我幾乎沒有 DBA 經驗,所有這些經驗都是自學或邊做邊學的。
所以我需要或試圖理解的是,我可以使用哪些技術將數據庫(或更改的表/數據)重置到過去的某個時間點(甚至可能是五分鐘前),而無需重新導入數據庫?我認為 ARCHIVELOG 模式和恢復更改的表/數據可能是最好的方法,但我不確定。
有人能指出我正確的方向嗎?
如果您可以協調活動,那麼使用有保證的還原點(用於閃回數據庫)正是您所需要的。我為我的所有測試都這樣做(實際上昨天在測試一個複雜的多步驟過程時做了 4 次),甚至我的開發人員/QA 在必要時也使用它。
- 您創建一個有保證的還原點,
- 執行腳本。
- 驗證並保存結果
- 將數據庫閃回到腳本開始之前的還原點。
- 泡沫。沖洗。重複。
但是,您必須注意,閃回數據庫會影響整個數據庫,因此如果多人檢查他們的獨立腳本,則需要協調活動。
一旦你得到這個,它真的是小菜一碟,不像 PDB(如上所述,可能需要額外的許可證)。