本文為您介紹如何使用資料轉送遷移 OceanBase 資料庫 Oracle 租戶的資料至 Oracle 資料庫。
如果資料移轉任務長期處於非活躍狀態(任務狀態為 失敗、已暫停 或 已完成),受增量日誌保留時間長度等影響,任務可能無法恢複。資料轉送將主動釋放處於非活躍狀態超過 7 天的資料移轉任務,以回收相關資源,建議您為任務配置警示並及時處理任務相關異常。
背景資訊
在資料轉送控制台建立從 OceanBase 資料庫 Oracle 租戶遷移資料至 Oracle 資料庫的資料移轉任務,您可以通過結構遷移、全量遷移和增量同步處理,無縫遷移源端資料庫中的存量業務資料和增量資料至 Oracle 資料庫。
資料轉送支援將多個 OceanBase 資料庫 Oracle 租戶的表資料匯聚至 Oracle 資料庫的同一張表中,其中無需結構遷移,只需要進行全量遷移和增量同步處理。該匯聚同步功能的使用限制如下:
對於全量遷移和增量同步處理,源端有的列,目標端必須有。如果不滿足該要求,資料轉送會報錯。
主鍵列在源端表中必須存在。
目標表中的列,可以存在源端不存在的列。
前提條件
資料轉送已具備雲資源存取權限。詳情請參見 資料轉送遷移角色授權。
已在目標端 Oracle 資料庫建立對應的 Schema。
已為源端 OceanBase 資料庫 Oracle 租戶和目標端 Oracle 資料庫建立專用於資料移轉任務的資料庫使用者,並為其賦予了相關許可權。詳情請參見 建立資料庫使用者。
如果您需要遷移無主鍵表,請在執行資料移轉任務前,在相應租戶中建立
__OCEANBASE_INNER_DRC_USER
使用者並賦予其許可權。詳情請參見 建立 __OCEANBASE_INNER_DRC_USER 使用者。
使用限制
源端資料庫的操作限制
請勿在結構遷移和全量遷移階段執行庫或表結構變更的 DDL 操作,否則可能造成資料移轉任務中斷。
資料轉送支援的 Oracle 資料庫版本為 10G/11G/12C/18C/19C,12C 及之後版本包含資料庫容器(Container Database,CDB)和可插拔資料庫(Pluggable Database,PDB)。
資料轉送不支援表中全部列均為 LOB 類型(BLOB/CLOB/NCLOB)的增量資料移轉。
資料轉送不支援遷移 OceanBase 資料庫 Oracle 租戶的非模板化二級分區表至 Oracle 資料庫。
資料轉送暫不支援基於運算式的索引。
資料轉送僅支援有主鍵表的多表匯聚。
資料轉送僅支援遷移庫名、表名和列名為 ASCII 碼並且不包含特殊字元(包括換行、空格,以及 .|"'`()=;/&\)的對象。
目標端是資料庫的情況下,資料轉送不支援目標端存在觸發器(Trigger)。如果存在觸發器,可能導致資料移轉失敗。
資料來源標識和使用者帳號等,在資料轉送系統內是全域唯一的。
Oracle 資料庫 11G 及之前版本不支援建立超過 30 個位元組的資料庫物件。請注意,在遷移 OceanBase 資料庫 Oracle 租戶的資料至 Oracle 資料庫時,不能在源端建立大於本限制的資料庫物件。
資料轉送不支援遷移空間索引。包括存量的空間索引,以及增量階段新增的空間索引(包括 INSERT USER_SDO_GEOM_METADATA)。
Oracle 資料庫寫入 GIS 類型資料的限制如下:
不支援寫入 SRID 為 0、4327 和 4328 的資料。
不支援寫入
SDO_POINT_TYPE(0.00001, 0.00001, 0)
等會在使用get_wkt
之後被轉換成科學計數法表示的資料。僅支援寫入座標資料範圍在 -2147483647 ~ 2147483647 的資料。
請確保在使用 4326 座標系時,經緯度的取值在合理範圍內。經度範圍為 -180 到 180,緯度範圍為 -90 到 90。如果超出該範圍,會導致資料移轉不一致。
超過一定位元小數點的資料無法寫入成功,主要原因是讀取出來科學計數法無法被寫入。
使用科學計數法表示被讀取到的資料中有下述兩個定義:
scale:表示值的小數位點。例如,123.45 的 scale 為 2,0.000001 的 scale 為 6。
precision:表示值的精度,第一個非 0 之後的值長度。例如,123.45 的 precision 為 5,0.000001 的 precision 為 1。
如果資料的 -scale + (precision + 1) < -2,則該資料將轉換為以 10 為底的科學計數法。
例如,0.00001 的 scale 為 5,precision 為 1,則 -5 + (1 + 1) = -3 < -2,會被轉換為 1e-5e。具體數值請以
sdo_geometry.get_wkt()
方法或者SDO_UTIL.TO_WKTGEOMETRY
結果為準。值過大或過小的資料可能無法寫入成功。值大於 INT(32 位整數,2147483647)最大值或小於 INT(32 位整數,-2147483647)最小值的數均可能無法寫入成功。
注意事項
OceanBase 資料庫 Oracle 租戶至 Oracle 資料庫的反向增量情境下,請注意以下問題:
當需要進行 Oracle 資料庫的增量同步處理時,Oracle 資料庫單個歸檔檔案的大小建議小於 2GB。
Oracle 資料庫的歸檔檔案儲存 2 天以上,否則由於某個時間段歸檔量陡增等情況,準備恢複時沒有了歸檔檔案,將無法恢複。
Oracle 資料庫的增量日誌解析最大支援 5T/天。
OceanBase 資料庫 Oracle 租戶至 Oracle 資料庫 12C 及之後版本的反向增量步驟,資料轉送不支援遷移超過 30 個位元組的資料庫物件(包括 Schema、表和列等)。如果您需要遷移超過 30 個位元組的資料庫物件,請聯絡技術支援人員。
資料轉送不支援 Oracle 資料庫執行某些
UPDATE
命令。以下樣本為一個不支援的UPDATE
命令。UPDATE TABLE_NAME SET KEY=KEY+1;
上述樣本中,
TABLE_NAME
是表名,KEY
是定義為主鍵的 NUMERIC 類型的列。對於無主鍵且包含 LOB 類型欄位的表,反向增量會出現資料品質問題。
對於 OceanBase 資料庫 V4.x,強烈建議您開啟歸檔日誌。開啟歸檔日誌後,如果 Clog 被回收,資料轉送仍然可以通過消費歸檔日誌來實現增量同步處理能力。
如果源端字元集為 UTF-8,建議目標端使用相容源端的字元集(例如,UTF-8、UTF-16 等),避免因字元集不相容導致目標端出現亂碼等問題。
節點之間的時鐘不同步,或者電腦終端和伺服器之間的時鐘不同步,均可能導致延遲時間(增量同步處理/反向增量)不準確。
例如,如果時鐘早於標準時間,可能導致延遲時間為負數。如果時鐘晚於標準時間,可能導致延遲。
支援 Oracle 字元集和 OceanBase 資料庫 Oracle 租戶不同情境下,欄位長度根據資料移轉任務的具體情況選擇策略。
遷移無主鍵表時,通過在目標端新增隱藏列進行遷移。但是如果目標端是 Oracle 資料庫 12C 之前的版本,則通過在目標端增加非隱藏列的方式進行遷移。
如果源端表包含欄位名
OMS_PK_INCRMT
,則增量同步處理任務中斷且無法恢複。在未開啟同步 DDL 的情況下,如果您變更目標端的唯一索引,需要重新啟動資料移轉任務,否則可能存在資料不一致的問題。
如果資料移轉任務未啟用正向切換,請刪除目標端資料庫對應的唯一索引和偽列。如果不刪除唯一索引和偽列,會導致無法寫入資料,以及往下遊匯入資料時,會重建偽列,導致與源端資料庫的偽列發生衝突。
如果資料移轉任務已啟用正向切換,資料轉送會根據資料移轉任務的類型,自動刪除隱藏列和唯一索引。詳情請參見 資料移轉服務隱藏列機制說明。
庫表匯聚情境下:
建議您使用匹配規則的方式映射源端和目標端的關係。
建議您自行在目標端建立表結構。如果使用資料轉送建立,請在結構遷移步驟跳過部分失敗對象。
請檢查 OceanBase 資料庫 Oracle 租戶資源回收筒內的對象。當對象大於 100 時,容易造成內部表查詢逾時,請進行資源回收筒的對象清理工作。
檢查資源回收筒是否開啟。
SELECT Value FROM V$parameter WHERE Name = 'recyclebin';
檢查資源回收筒內對象的數量。
SELECT count(*) FROM RECYCLEBIN;
如果您在遷移過程中,跳過 "源端-主庫-資料庫 ROW_MOVEMENT 檢查" 預檢查項,同步
ROW_MOVEMENT
為enable
的表,會出現資料不一致的情況。在源端為 OceanBase 資料庫並開啟同步 DDL 的資料移轉任務中,如果源端庫表發生重新命名(RENAME)操作,建議您重新啟動任務,以避免增量同步處理遺失資料。
如果建立資料移轉任務時,您僅配置了 增量同步處理,資料轉送要求源端資料庫的本地增量日誌儲存 48 小時以上。
如果在建立資料移轉任務時,您配置了 全量遷移+增量同步處理,資料轉送要求源端資料庫的本地增量日誌至少保留 7 天以上。否則資料轉送可能因無法擷取增量日誌而導致資料移轉任務失敗,甚至導致源端和目標端資料不一致。
如果源端或目標端存在僅大小寫不同的表對象,可能會因為源端或目標端大小寫不敏感導致資料移轉的結果不符合預期。
支援的源端和目標端執行個體類型
下表中,OceanBase 資料庫 Oracle 租戶簡稱為 OB_Oracle。
源端 | 目標端 |
OB_Oracle(OceanBase 叢集執行個體) | Oracle(VPC 內自建資料庫) |
資料類型映射
OceanBase 資料庫 Oracle 租戶 | Oracle 資料庫 |
CHAR(n CHAR) | CHAR(n CHAR) |
CHAR(n BYTE) | CHAR(n BYTE) |
NCHAR(n) | NCHAR(n) |
NCHAR(n BYTE) | NCHAR(n) |
VARCHAR2(n) | VARCHAR2(n) |
NVARCHAR2(n) | NVARCHAR2(n) |
NVARCHAR2(n BYTE) | NVARCHAR2(n) |
NUMBER(n) | NUMBER(n) |
NUMBER(p, s) | NUMBER(p,s) |
RAW | RAW |
CLOB | CLOB |
BLOB | BLOB |
FLOAT(n) | FLOAT (n) |
BINARY_FLOAT | BINARY_FLOAT |
BINARY_DOUBLE | BINARY_DOUBLE |
DATE | DATE |
TIMESTAMP | TIMESTAMP |
TIMESTAMP WITH TIME ZONE | TIMESTAMP WITH TIME ZONE |
TIMESTAMP WITH LOCAL TIME ZONE | TIMESTAMP WITH LOCAL TIME ZONE |
INTERVAL YEAR(p) TO MONTH | INTERVAL YEAR(p) TO MONTH |
INTERVAL DAY(p) TO SECOND | INTERVAL DAY(p) TO SECOND |
ROWID | ROWID |
UROWID | UROWID |
SDO_GEOMETRY | SDO_GEOMETRY |
建立資料移轉任務
登入 OceanBase 管理主控台,購買資料移轉任務。
詳情請參見 購買資料移轉任務。
在 資料轉送 > 資料移轉 頁面,單擊新購買的資料移轉任務後的 配置。
如果您需要引用已有的任務配置資訊,可以單擊 引用配置。詳情請參見 引用資料移轉任務配置。
在 選擇源和目標 頁面,配置各項參數。
參數
描述
遷移任務名稱
建議使用中文、數字和字母的組合。名稱中不能包含空格,長度不能超過 64 個字元。
標籤(可選)
單擊文字框,在下拉式清單中選擇目標標籤。您也可以單擊 管理標籤,進行建立、修改和刪除。詳情請參見 通過標籤管理資料移轉任務。
源端
如果您已建立 OceanBase 資料庫 Oracle 租戶資料來源,請從下拉式清單中進行選擇。如果未建立,請單擊下拉式清單中的 建立資料來源,在右側對話方塊進行建立。參數詳情請參見 建立 OceanBase 資料來源。
重要源端僅支援 OceanBase 資料庫 Oracle 租戶的 執行個體類型 為 OceanBase 叢集執行個體。
目標端
如果您已建立 Oracle 資料來源,請從下拉式清單中進行選擇。如果未建立,請單擊下拉式清單中的 建立資料來源,在右側對話方塊進行建立。參數詳情請參見 建立 Oracle 資料來源。
單擊 下一步。在 選擇遷移類型 頁面,選擇當前資料移轉任務的遷移類型。
遷移類型 包括 結構遷移、全量遷移、增量同步處理、全量校正 和 反向增量。
遷移類型
描述
結構遷移
結構遷移任務開始後,資料轉送會遷移源庫中的資料對象定義(表、索引、約束、注釋和視圖等)至目標端資料庫中,並自動過濾暫存資料表。
全量遷移
全量遷移任務開始後,資料轉送會遷移源庫表的存量資料至目標端資料庫對應的表中。如果選擇 全量遷移,建議您在遷移資料前,收集 OceanBase 資料庫 Oracle 租戶的統計資訊。
增量同步處理
增量同步處理任務開始後,資料轉送會同步源端資料庫發生變化的資料(新增、修改或刪除)至目標端資料庫對應的表中。
增量同步處理 包括 DML 同步 和 DDL 同步,您可以根據需求進行自訂配置。詳情請參見 自訂配置 DDL/DML。增量同步處理 的使用限制如下:
如果您選擇了 DDL 同步,當源端資料庫發生資料轉送未支援的同步 DDL 操作時,會存在資料移轉中斷的風險。
如果 DDL 操作為新增列,建議您將該列的屬性設定為 NULL,否則會存在資料移轉中斷的風險。
全量校正
在全量遷移完成、增量資料同步至目標端並與源端基本追平後,資料轉送會自動發起一輪針對源端資料庫配置的資料表和目標表的全量資料校正任務。
如果選擇 全量校正,建議您在全量校正開始前,收集 OceanBase 資料庫 Oracle 租戶的統計資訊,並使用
GATHER_SCHEMA_STATS
或GATHER_TABLE_STATS
語句收集 Oracle 資料庫的統計資訊。如果您選擇了 增量同步處理,且 DML 同步 選項中未選擇所有的 DML,則資料轉送不支援本情境下的全量資料校正。
反向增量
反向增量任務開始後,可以即時將業務切換後在目標端資料庫產生的變更資料迴流至源端資料庫。
通常反向增量會複用增量同步處理的配置,您也可以根據實際需求進行自訂配置。
單擊 下一步。在 選擇遷移對象 頁面,選擇當前資料移轉任務的遷移對象。
您可以通過 指定對象 和 匹配規則 兩個入口選擇遷移對象。
重要待遷移的表名和其中的列名不能包含中文字元。
當資料庫的庫名或表名存在“$$”字元時,會影響資料移轉任務的建立。
如果您在 選擇遷移類型 步驟已勾選 DDL 同步,建議通過匹配規則方式選擇遷移對象,以確保所有符合遷移對象規則的新增對象都將被同步。如果您通過指定對象方式選擇遷移對象,則新增對象或重新命名後的對象將不會被同步。
選擇 指定對象,在左側選中需要遷移的對象,單擊 >,將其添加至右側列表中。您可以選擇一個或多個庫的表、視圖作為遷移對象。
資料轉送支援通過文本匯入對象,並支援對目標端對象進行重新命名、設定行過濾、查看列資訊,以及移除單個或全部遷移對象等操作。
說明通過 匹配規則 方式選擇遷移對象時,重新命名能力由匹配規則文法覆蓋,操作處僅支援設定過濾條件。詳情請參見 配置匹配規則。
操作
步驟
匯入對象
在選擇地區的右側列表中,單擊右上方的 匯入對象。
在對話方塊中,單擊 確定。
重要匯入會覆蓋之前的操作選擇,請謹慎操作。
在 匯入遷移對象 對話方塊中,匯入需要遷移的對象。
您可以通過匯入 CSV 檔案的方式進行庫表重新命名、設定行過濾條件等操作。詳情請參見 下載和匯入遷移對象配置。
單擊 檢驗合法性。
完成遷移對象匯入後,請先檢驗合法性。目前暫不支援欄欄位映射。
通過檢驗後,單擊 確定。
重新命名
資料轉送支援重新命名遷移對象的名稱,詳情請參見 資料庫庫表重新命名。
設定
資料轉送支援
WHERE
條件實現行過濾,詳情請參見 SQL 條件過濾資料。您還可以在 查看列 地區,查看遷移對象的列資訊。
移除/全部移除
資料轉送支援在資料對應時,對暫時選中到目標端的單個或多個對象進行移除操作。
移除單個遷移對象
在選擇地區的右側列表中,滑鼠移至上方至目標對象,單擊顯示的 移除,即可移除該遷移對象。
移除全部遷移對象
在選擇地區的右側列表中,單擊右上方的 全部移除。在對話方塊中,單擊 確定,即可移除全部遷移對象。
選擇 匹配規則,詳情請參見 配置匹配規則。
單擊 下一步。在 遷移選項 頁面,配置各項參數。
全量遷移
在 選擇遷移類型 頁面,選中 全量遷移,才會顯示下述參數。
參數
描述
讀取並發配置
該參數用於配置全量遷移階段從源端讀取資料的並發數,最大限制為 512.並發數過高可能會造成源端壓力過大,影響業務。
寫入並發配置
該參數用於配置全量遷移階段往目標端寫入資料的並發數,最大限制為 512。並發數過高可能會造成目標端壓力過大,影響業務。
全量遷移速率限制
您可以根據實際需求決定是否開啟全量遷移速率限制。如果開啟,請設定 RPS(全量遷移階段每秒最多可以遷移至目標端的資料行數的最大值限制)和 BPS(全量遷移階段每秒最多可以遷移至目標端的資料量的最大值限制)。
說明此處設定的 RPS 和 BPS 僅作為限速和限流能力,全量遷移實際可以達到的效能受限於源端、目標端、執行個體規格配置等因素的影響。
目標端表對象存在記錄時處理策略
處理策略包括 忽略 和 停止遷移:
選擇 忽略:當目標端表對象存在資料時,如果原資料與寫入資料衝突,資料轉送採用將衝突資料記錄日誌,保留原資料不變的策略進行資料寫入。
重要選擇 忽略,全量校正將使用 IN 模式拉取資料,無法校正目標端存在源端沒有的資料的情境,並且校正效能會有一定程度降級。
選擇預設值 停止遷移:當目標端表對象存在資料時,全量遷移會報錯不允許遷移,請處理好目標端資料後再繼續遷移。
重要如果出錯後單擊恢複,資料轉送將忽略該配置選項,繼續遷移表資料,請謹慎操作。
是否允許索引後置
您可以設定是否允許全量資料移轉完成後再建立索引,索引後置功能能夠縮短全量遷移耗時。選擇索引後置的注意事項,請參見表格下方的說明。
重要在 選擇遷移類型 頁面同時選中 結構遷移 和 全量遷移,才會顯示該參數。
僅非唯一鍵索引支援後置建立。
當您選擇 允許 後,請進行下述配置:
單條索引 DDL 並發配置:並行度越高,資源消耗越大,遷移速度越快。
最大並發索引 DDL 數量配置:同一時刻,系統調用的後置索引 DDL 數量的最大值限制。
允許索引後置的情況下,建議您根據 OceanBase 資料庫的硬體條件和當前業務流量情況,自行調節參數。
如果您使用的是 OceanBase 資料庫 V4.x,請通過黑屏用戶端工具調整以下 sys 租戶參數和業務租戶參數。
調整 sys 租戶參數
// parallel_servers_target 用於設定每個 Server 上的並行查詢排隊條件。 // 如果完全為了效能,建議您將該參數調整為大於物理 CPU 的值,例如 1.5 倍。同時設定的值不超過 64,避免產生 OceanBase 資料庫核心搶鎖問題。 set global parallel_servers_target = 64;
調整業務租戶參數
// 檔案記憶體緩衝區限制 alter system set _temporary_file_io_area_size = '10' tenant = 'xxx'; // V4.x 關閉限流 alter system set sys_bkgd_net_percentage = 100;
如果您使用的是 OceanBase 資料庫 V3.x ,請通過黑屏用戶端工具調整以下 sys 租戶參數。
// parallel_servers_target 用於設定每個 Server 上的並行查詢排隊條件。 // 如果完全為了效能,建議您將該參數調整為大於物理 CPU 的值,例如 1.5 倍。同時設定的值不超過 64,避免產生 OceanBase 資料庫核心搶鎖問題。 set global parallel_servers_target = 64; // data_copy_concurrency 用於設定系統中並發執行的資料移轉複製任務的最大並發數。 alter system set data_copy_concurrency = 200;
增量同步處理
在 選擇遷移類型 頁面,選中 增量同步處理,才會顯示下述參數。
參數
描述
寫入並發配置
該參數用於配置增量同步處理階段往目標端寫入資料的並發數,最大限制為 512。並發數過高可能會造成目標端壓力過大,影響業務。
增量同步處理速率限制
您可以根據實際需求決定是否開啟增量同步處理速率限制。如果開啟,請設定 RPS(增量同步處理階段每秒最多可以同步至目標端的資料行數的最大值限制)和 BPS(增量同步處理階段每秒最多可以同步至目標端的資料量的最大值限制)。
說明此處設定的 RPS 和 BPS 僅作為限速限流能力,增量同步處理實際可以達到的效能受限於源端、目標端、執行個體規格配置等因素的影響。
增量同步處理起始位點
如果選擇遷移類型時已選擇 全量遷移,該參數不顯示。
如果選擇遷移類型時未選擇 全量遷移,但選擇了 增量同步處理,請在此處指定遷移某個時間節點之後的資料,預設為當前系統時間。詳情請參見 設定增量同步處理位點。
反向增量
在 選擇遷移類型 頁面,選中 增量同步處理,才會顯示該地區的參數。反向增量的配置參數預設 複用增量同步處理配置。
您也可以取消複用增量同步處理配置,根據實際需求進行配置。
參數
描述
寫入並發配置
該參數用於配置反向增量階段往源端寫入資料的並發數,最大限制為 512。並發數過高可能會造成源端壓力過大,影響業務。
增量同步處理速率限制
您可以根據實際需求決定是否開啟增量同步處理速率限制。如果開啟,請設定 RPS(反向增量同步處理階段每秒最多可以同步至源端的資料行數的最大值限制)和 BPS(反向增量同步處理階段每秒最多可以同步至源端的資料量的最大值限制)。
說明此處設定的 RPS 和 BPS 僅作為限速限流能力,反向增量同步處理實際可以達到的效能受限於源端、目標端、執行個體規格配置等因素的影響。
增量同步處理起始位點
預設以正向切換(如有)為準,不支援修改。
遷移進階配置
當源端 OceanBase 資料庫為 V4.3.0 及之後版本,並且在 選擇遷移類型 頁面,選中 反向增量 > DDL 同步,才會顯示該地區的參數。
源端表Object Storage Service類型包括 預設、行存、列存 和 行列混存,該配置用於確定反向增量同步處理時源端表對象的儲存類型。詳情請參見 default_table_store_format。
說明預設 選項是根據目標端參數配置自適應其他選項,是反向增量時增量 DDL 的新增表對象根據設定的儲存類型寫對應的結構。
單擊 預檢查,系統對資料移轉任務進行預檢查。
在 預檢查 環節,資料轉送會檢查資料庫使用者的讀寫權限、資料庫的網路連接等是否符合要求。全部檢查任務均通過後才能啟動資料移轉任務。如果預檢查報錯:
您可以在排查並處理問題後,重新執行預檢查,直至預檢查成功。
您也可以單擊錯誤預檢查項操作列中的 跳過,會彈出對話方塊提示您跳過本操作的具體影響,確認可以跳過後,請單擊對話方塊中的 確定。
預檢查成功後,單擊 啟動任務。
如果您暫時無需啟動任務,請單擊 儲存。後續您只能在 遷移工作清單 頁面手動啟動任務或通過大量操作啟動任務。大量操作的詳情請參見 大量操作資料移轉任務。
資料轉送支援在資料移轉任務運行過程中修改遷移對象,詳情請參見 查看和修改遷移對象及其過濾條件。資料移轉任務啟動後,會根據所選擇的遷移類型依次執行,詳情請參見 查看遷移詳情。