2011-04-19 39 views
4

我們有2個Oracle數據庫。一個是我們的生產客戶數據庫。另一個是測試數據庫。測試數據庫是沒有任何數據的生產副本...只是空表。我試圖想出一種高效且有效的方法將生產數據庫中的一組樣本數據複製到測試中。僅使用一組樣本數據創建生產的測試數據庫副本

我需要從我們的客戶表中的PK樣本列表開始,然後編寫一個過程以使用該樣本填充測試數據庫客戶表。然後,我需要根據樣本填充相關數據的子表。

我們過去有一個Java過程,它會使用預備語句從生產中選擇數據...根據結果集生成一個文件...然後使用更新語句將其存入測試數據庫。這是非常低效的。

我不是DBA,所以我不太瞭解這個領域。我試圖谷歌關於數據庫鏈接的一些信息,但找不到很好的例子。

有沒有人知道這樣做的方法...或者,至少給我一個出發點?

回答

5

如果您有足夠的空間,我會建議複製整個生產數據進行測試。這將更容易管理,它也可能是測試備份的一個很好的機會(從備份恢復到新實例)。

從開發人員的角度來看,如果沒有一組具有代表性的數據,您將無法可靠地測試應用程序的性能。該數據集應具有與生產數據(數據量,物理分佈...)相同的屬性。實現這一目標的最簡單方法是在測試中具有與生產中相同的數據。

如果您可以承受停機時間,則可以停止生產數據庫,將該文件複製到測試服務器並掛載兩個數據庫。如果您無法承受停機時間,那麼獲取一些DBA技能(並最終了解熱備份然後恢復到新實例)可能是一個好主意。


更新:如果物理複製你的數據庫是不可行的,你應該考慮將數據批量複製與expdpimpdp(或舊exp/imp)。您可以複製所有模式或filter the data on export。在這種情況下,您將手動選擇適當的WHERE子句。批量導出和導入將比逐行復制數據快幾個數量級。

+0

+1 This。如果您有權訪問合適的生產數據庫,請參閱。運行一些PII類型清洗(CCnums,SSN等),並將其用於測試。雖然可能性是您希望在每次主要單元測試之前恢復的永久備份,因爲在運行測試之前,您總是希望數據庫處於特定狀態。 – 2011-04-19 17:58:34

+0

這不適用於這種情況。我們有一個完整的測試數據庫,它是生產副本(在某個時間點......並且每天不刷新)。造成我的問題的其中一個問題是,我們的DBA(無論有多種原因)需要多天的時間來刷新我們的測試數據庫和生產副本。此外,我們在測試環境中的空間受到嚴重限制(因此需要樣本數據庫)。恕我直言......解決方案將是在測試中投入更多資金和空間,但是,這是不可行的。 – aintnoprophet 2011-04-19 18:03:31

+0

@aintnoprophet:expdp/impdp(或舊的exp/imp)是快速導入/導出的可行選項,請參閱我的更新答案。 – 2011-04-19 18:28:08

3

我只是想指出,這個行業的情況和產品..不是一個解決方案,但輸入供參考@aintnoprophet提到

「我不是一個DBA,所以我不知道很多的 那個領域。我試着谷歌一些 有關數據庫鏈接的信息,但是找不到 找到很好的例子。「

這個用例與測試數據管理系統有關。這個概念處理的事實是,我們需要有一種方法來管理測試數據,這些方法會進入特定測試場景的特定測試案例。從大量數據中手動創建數據子集將非常困難,您顯着增加了人爲錯誤的機會。因此,多次測試迭代的重複數據子設置很快變得難以管理。

有很多使用的情況下,特別是在企業的例子 -

http://www.compuware.com/resources/mainframe/Fileaid_clientserver.pdf

http://www.erphome.net/wdb/upload/forum1_f_8007_1227768589.pdf

這些都是龐大的企業數據。

有一個開源的TDM工具http://sourceforge.net/projects/opentdm/但不是在爪哇(林不知道其是否好還是不好)

,如果你正在尋找的產品(突出部分供參考)部分中是

+0

openTDM看起來像99%的其他SF項目。死。 – 2011-04-19 17:55:29

+0

看起來像我有一些在我的商店閱讀。 – aintnoprophet 2011-04-19 18:06:37

1

這看起來像你要找的是Jailer。它從關係數據庫中導出一致的,引用完整的行集。

3

生產完整副本的測試數據庫將比清除錯誤的子集更好。大多數人的子集是因爲他們沒有足夠的時間和資源來製作完整的副本,但所有這些都隨着虛擬數據(即複製數據管理)而改變。在這樣的系統中,您可以攝取一個生產副本,並在幾分鐘內製作精簡複製副本,幾乎不需要額外存儲。該系統通常也壓縮數據,因此攝取副本是原始的1/3大小,並且具有在幾分鐘內快速刷新的優點,這在破壞性測試中是很好的。由於我們可能不希望生產環境中的敏感數據進入開發和測試階段,因此他們也傾向於整合屏蔽。這方面有很多供應商。查看Netapp SMO,Actifio,Oracle Snap Clone和Delphix的初學者。其中大多數需要一些可能成爲障礙的專用硬件。 Delphix完全是軟件,甚至有一個名爲Delphix Express的免費版本,您可以下載。 Rubrick和Cohesity正在使用類似的技術來處理VM鏡像。

最好的祝願 Kyle Hailey

相關問題