Oracle-11g-R2

兩台不同主機數據庫之間的Oracle表傳輸

  • September 4, 2018

我有一個 500Gb 的表,我需要將它傳輸到另一個遠端主機中的另一個 Oracle 數據庫。我在兩台主機之間有 10 兆比特/秒的速度連接。轉移表的最有效方法是什麼?發生災難的可能性很小。

即使連接波動也不應該有任何數據失去。該方法必須是所有方法中最快的。

我想要一個不使用外部驅動器的解決方案。

使用運動鞋網

SneakerNet可能已經過時了,但對於像您這樣的極端情況仍然有用

  1. 購買 1 TB 硬碟
  2. 在 HD 上創建可傳輸表空間 ( TTS) 或轉儲文件 ( )expdp
  3. 手動轉移硬碟。
  • USPS/UPS/FedEx 也適用
  1. 將其載入到遠端伺服器上

編輯

由於原始海報的評論,添加了以下部分。

還想使用您的網際網路進行傳輸嗎?

增加兩個站點的頻寬。

這是非常具體的位置。如果可以的話,會推薦這個。我相信 4G LTE(手機)可以以高於 10 Mbps 的速率傳輸。

也許,您處於使 SneakNet 無法生存的某個極端位置(例如,在亞馬遜徒步 10 天)。或者,這是任何 ISP 可用的最快速度。

極端範例:您嘗試從Opportunity傳輸 500GB 的數據,其調製解調器的傳輸速率為 10Mbps。

我假設您由於您的地面位置而受到某種限制。

數據可以只讀

只讀要求是確保數據在複製所有內容所需的 5 到 10 天內不會更改

  1. 創建數據庫連結
  2. 使用DBMS_PARALLEL_EXECUTE(DPE) 與PARALLEL_LEVEL => 1
  • 您將使用的 SQL 語句是一個簡單的INSERT ... SELECT語句。(帶有適當的WHERE子句 for DPE

在這 5 天以上的時間裡,您的頻寬將達到最大值。

您將需要調整塊大小以匹配“好的,我可以等待 x 分鐘重做這個失敗的塊”的個人偏好。

DPE 用於幫助您輕鬆管理那些失敗的塊。

表是 OLTP 的一部分

在這種情況下,表格保證在 10 天以上(計算為 2*)內發生變化以傳輸數據。

您選擇的作業系統可能是您的祝福或詛咒。

此外,您將需要大量磁碟空間。遠遠超過 500GB(更像是 1.5TB 到 2TB)。

與 DPE 類似,您將數據分解為更小、更易於管理的塊。但是,您需要完成所有工作。

涉及的步驟

  1. 創建 expdp 文件(oracle 文件)
  2. 壓縮它。(特定於作業系統)
  • 這可能會減少您的數據。您的米數可能會有所不同 (YMMV)
  1. 將文件拆分為多個塊(特定於作業系統)
  2. 收集所有部分的 md5/sha-256 校驗和(特定於作業系統)
  3. ftp 每個塊(特定於作業系統)
  • 根據需要重新啟動 FTP
  • 確保您準備好等待 5 天以上。
  • 如果網際網路連接不可靠,請編寫一個 shell 腳本來自動化該過程(特定於作業系統)
  • 您可能正在使用共享連接。計劃 10 天以上
  1. 收集遠端站點上所有部分的 md5/sha-256 校驗和(特定於作業系統)
  2. 比較(特定於作業系統)
  • 重新發送失去的部分
  • 重新發送 MD5/sha-256 校驗和不匹配的片段。
  • 您確實首先將 FTP 置於 BINARY 模式。對?
  1. 將文件連接在一起(特定於作業系統)
  2. 解壓縮文件(特定於作業系統)
  3. impdp 文件(oracle 文件)

115 小時的低端估計值基於給定的未壓縮數據大小。如果您的數據可以壓縮,您可以看到大小顯著減小。您的里程可能會有所不同 (YMMV)。

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