本文為您介紹如何使用資料轉送遷移 Oracle 資料庫的資料至 OceanBase 資料庫 Oracle 租戶。
如果資料移轉任務長期處於非活躍狀態(任務狀態為 失敗、已暫停 或 已完成),受增量日誌保留時間長度等影響,任務可能無法恢複。資料轉送將主動釋放處於非活躍狀態超過 7 天的資料移轉任務,以回收相關資源,建議您為任務配置警示並及時處理任務相關異常。
前提條件
資料轉送已具備雲資源存取權限。詳情請參見 資料轉送遷移角色授權。
已為源端 Oracle 資料庫和目標端 OceanBase 資料庫 Oracle 租戶建立專用於資料移轉的資料庫使用者,並為其賦予相關許可權。詳情請參見 建立資料庫使用者。
已在目標端 OceanBase 資料庫 Oracle 租戶建立對應的資料庫。OceanBase 資料移轉功能支援遷移表和列,不支援遷移庫,您需要提前在目標端建立對應的資料庫。
Oracle 源執行個體必須開啟 Archive Log,並且在資料轉送差異複寫前已經切換過 LogFile。
Oracle 源執行個體必須已經安裝並可正常使用 LogMiner 工具。
您可以通過 LogMiner 工具擷取 Oracle 歸檔記錄檔中的具體內容。
確認 Oracle 執行個體已開啟資料庫層級或者表層級的補償日誌。
開啟資料庫層級的 PK 和 UK 補償日誌,當無需同步的表產生較多不必要的日誌時,會增加 LogMiner Reader 拉取日誌的壓力和 Oracle 自身的壓力。所以,資料轉送支援 Oracle 資料庫僅開啟表層級的 PK 和 UK 補償日誌。但是,如果在建立遷移任務時,針對非 PK 列或 UK 列設定了 ETL 過濾,請開啟對應列的補償日誌,或者直接開啟所有列的補償日誌。
Oracle 機器和資料轉送機器之間需要進行時鐘同步(例如配置 NTP 服務),否則會存在資料風險。如果是 Oracle RAC,則多個 Oracle 執行個體之間也需要進行時鐘同步。
如果源端是通過資料庫網關接入的 Oracle 資料庫,請確保已通過資料庫網關接入阿里雲,詳情請參見 快速入門。
使用限制
源端資料庫的操作限制
請勿在結構遷移和全量遷移階段執行庫或表結構變更的 DDL 操作,否則可能造成資料移轉任務中斷。
資料轉送支援的 Oracle 資料庫版本為 10G/11G/12C/18C/19C,12C 及之後版本包含資料庫容器(Container Database,CDB)和可插拔資料庫(Pluggable Database,PDB)。
資料轉送僅支援遷移普通表和視圖。
資料轉送僅支援遷移庫名、表名和列名為 ASCII 碼且不包含特殊字元(包括換行、空格,以及 .|"'`()=;/&\)的對象。
目標端是資料庫的情況下,資料轉送不支援目標端存在觸發器(Trigger)。如果存在,可能導致資料移轉失敗。
資料轉送不支援遷移 Oracle 資料庫中的索引組織表(IOT,Index-Organized Table),否則會出現資料移轉任務中斷的問題。
資料類型的限制
不支援表中全部列均為 LOB 類型(BLOB/CLOB/NCLOB)的增量資料同步。
對於無主鍵且包含 LOB 類型欄位的表,反向增量會出現資料品質問題。
資料來源標識和使用者帳號等,在資料轉送系統內是全域唯一的。
Oracle 資料庫的增量日誌解析最大支援 5T/天。
Oracle 資料庫 11G 及之前版本不支援建立超過 30 個位元組的資料庫物件。在反向增量步驟中,請注意不能在 OceanBase 資料庫 Oracle 租戶中建立大於本限制的資料庫物件。
資料轉送不支援遷移 Oracle 資料庫 12C 及之後版本中超過 30 個位元組的資料庫物件(包括 Schema、表和列等)。如果您需要遷移超過 30 個位元組的資料庫物件,請聯絡技術支援人員。
資料轉送不支援源端 Oracle 資料庫執行某些
UPDATE
命令。以下樣本為一個不支援的UPDATE
命令。UPDATE TABLE_NAME SET KEY=KEY+1;
上述樣本中,
TABLE_NAME
是表名,KEY
是定義為主鍵的 NUMERIC 類型的列。自建資料庫所在的 VPC 必須和 OceanBase 資料庫位於同一個地區。
注意事項
當需要進行 Oracle 資料庫的增量同步處理時,Oracle 資料庫單個歸檔檔案的大小建議小於 2GB。
Oracle 資料庫的歸檔檔案儲存 2 天以上,否則由於某個時間段歸檔量陡增等情況,準備恢複時沒有了歸檔檔案,將無法恢複。
如果源端 Oracle 資料庫存在交換主鍵的 DML 語句,將導致資料轉送解析日誌異常,遷移至目標端時存在資料丟失的問題。交換主鍵的 DML 語句樣本如下:
update test set c1=(case when c1=1 then 2 when c1=2 then 1 end) where c1 in (1,2);
Oracle 執行個體的字元集配置可以為 AL32UTF8、AL16UTF16、ZHS16GBK 和 GB18030。
如果源端字元集為 UTF-8,建議目標端使用相容源端的字元集(例如,UTF-8、UTF-16 等),避免因字元集不相容導致目標端出現亂碼等問題。
遷移 Oracle 資料庫的資料至 OceanBase 資料庫 Oracle 租戶時,禁止所有表進行匯入、匯出、Alter Table、Flashback Table、分區分裂或合并等會導致 ROWID 變更的操作。
當源端 Oracle 資料庫存在更新分區鍵、合并分區等影響 RowID 行為的操作時,目標端 OceanBase 資料庫 Oracle 租戶增加了隱藏列依賴 RowID,可能導致資料丟失的風險。
節點之間的時鐘不同步,或者電腦終端和伺服器之間的時鐘不同步,均可能導致延遲時間(增量同步處理/反向增量)不準確。
例如,如果時鐘早於標準時間,可能導致延遲時間為負數。如果時鐘晚於標準時間,可能導致延遲。
由於中國曾經實行夏令時的歷史原因,導致 Oracle 資料庫至 OceanBase 資料庫 Oracle 租戶的增量同步處理中,1986 年~1991 年的夏令時開始和結束的日期,以及 1988 年 4 月 10 日~ 4 月 17 日,
TIMESTAMP(6) WITH TIME ZONE
類型,源端和目標端可能存在 1 小時的時間差。在未開啟同步 DDL 的情況下,如果您變更目標端的唯一索引,需要重啟資料移轉任務,否則可能存在資料不一致的問題。
如果資料移轉任務沒有啟用正向切換,請刪除目標端資料庫對應的唯一索引和偽列。如果不刪除唯一索引和偽列,會導致無法寫入資料,以及往下遊匯入資料時,會重建偽列,導致與源端資料庫的偽列發生衝突。
如果資料移轉任務已啟用正向切換,資料轉送會根據資料移轉任務的類型,自動刪除隱藏列和唯一索引。詳情請參見 資料移轉服務隱藏列機制說明。
對於 Oracle 資料庫至 OceanBase 資料庫 Oracle 租戶的增量同步處理,如果有新增的無主鍵表遷移,資料轉送不會自動刪除在 OceanBase 資料庫 Oracle 租戶目標端添加的隱藏列和唯一索引。在進行反向遷移前,請您手動刪除。
您可以查看
logs/msg/manual_table.log
檔案,確認增量同步處理階段添加的無主鍵表。當源端和目標端的字元編碼配置不同時,結構遷移會提供欄位長度定義擴大的策略。例如,欄位長度擴大 1.5 倍,長度單位從 BYTE 轉為 CHAR 等。
轉換後可以確保源端不同字元集中的資料能成功遷移至目標端,但割接後反向增量可能會出現資料超長無法寫回源端的問題。
如果源端存在包含時區資訊的資料類型(例如 TIMESTAMP WITH TIME ZONE),請您確保目標端資料庫支援並存在源端對應的時區,否則將導致資料移轉過程中產生資料不一致的問題。
庫表匯聚情境下:
建議您使用匹配規則的方式映射源端和目標端的關係。
建議您自行在目標端建立表結構。如果使用資料轉送建立,請在結構遷移步驟中跳過部分失敗對象。
請檢查 Oracle 資料庫資源回收筒內的對象。當對象數量大於 100 時,容易造成內部表查詢逾時,請進行資源回收筒的對象清理工作。
檢查資源回收筒是否開啟。
SELECT Value FROM V$parameter WHERE Name = 'recyclebin';
檢查資源回收筒內對象的數量。
SELECT COUNT(*) FROM RECYCLEBIN;
如果在建立資料移轉任務時,您僅配置了 增量同步處理,資料轉送要求源端資料庫的歸檔日誌儲存 48 小時以上。
如果在建立資料移轉任務時,您配置了 全量遷移+增量同步處理,資料轉送要求源端資料庫的歸檔日誌至少保留 7 天以上。否則資料轉送可能因無法擷取增量日誌而導致資料移轉任務失敗,甚至導致源端和目標端資料不一致。
如果源端或目標端存在僅大小寫不同的表對象,可能會因為源端或目標端大小寫不敏感導致資料移轉的結果不符合預期。
支援的源端和目標端執行個體類型
下表中,OceanBase 資料庫 Oracle 租戶簡稱為 OB_Oracle。
源端 | 目標端 |
Oracle(VPC 內自建資料庫) | OB_Oracle(OceanBase 叢集執行個體) |
Oracle(資料庫網關) | OB_Oracle(OceanBase 叢集執行個體) |
Oracle(公網 IP 自建資料庫) | OB_Oracle(OceanBase 叢集執行個體) |
資料類型映射
CLOB 和 BLOB 類型的資料必須小於 48 MB。
不支援遷移 ROWID、BFILE、XMLType、UROWID、UNDEFINED 和 UDT 類型的資料。
不支援 LONG 或 LONG RAW 類型的表進行增量同步處理。
Oracle 資料庫 | OceanBase 資料庫 Oracle 租戶 |
CHAR(n CHAR) | CHAR(n CHAR) |
CHAR(n BYTE) | CHAR(n BYTE) |
NCHAR(n) | NCHAR(n) |
VARCHAR2(n) | VARCHAR2(n) |
NVARCHAR2(n) | NVARCHAR2(n) |
NUMBER(n) | NUMBER(n) |
NUMBER (p, s) | NUMBER(p,s) |
RAW | RAW |
CLOB | CLOB |
NCLOB | NVARCHAR2 說明 OceanBase 資料庫 Oracle 租戶中,NVARCHAR2 類型的欄位不支援空值。如果源端存在空值,則以字串 NULL 表示。 |
BLOB | BLOB |
REAL | FLOAT |
FLOAT(n) | FLOAT |
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 |
LONG | CLOB 重要 該類型不支援增量同步處理。 |
LONG RAW | BLOB 重要 該類型不支援增量同步處理。 |
SDO_GEOMETRY | SDO_GEOMETRY |
檢查和修改 Oracle 執行個體的系統配置
您需要進行下述操作:
在源端 Oracle 資料庫開啟歸檔模式
在源端 Oracle 資料庫開啟補償日誌
(可選)設定 Oracle 資料庫的系統參數
在源端 Oracle 資料庫開啟歸檔模式
SELECT log_mode FROM v$database;
log_mode
欄位需要是 archivelog
。否則,您需要根據下述方法進行修改。
執行下述命令,開啟歸檔模式。
SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
執行下述命令,查看歸檔日誌的路徑和配額。
檢查
recovery file
的路徑和配額,建議db_recovery_file_dest_size
的配置值盡量大一些。另外,開啟歸檔後,需要用 RMAN 等方法定期清理歸檔日誌。SHOW PARAMETER db_recovery_file_dest;
根據業務需要更改歸檔日誌的配額。
ALTER SYSTEM SET db_recovery_file_dest_size =50G SCOPE = BOTH;
在源端 Oracle 資料庫開啟補償日誌
LogMiner Reader 支援 Oracle 系統配置僅開啟表層級的補償日誌。如果在遷移過程中,源端 Oracle 資料庫新建立了表並需要遷移,則您需要在執行 DML 操作前,開啟 PK、UK 的補償日誌。否則,資料轉送會報日誌不全的異常。
對於源端和目標端索引不一致、ETL 不符合預期和分區表遷移效能降低等問題,您需要添加以下補償日誌:
添加 DataBase 層級或 Table 層級的
supplemental_log_data_pk
和supplemental_log_data_ui
。添加具體列到補償日誌
添加源端和目標端中所有 PK 和 UK 涉及的列。解決源端和目標端索引不一致的問題。
如果有 ETL,請添加 ETL 的列。解決 ETL 不符合預期的問題。
如果目標端是分區表,請添加分區列。解決無法進行分區裁剪,導致降低寫入效能的問題。
您可以執行下述語句,檢查添加結果。
SELECT log_group_type FROM all_log_groups WHERE OWNER = '<schema_name>' AND table_name = '<table_name>';
查詢結果中包含 ALL COLUMN LOGGING,則檢查通過。如果未包含,請查看
ALL_LOG_GROUP_COLUMNS
表中,是否包含上述並集的所有列。添加具體列至補償日誌的方式,樣本如下:
ALTER TABLE <table_name> ADD SUPPLEMENTAL LOG GROUP <table_name_group> (c1, c2) ALWAYS;
下表為資料移轉任務在運行過程中,如果進行 DDL 操作,可能會遇到的風險及解決方式。
操作 | 風險 | 解決方式 |
CREATE TABLE(且該表需要同步) | 如果該表存在目標端是分區表,源和目標端的索引不一致,需要進行 ETL 等情況,可能會影響資料移轉效能,導致 ETL 不符合預期。 | 必須開啟 DataBase 層級的 PK、UK 補償日誌。手動添加涉及的列至補償日誌。 |
增加、刪除和修改 PK/UK/分區列,或修改 ETL 列 | 會不滿足啟動時要求添加補償日誌的規則,可能導致資料不一致或資料移轉效能降低的問題。 | 根據上述補償日誌的規則進行相應的添加。 |
LogMiner Reader 根據以下兩種方式進行檢查。如果檢查到補償日誌未開啟,則退出。
DataBase 層級開啟
supplemental_log_data_pk
和supplemental_log_data_ui
。執行下述命令,檢查是否已開啟補償日誌。如果查詢結果均為
YES
,表示已開啟補償日誌。SELECT supplemental_log_data_pk, supplemental_log_data_ui FROM v$database;
如果未開啟,請執行下述操作:
執行下述語句,開啟補償日誌。
ALTER DATABASE ADD supplemental log DATA(PRIMARY KEY, UNIQUE) columns;
開啟後,切換 2 次歸檔日誌,並且啟動任務前需要等待 5 分鐘以上。如果是 Oracle RAC,多個執行個體交替切換。
ALTER SYSTEM SWITCH LOGFILE;
Oracle RAC 的情況下,如果一個執行個體切換多次後,再切換到另外的執行個體,而非交替切換,則在定位起始拉取檔案時,後切換的執行個體將可能定位到開啟補償日誌前的日誌。
Table 層級開啟
supplemental_log_data_pk
和supplemental_log_data_ui
。執行下述語句,確認 DataBase 層級的
supplemental_log_data_min
是否已開啟。SELECT supplemental_log_data_min FROM v$database;
查詢結果為
YES
或IMPLICIT
,表示已開啟。執行下述語句,確認待同步表的表層級補償日誌是否開啟。
SELECT log_group_type FROM all_log_groups WHERE OWNER = '<schema_name>' AND table_name = '<table_name>';
每種補償日誌返回一行,結果中需要包含
ALL COLUMN LOGGING
,或者PRIMARY KEY LOGGING
和UNIQUE KEY LOGGING
。如果未開啟表層級的補償日誌,請執行下述語句。
ALTER TABLE table_name ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE) COLUMNS;
開啟後,切換 2 次歸檔日誌,並且啟動任務前需要等待 5 分鐘以上。如果是 Oracle RAC,多個執行個體交替切換。
ALTER SYSTEM SWITCH LOGFILE;
設定 Oracle 資料庫的系統參數(可選)
建議您將 Oracle 資料庫的系統參數 _log_parallelism_max
設定為 1,通常該系統參數預設為 2。
查詢
_log_parallelism_max
的值。您可以通過以下兩種方式進行查詢:方式一
SELECT NAM.KSPPINM,VAL.KSPPSTVL,NAM.KSPPDESC FROM SYS.X$KSPPI NAM,SYS.X$KSPPSV VAL WHERE NAM.INDX= VAL.INDX AND NAM.KSPPINM LIKE '_%' AND UPPER(NAM.KSPPINM) LIKE '%LOG_PARALLEL%';
方式二
SELECT VALUE FROM v$parameter WHERE name = '_log_parallelism_max';
修改
_log_parallelism_max
的值。進行修改時,分為以下兩種情況:Oracle RAC 修改
ALTER SYSTEM SET "_log_parallelism_max" = 1 SID = '*' SCOPE = spfile;
非 Oracle RAC 修改
ALTER SYSTEM SET "_log_parallelism_max" = 1 SCOPE = spfile;
Oracle 資料庫 10G 版本修改
_log_parallelism_max
參數時,如果報錯write to SPFILE requested but no SPFILE specified at startup
,請執行下述操作:CREATE SPFILE FROM PFILE; SHUTDOWN IMMEDIATE; STARTUP; SHOW PARAMETER SPFILE;
修改系統參數
_log_parallelism_max
後,請重啟執行個體,切換 2 次歸檔日誌,並且啟動任務前需要等待 5 分鐘以上。
操作步驟
登入 OceanBase 管理主控台,購買資料移轉任務。
詳情請參見 購買資料移轉任務。
在 資料轉送 > 資料移轉 頁面,單擊新購買的資料移轉任務後的 配置。
如果您需要引用已有的任務配置資訊,可以單擊 引用配置。詳情請參見 引用資料移轉任務配置。
在 選擇源和目標 頁面,配置各項參數。
參數
描述
遷移任務名稱
建議使用中文、數字和字母的組合。名稱中不能包含空格,長度不能超過 64 個字元。
標籤(可選)
單擊文字框,在下拉式清單中選擇目標標籤。您也可以單擊 管理標籤 進行建立、修改和刪除。詳情請參見 通過標籤管理資料移轉任務。
源端
如果您已建立 Oracle 資料來源,請從下拉式清單中進行選擇。如果未建立,請單擊下拉式清單中的 建立資料來源,在右側對話方塊進行建立。參數詳情請參見 建立 Oracle 資料來源。
目標端
如果您已建立 OceanBase 資料庫 Oracle 租戶資料來源,請從下拉式清單中進行選擇。如果未建立,請單擊下拉式清單中的 建立資料來源,在右側對話方塊進行建立。參數詳情請參見 建立 OceanBase 資料來源。
重要目標端僅支援 OceanBase 資料庫 Oracle 租戶的 執行個體類型 為 OceanBase 叢集執行個體。
單擊 下一步。在 選擇遷移類型 頁面,選擇當前資料移轉任務的遷移類型。
遷移類型 包括 結構遷移、全量遷移、增量同步處理、全量校正 和 反向增量。
遷移類型
描述
結構遷移
結構遷移任務開始後,資料轉送會遷移源庫中的資料對象定義(表、索引、約束、注釋和視圖等)至目標端資料庫中,並自動過濾暫存資料表。
全量遷移
全量遷移任務開始後,資料轉送會遷移源端庫表的存量資料至目標端資料庫對應的表中。如果選擇 全量遷移,建議您在遷移資料前,使用
GATHER_SCHEMA_STATS
或GATHER_TABLE_STATS
語句收集 Oracle 資料庫的統計資訊。增量同步處理
增量同步處理任務開始後,資料轉送會同步源端資料庫發生變化的資料(新增、修改或刪除)至目標端資料庫對應的表中。
增量同步處理 包括 DML 同步 和 DDL 同步,您可以根據需求進行自訂配置。詳情請參見 自訂配置 DDL/DML。增量同步處理 的使用限制如下:
多表到單表的彙集情境,均不支援 DDL 同步。
如果您選擇了 DDL 同步,當源端資料庫發生資料轉送不支援的同步 DDL 操作時,會存在資料移轉中斷的風險。
如果 DDL 操作為新增列,請將該列的屬性設定為 Null,否則會存在資料移轉中斷的風險。
全量校正
在全量遷移完成、增量資料同步至目標端並與源端基本追平後,資料轉送會自動發起一輪針對源端資料庫配置的資料表和目標表的全量資料校正任務。
如果選擇 全量校正,建議您在全量校正開始前,分別收集 Oracle 資料庫和 OceanBase 資料庫 Oracle 租戶的統計資訊。
如果您選擇了 增量同步處理,且 DML 同步 選項中未選擇所有的 DML,則資料轉送不支援本情境下的全量資料校正。
反向增量
反向增量任務開始後,可以即時將業務切換後在目標端資料庫產生的變更資料迴流至源端資料庫。
通常反向增量會複用增量同步處理的配置,您也可以根據實際需求進行自訂配置。
單擊 下一步。在 選擇遷移對象 頁面,選擇當前資料移轉任務的遷移對象。
您可以通過 指定對象 和 匹配規則 兩個入口選擇遷移對象。
重要待遷移的表名和其中的列名不能包含中文字元。
當資料庫的庫名或表名存在“$$”字元時,會影響資料移轉任務的建立。
如果您在 選擇遷移類型 步驟已勾選 DDL 同步,建議通過匹配規則方式選擇遷移對象,以確保所有符合遷移對象規則的新增對象都將被同步。如果您通過指定對象方式選擇遷移對象,則新增對象或重新命名後的對象將不會被同步。
選擇 指定對象,在左側選中需要遷移的對象,單擊 >,將其添加至右側列表中。您可以選擇一個或多個庫的表、視圖作為遷移對象。
資料轉送支援通過文本匯入對象,並支援對目標端對象進行重新命名、設定行過濾、查看列資訊,以及移除單個或全部遷移對象等操作。
說明通過 匹配規則 方式選擇遷移對象時,重新命名能力由匹配規則文法覆蓋,操作處僅支援設定過濾條件。詳情請參見 配置匹配規則。
操作
步驟
匯入對象
在選擇地區的右側列表中,單擊右上方的 匯入對象。
在對話方塊中,單擊 確定。
重要匯入會覆蓋之前的操作選擇,請謹慎操作。
在 匯入遷移對象 對話方塊中,匯入需要遷移的對象。
您可以通過匯入 CSV 檔案的方式進行庫表重新命名、設定行過濾條件等操作。詳情請參見 下載和匯入遷移對象配置。
單擊 檢驗合法性。
完成遷移對象匯入後,請先檢驗合法性。目前暫不支援欄欄位映射。
通過檢驗後,單擊 確定。
重新命名
資料轉送支援重新命名遷移對象的名稱,詳情請參見 資料庫庫表重新命名。
設定
資料轉送支援
WHERE
條件實現行過濾,詳情請參見 SQL 條件過濾資料。您還可以在 查看列 地區,查看遷移對象的列資訊。
移除/全部移除
資料轉送支援在資料對應時,對暫時選中到目標端的單個或多個對象進行移除操作。
移除單個遷移對象
在選擇地區的右側列表中,滑鼠移至上方至目標對象,單擊顯示的 移除,即可移除該遷移對象。
移除全部遷移對象
在選擇地區的右側列表中,單擊右上方的 全部移除。在對話方塊中,單擊 確定,即可移除全部遷移對象。
選擇 匹配規則,詳情請參見 配置匹配規則。
單擊 下一步。在 遷移選項 頁面,配置各項參數。
全量遷移
在 選擇遷移類型 頁面,選中 全量遷移,才會顯示下述參數。
參數
描述
讀取並發配置
該參數用於配置全量遷移階段從源端讀取資料的並發數,最大限制為 512.並發數過高可能會造成源端壓力過大,影響業務。
寫入並發配置
該參數用於配置全量遷移階段往目標端寫入資料的並發數,最大限制為 512。並發數過高可能會造成目標端壓力過大,影響業務。
全量遷移速率限制
您可以根據實際需求決定是否開啟全量遷移速率限制。如果開啟,請設定 RPS(全量遷移階段每秒最多可以遷移至目標端的資料行數的最大值限制)和 BPS(全量遷移階段每秒最多可以遷移至目標端的資料量的最大值限制)。
說明此處設定的 RPS 和 BPS 僅作為限速和限流能力,全量遷移實際可以達到的效能受限於源端、目標端、執行個體規格配置等因素的影響。
目標端表對象存在記錄時處理策略
選擇 忽略:當目標端表對象存在資料時,如果原資料與寫入資料衝突,資料轉送採用將衝突資料記錄日誌,保留原資料不變的策略進行資料寫入。
重要選擇 忽略,全量校正將使用 IN 模式拉取資料,無法校正目標端存在源端沒有的資料的情境,並且校正效能會有一定程度降級。
選擇預設值 停止遷移:當目標端表對象存在資料時,全量遷移會報錯不允許遷移,請處理好目標端資料後再繼續遷移。
重要如果出錯後單擊恢複,資料轉送將忽略該配置選項,繼續遷移表資料,請謹慎操作。
是否允許索引後置
您可以設定是否允許全量資料移轉完成後再建立索引,索引後置功能能夠縮短全量遷移耗時。選擇索引後置的注意事項,請參見表格下方的說明。
重要在 選擇遷移類型 頁面同時選中 結構遷移 和 全量遷移,才會顯示該參數。
僅非唯一鍵索引支援後置建立。
執行索引時,如果目標端 OceanBase 資料庫 Oracle 租戶遇到
name is already used by an existing object
報錯,資料轉送會進行忽略,預設索引建立成功,不會再重複建立。
當您選擇 允許 後,請進行下述配置:
單條索引 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 僅作為限速限流能力,反向增量同步處理實際可以達到的效能受限於源端、目標端、執行個體規格配置等因素的影響。
增量同步處理起始位點
預設以正向切換(如有)為準,不支援修改。
遷移進階配置
參數
描述
字元編碼與長度定義選項
在 選擇遷移類型 頁面選中 結構遷移,且源端和目標端的字元集不一致時,才會顯示該參數。
說明源端和目標端的字元集不一致(例如,源端為 GBK,目標端為 UTF-8)時,可能會發生欄位截斷,資料不一致的情況。
當您選擇 自動放大目標端欄位長度,即 N BYTE → 1.5N BYTE 時,如果轉化後的長度超過最大長度限制,則轉化後的長度為最大長度限制。
目標端表Object Storage Service類型
當目標端 OceanBase 資料庫 Oracle 租戶為 V4.3.0 及之後版本,並且在 選擇遷移類型 頁面,選中 結構遷移 或 增量同步處理 > DDL 同步,才會顯示該地區的參數。
目標端表Object Storage Service類型包括 預設、行存、列存 和 行列混存,該配置用於確定結構遷移或增量同步處理時目標端表對象的儲存類型,詳情請參見 default_table_store_format。
說明預設 選項是根據目標端參數配置自適應其他選項,是結構遷移的表對象或增量 DDL 的新增表對象根據設定的儲存類型寫對應的結構。
單擊 預檢查,系統對資料移轉任務進行預檢查。
在 預檢查 環節,資料轉送會檢查資料庫使用者的讀寫權限、資料庫的網路連接等是否符合要求。全部檢查任務均通過後才能啟動資料移轉任務。如果預檢查報錯:
您可以在排查並處理問題後,重新執行預檢查,直至預檢查成功。
您也可以單擊錯誤預檢查項操作列中的 跳過,會彈出對話方塊提示您跳過本操作的具體影響,確認可以跳過後,請單擊對話方塊中的 確定。
預檢查成功後,單擊 啟動任務。
如果您暫時無需啟動任務,請單擊 儲存。後續您只能在 遷移工作清單 頁面手動啟動任務或通過大量操作啟動任務。大量操作的詳情請參見 大量操作資料移轉任務。
資料轉送支援在資料移轉任務運行過程中修改遷移對象,詳情請參見 查看和修改遷移對象及其過濾條件。資料移轉任務啟動後,會根據所選擇的遷移類型依次執行,詳情請參見 查看遷移詳情。