Oracle-11g-R2
兩台不同主機數據庫之間的Oracle表傳輸
我有一個 500Gb 的表,我需要將它傳輸到另一個遠端主機中的另一個 Oracle 數據庫。我在兩台主機之間有 10 兆比特/秒的速度連接。轉移表的最有效方法是什麼?發生災難的可能性很小。
即使連接波動也不應該有任何數據失去。該方法必須是所有方法中最快的。
我想要一個不使用外部驅動器的解決方案。
使用運動鞋網
SneakerNet可能已經過時了,但對於像您這樣的極端情況仍然有用。
- 購買 1 TB 硬碟
- 在 HD 上創建可傳輸表空間 (
TTS
) 或轉儲文件 ( )expdp
- 手動轉移硬碟。
- USPS/UPS/FedEx 也適用
- 將其載入到遠端伺服器上
編輯
由於原始海報的評論,添加了以下部分。
還想使用您的網際網路進行傳輸嗎?
增加兩個站點的頻寬。
這是非常具體的位置。如果可以的話,會推薦這個。我相信 4G LTE(手機)可以以高於 10 Mbps 的速率傳輸。
也許,您處於使 SneakNet 無法生存的某個極端位置(例如,在亞馬遜徒步 10 天)。或者,這是任何 ISP 可用的最快速度。
極端範例:您嘗試從Opportunity傳輸 500GB 的數據,其調製解調器的傳輸速率為 10Mbps。
我假設您由於您的地面位置而受到某種限制。
數據可以只讀
只讀要求是確保數據在複製所有內容所需的 5 到 10 天內不會更改
- 創建數據庫連結
- 使用
DBMS_PARALLEL_EXECUTE
(DPE) 與PARALLEL_LEVEL => 1
- 您將使用的 SQL 語句是一個簡單的
INSERT ... SELECT
語句。(帶有適當的WHERE
子句 forDPE
)在這 5 天以上的時間裡,您的頻寬將達到最大值。
您將需要調整塊大小以匹配“好的,我可以等待 x 分鐘重做這個失敗的塊”的個人偏好。
DPE 用於幫助您輕鬆管理那些失敗的塊。
表是 OLTP 的一部分
在這種情況下,表格保證在 10 天以上(計算為 2*)內發生變化以傳輸數據。
您選擇的作業系統可能是您的祝福或詛咒。
此外,您將需要大量磁碟空間。遠遠超過 500GB(更像是 1.5TB 到 2TB)。
與 DPE 類似,您將數據分解為更小、更易於管理的塊。但是,您需要完成所有工作。
涉及的步驟
- 創建 expdp 文件(oracle 文件)
- 壓縮它。(特定於作業系統)
- 這可能會減少您的數據。您的米數可能會有所不同 (YMMV)
- 將文件拆分為多個塊(特定於作業系統)
- 收集所有部分的 md5/sha-256 校驗和(特定於作業系統)
- ftp 每個塊(特定於作業系統)
- 根據需要重新啟動 FTP
- 確保您準備好等待 5 天以上。
- 如果網際網路連接不可靠,請編寫一個 shell 腳本來自動化該過程(特定於作業系統)
- 您可能正在使用共享連接。計劃 10 天以上
- 收集遠端站點上所有部分的 md5/sha-256 校驗和(特定於作業系統)
- 比較(特定於作業系統)
- 重新發送失去的部分
- 重新發送 MD5/sha-256 校驗和不匹配的片段。
- 您確實首先將 FTP 置於 BINARY 模式。對?
- 將文件連接在一起(特定於作業系統)
- 解壓縮文件(特定於作業系統)
- impdp 文件(oracle 文件)
115 小時的低端估計值基於給定的未壓縮數據大小。如果您的數據可以壓縮,您可以看到大小顯著減小。您的里程可能會有所不同 (YMMV)。