全部產品
Search
文件中心

Data Transmission Service:Oracle資料庫的限制和準備工作

更新時間:Oct 22, 2024

當您使用DTS傳輸Oracle的資料,或者將資料轉儲到Oracle資料庫時,需要瞭解DTS支援的能力、功能限制和接入DTS的準備工作,以便您平穩地完成資料同步或遷移。

資料庫限制

自建Oracle為源

限制項

說明

支援的版本

支援10g、11g、12c、18c、19c版本。

支援的架構

  • 支援單節點和RAC架構。

    說明

    RAC架構的Oracle資料庫不支援增加或減少節點,否則會導致DTS任務失敗。

  • 支援12c及以上版本的租戶式和非租戶式架構。

    說明

    一個任務僅能支援遷移一個Pluggable Database(PDB庫)。

支援的資料

  • 支援常見的表、索引(含函數式索引)、資料類型、字元集等。支援的資料類型和字元集,請參見附錄

  • 支援串聯刪除、更新操作。

  • 支援一級、二級分區表的DML操作,不支援分區表DDL操作(任務正常運行)。

  • 支援分散式交易日誌解析。

  • 支援事務完全復原和部分復原操作。

  • 支援同步或遷移名稱超過30個位元組的對象。

  • 支援同步或遷移Null 物件empty_blob()和empty_clob()。

  • 支援同步或遷移虛擬列。

  • 支援同步或遷移混合列壓縮(Hybrid Columnar Compression, HCC)。

  • 全量任務支援同步或遷移不可見列,增量任務不支援。

  • 表名、列名等屬性名稱支援大小寫映射。

網路頻寬

須大於等於100 Mb/s。

業務要求

  • 日誌量的峰值小於1 TB,平均每小時的日誌量小於50 GB,峰值流量小於15 MB/s。

    重要

    DTS預設拉取整個資料庫執行個體的日誌,若非同步或遷移對象有大量資料變更,也會導致任務延遲。

  • 在執行批量資料更新或對大欄位(如CLOB、BLOB、LONG等類型)資料進行大規模變更時,可能會導致任務延遲,建議將此類操作分批執行或儘可能避免執行。

  • 請避免無主鍵表頻繁進行刪除或修改操作,否則可能會導致任務延遲。

  • 請減少執行DDL操作的頻率,建議每秒執行的DDL語句不超過10條,否則可能會導致任務延遲。

  • 請避免大事務操作(單個事務產生的日誌量超過100 GB),否則可能會導致任務失敗。

接入方式

  • 支援Oracle資料庫的公網和私網IP接入。

  • 支援RAC架構下ScanIP、單節點的VIP或者物理IP接入。

  • 支援專線的方式接入,不支援RAC節點ScanIP專線接入。

  • 支援Active Data Guard(ADG)主庫和備庫方式接入。

    說明

    若接入DTS的Oracle為ADG備庫且Online Redo檔案未歸檔,DTS執行個體會產生延遲。

  • 支援Amazon RDS Oracle為源庫。

其他限制

  • 執行資料同步或遷移前需評估源庫和目標庫的效能,同時建議業務低峰期執行資料同步或遷移。在全量任務階段,DTS會佔用源庫一定讀資源,可能會導致資料庫的負載上升。一般情況下,對CPU的影響小於2個Core,對記憶體的影響小於4G,具體負載影響與資料庫狀態有關。

  • 待同步或遷移的表需具備主鍵或唯一約束,且欄位具有唯一性,否則可能會導致任務延遲、甚至目標資料庫中出現重複資料。

  • Oracle為源支援寫入字元集與資料庫字元集不一致的情境。

    說明

    需要額外設定實際業務寫入編碼(source.column.encoding)。

  • 在任務運行期間禁止執行resetlogs命令,否則可能會導致DTS任務失敗。

  • 不支援DCL操作。

  • 增量任務不支援同步或遷移觸發器,需要關閉目標Oracle的觸發器。

  • 增量任務不支援同步或遷移存在外鍵約束的資料。

  • 增量任務不支援同步或遷移使用Oracle Data Pump向源庫匯入的資料。

  • 同步或遷移無主鍵或無唯一鍵的資料時:

    • 資料寫入速率慢,可能會導致任務延遲。

    • 無法保證資料的一致性,可能存在重複資料。

  • 不支援同步或遷移名稱超過30個位元組的對象。

  • 不支援同步或遷移連續的RENAME TABLE操作,否則可能會導致任務失敗。

  • 不支援同步或遷移全域暫存資料表(任務正常運行)。

  • 不支援同步或遷移含有預設值函數的表,否則會導致資料不一致。

  • 不支援同步或遷移預設值中含有運算式的表。

  • 不支援同步或遷移外部表格。

  • 不支援同步或遷移計算資料行、加密列。

  • 不支援同步或遷移虛擬私人資料庫(Virtual Private Database, VPD)。

  • 不支援同步或遷移dbms_scheduler和dbms_job建立的job。

  • 不支援同步或遷移Schema名稱的變更操作。

  • 不支援同步或遷移巢狀表格,否則會導致任務報錯。

  • 不支援同步或遷移物化視圖(Materialized View)。

  • 不支援同步或遷移包含關鍵字或者特殊字元的屬性名稱的DDL操作。

  • 不支援ROWID變更操作(例如split partition、table move、table shrink、move partition key),否則可能會導致資料不一致或任務失敗。

  • 不支援Secure Sockets Layer(SSL)加密傳輸模式。

  • 不支援Oracle Label Security模式。

Amazon RDS Oracle為源

限制項

說明

支援的版本

支援10g、11g、12c、18c、19c版本。

支援的架構

  • 支援單節點和RAC架構。

  • 12c、18c、19c版本僅支援非租戶式架構。

支援的資料

  • 支援常見的表、索引(含函數式索引)、資料類型、字元集等。支援的資料類型和字元集,請參見附錄

  • 支援串聯刪除、更新操作。

  • 支援一級、二級分區表的DML操作,不支援分區表DDL操作(任務正常運行)。

  • 支援分散式交易日誌解析。

  • 支援事務完全復原和部分復原操作。

  • 支援同步或遷移名稱超過30個位元組的對象。

  • 支援同步或遷移Null 物件empty_blob()和empty_clob()。

  • 支援同步或遷移虛擬列。

  • 支援同步或遷移混合列壓縮(Hybrid Columnar Compression, HCC)。

  • 全量任務支援同步或遷移不可見列,增量任務不支援。

  • 表名、列名等屬性名稱支援大小寫映射。

網路頻寬

須大於等於100 Mb/s。

業務要求

  • 日誌量的峰值小於1 TB,平均每小時的日誌量小於50 GB,峰值流量小於15 MB/s。

    重要

    DTS預設拉取整個資料庫執行個體的日誌,若非同步或遷移對象有大量資料變更,也會導致任務延遲。

  • 在執行批量資料更新或對大欄位(如CLOB、BLOB、LONG等類型)資料進行大規模變更時,可能會導致任務延遲,建議將此類操作分批執行或儘可能避免執行。

  • 請避免無主鍵表頻繁進行刪除或修改操作,否則可能會導致任務延遲。

  • 請減少執行DDL操作的頻率,建議每秒執行的DDL語句不超過10條,否則可能會導致任務延遲。

  • 請避免大事務操作(單個事務產生的日誌量超過100 GB),否則可能會導致任務失敗。

接入方式

  • 支援Oracle資料庫的公網和私網IP接入。

  • 支援RAC架構下ScanIP、單節點的VIP或者物理IP接入。

  • 支援專線的方式接入,不支援RAC節點ScanIP專線接入。

  • 支援Active Data Guard(ADG)主庫和備庫方式接入。

    說明

    若接入DTS的Oracle為ADG備庫且Online Redo檔案未歸檔,DTS執行個體會產生延遲。

其他限制

  • 執行資料同步或遷移前需評估源庫和目標庫的效能,同時建議業務低峰期執行資料同步或遷移。在全量任務階段,DTS會佔用源庫一定讀資源,可能會導致資料庫的負載上升。一般情況下,對CPU的影響小於2個Core,對記憶體的影響小於4G,具體負載影響與資料庫狀態有關。

  • 待同步或遷移的表需具備主鍵或唯一約束,且欄位具有唯一性,否則可能會導致任務延遲、甚至目標資料庫中出現重複資料。

  • Oracle為源支援寫入字元集與資料庫字元集不一致的情境。

    說明

    需要額外設定實際業務寫入編碼(source.column.encoding)。

  • 在任務運行期間禁止執行resetlogs命令,否則可能會導致DTS任務失敗。

  • 不支援DCL操作。

  • 增量任務不支援同步或遷移觸發器,需要關閉目標Oracle的觸發器。

  • 增量任務不支援同步或遷移存在外鍵約束的資料。

  • 增量任務不支援同步或遷移使用Oracle Data Pump向源庫匯入的資料。

  • 同步或遷移無主鍵或無唯一鍵的資料時:

    • 資料寫入速率慢,可能會導致任務延遲。

    • 無法保證資料的一致性,可能存在重複資料。

  • 不支援同步或遷移名稱超過30個位元組的對象。

  • 不支援同步或遷移連續的RENAME TABLE操作,否則可能會導致任務失敗。

  • 不支援同步或遷移全域暫存資料表(任務正常運行)。

  • 不支援同步或遷移含有預設值函數的表,否則會導致資料不一致。

  • 不支援同步或遷移預設值中含有運算式的表。

  • 不支援同步或遷移外部表格。

  • 不支援同步或遷移計算資料行、加密列。

  • 不支援同步或遷移虛擬私人資料庫(Virtual Private Database, VPD)。

  • 不支援同步或遷移dbms_scheduler和dbms_job建立的job。

  • 不支援同步或遷移Schema名稱的變更操作。

  • 不支援同步或遷移巢狀表格,否則會導致任務報錯。

  • 不支援同步或遷移物化視圖(Materialized View)。

  • 不支援同步或遷移包含關鍵字或者特殊字元的屬性名稱的DDL操作。

  • 不支援ROWID變更操作(例如split partition、table move、table shrink、move partition key),否則可能會導致資料不一致或任務失敗。

  • 不支援Secure Sockets Layer(SSL)加密傳輸模式。

  • 不支援Oracle Label Security模式。

Oracle為目標

限制項

說明

支援的版本

支援10g、11g、12c、18c、19c版本。

支援的架構

  • 支援單節點和RAC架構。

    說明

    RAC架構的Oracle資料庫不支援增加或減少節點,否則會導致DTS任務失敗。

  • 支援12c及以上版本的租戶式和非租戶式架構。

    說明

    一個任務僅能支援遷移一個Pluggable Database(PDB庫)。

網路頻寬

須大於等於100 Mb/s。

接入方式

  • 支援Oracle資料庫的公網和私網IP接入。

  • 支援RAC架構下ScanIP、單節點的VIP或者物理IP接入。

  • 支援專線的方式接入,不支援RAC節點ScanIP專線接入。

  • 支援Active Data Guard(ADG)主庫和備庫方式接入。

    說明

    若接入DTS的Oracle為ADG備庫且Online Redo檔案未歸檔,DTS執行個體會產生延遲。

  • 支援Amazon RDS Oracle為目標庫。

其他限制

  • 執行資料同步或遷移前需評定目標庫的效能,同時建議業務低峰期執行資料同步或遷移。在全量任務階段,DTS會佔用目標庫一定網路資源和寫資源,可能會導致資料庫的負載上升(例如源庫和目標庫的CPU負載在30%以下)。

  • DTS全量資料同步或遷移會並發執行INSERT操作,會導致目標資料庫表產生部分片段,因此全量同步或遷移完成後目標資料庫儲存空間會比來源資料庫大。

  • Oracle會將VARCHAR或VARCHAR2類型的Null 字元串處理為NULL。當您的執行個體是目標庫為Oracle的異構資料庫間的同步或遷移時,請取消Oracle資料庫中VARCHAR和VARCHAR2類型欄位的非空約束,否則可能會導致DTS執行個體運行失敗。

  • 在Oracle中,VARCHAR、VARCHAR2等具有字元精度的欄位最多儲存4000個位元組。當您的執行個體是目標庫為Oracle的異構資料庫間的同步或遷移時,若執行個體出現VARCHAR、VARCHAR2等類型欄位寫入資料失敗時,可以嘗試將該欄位的類型修改為CLOB,然後重新啟動DTS執行個體。

資料庫配置

  • Oracle為源的全量任務:無需在源庫執行特殊配置。

  • Oracle為源的增量任務:由於需要擷取增量變更,需在Oracle資料庫中完成如下配置以抓取和解析源庫日誌。

  • Oracle為目標的全量或增量任務:無需在目標庫執行特殊配置。

自建Oracle為源

開啟日誌歸檔模式

  1. 檢查源庫是否已經開啟歸檔模式。

    archive log list;
    說明
    • Database log modeArchive Mode則表示已開啟歸檔模式,請執行開啟補充日誌

    • 歸檔日誌保留時間必須大於等於3天。

  2. 重啟資料庫。

    重要

    為避免影響您的業務使用,請在業務低峰期操作。

    shutdown immediate;
    startup mount;
  3. 開啟日誌歸檔模式。

    alter database archivelog;
    alter database open;
  4. 檢查日誌歸檔配置是否生效。

    archive log list;

開啟補充日誌

目前DTS支援開啟庫層級補充日誌和僅開啟表層級補充日誌兩種模式,您可以根據業務需求,選擇開啟庫層級補充日誌或者表層級補充日誌。

  • 開啟庫層級補充日誌:DTS任務運行更為穩定。

  • 開啟表層級補充日誌:遷移粒度為庫時,不支援遷移使用DDL新增的、且未開啟補充日誌的表,更節約源Oracle資料庫的磁碟空間。

開啟庫層級補充日誌

  1. 檢查庫層級補充日誌是否開啟。

    SELECT supplemental_log_data_min, supplemental_log_data_pk,supplemental_log_data_ui FROM v$database;

    如下所示為已開啟庫層級補充日誌,無需向下執行。

    SUPPLEME SUP SUP
    -------- --- ---
    IMPLICIT YES YES
  2. 開啟庫層級最小補充日誌。

    alter database add supplemental log data;
  3. 開啟庫級主鍵、唯一鍵補充日誌。

    alter database add supplemental log data (primary key,unique index) columns;
  4. 檢查庫層級補充日誌是否開啟。

    SELECT supplemental_log_data_min, supplemental_log_data_pk,supplemental_log_data_ui FROM v$database;

開啟表層級補充日誌

  1. 開啟最小補充日誌。

    alter database add supplemental log data;
  2. 開啟表級補充日誌(兩者選其一)。

    • 開啟表層級主鍵補充日誌

      alter table <table_name> add supplemental log data (primary key) columns;
    • 開啟表層級全欄位補充日誌

      alter table <table_name> add supplemental log data (all) columns;

Amazon RDS Oracle為源

開啟日誌歸檔模式

執行如下命令,查看並設定歸檔日誌保留時間。

exec rdsadmin.rdsadmin_util.show_configuration;
exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours', 72);

開啟補充日誌

目前DTS支援開啟庫層級補充日誌和僅開啟表層級補充日誌兩種模式,您可以根據業務需求,選擇開啟庫層級補充日誌或者表層級補充日誌。

  • 開啟庫層級補充日誌:DTS任務運行更為穩定。

  • 開啟表層級補充日誌:遷移粒度為庫時,不支援遷移使用DDL新增的、且未開啟補充日誌的表,更節約源Oracle資料庫的磁碟空間。

開啟庫層級補充日誌

  1. 檢查庫層級補充日誌是否開啟。

    SELECT supplemental_log_data_min, supplemental_log_data_pk,supplemental_log_data_ui FROM v$database;

    如下所示為已開啟庫層級補充日誌,無需向下執行。

    SUPPLEME SUP SUP
    -------- --- ---
    IMPLICIT YES YES
  2. 開啟強制記錄模式。

    exec rdsadmin.rdsadmin_util.force_logging(p_enable => true);
  3. 開啟庫級主鍵、唯一鍵補充日誌。

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD', 'PRIMARY KEY');
    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD', 'UNIQUE');

開啟表層級補充日誌

  1. 開啟表層級全欄位補充日誌。

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD', 'ALL');
  2. 開啟表層級主鍵補充日誌。

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD', 'PRIMARY KEY');

Oracle為目標

無需特殊配置。

資料庫帳號準備

Oracle為源

使用DTS同步或遷移Oracle的資料時,需要建立用於採集資料的帳號並授權。採集資料的帳號要求的權限如下:

  • 庫表結構和全量任務:需要授予DBA角色許可權或者精細化授權。

  • 增量任務:需要精細授權。

    重要

    源為非租戶式架構Oracle的增量任務,也可以授予資料擷取帳號DBA角色許可權。

授予DBA角色許可權

#建立資料庫帳號(以rdsdt_dtsacct為例)並進行授權
create user rdsdt_dtsacct identified by rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;

grant connect to rdsdt_dtsacct;
grant dba to rdsdt_dtsacct;

#使用rdsdt_dtsacct帳號登入,檢查是否授權完成
select * from user_tab_privs;
select granted_role from user_role_privs;

庫表結構和全量任務精細授權

#建立資料庫帳號(以rdsdt_dtsacct為例)並進行授權
create user rdsdt_dtsacct identified by rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;

grant connect to rdsdt_dtsacct;
grant select_catalog_role to rdsdt_dtsacct;
grant select any table to rdsdt_dtsacct;

#使用rdsdt_dtsacct帳號登入,檢查是否授權完成
select * from user_role_privs;
select * from user_sys_privs;

增量任務精細授權

Oracle 10g、11g版本

#建立資料庫帳號(以rdsdt_dtsacct為例)並進行授權
create user rdsdt_dtsacct identified by rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;

grant connect to rdsdt_dtsacct;
grant select_catalog_role to rdsdt_dtsacct;

grant select any table to rdsdt_dtsacct;
grant select any transaction to rdsdt_dtsacct;

grant select on all_objects to rdsdt_dtsacct;
grant select on all_tab_cols to rdsdt_dtsacct;
grant select on dba_registry to rdsdt_dtsacct;
grant execute on sys.dbms_logmnr to rdsdt_dtsacct;

grant select on v_$log to rdsdt_dtsacct;
grant select on v_$logfile to rdsdt_dtsacct;
grant select on v_$standby_log to rdsdt_dtsacct;
-- Oracle以ADG備庫接入時,需要授予v_$standby_log許可權
grant select on v_$archived_log to rdsdt_dtsacct;
grant select on v_$parameter to rdsdt_dtsacct;
grant select on v_$database to rdsdt_dtsacct;
grant select on v_$active_instances to rdsdt_dtsacct;
grant select on v_$instance to rdsdt_dtsacct;
grant select on v_$logmnr_contents to rdsdt_dtsacct;

grant select on sys.USER$ to rdsdt_dtsacct;
grant select on sys.OBJ$ to rdsdt_dtsacct;
grant select on sys.COL$ to rdsdt_dtsacct;
grant select on sys.IND$ to rdsdt_dtsacct;
grant select on sys.ICOL$ to rdsdt_dtsacct;
grant select on sys.CDEF$ to rdsdt_dtsacct;
grant select on sys.CCOL$ to rdsdt_dtsacct;
grant select on sys.TABPART$ to rdsdt_dtsacct;
grant select on sys.TABSUBPART$ to rdsdt_dtsacct;
grant select on sys.TABCOMPART$ to rdsdt_dtsacct;

#使用rdsdt_dtsacct帳號登入,檢查是否授權完成
select * from user_role_privs;
select * from user_sys_privs;
select * from user_tab_privs;

Oracle 12c~19c(非租戶式)

#建立資料庫帳號(以rdsdt_dtsacct為例)並進行授權
create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;

grant connect to rdsdt_dtsacct;
grant select_catalog_role to rdsdt_dtsacct;
grant logmining to rdsdt_dtsacct;
grant execute_catalog_role to rdsdt_dtsacct;

grant select any table to rdsdt_dtsacct;
grant select any transaction to rdsdt_dtsacct;

grant select on all_objects to rdsdt_dtsacct;
grant select on all_tab_cols to rdsdt_dtsacct;
grant select on dba_registry to rdsdt_dtsacct;
grant execute on sys.dbms_logmnr to rdsdt_dtsacct;

grant select on v_$log to rdsdt_dtsacct;
grant select on v_$logfile to rdsdt_dtsacct;
grant select on v_$standby_log to rdsdt_dtsacct;
-- Oracle以ADG備庫接入時,需要授予v_$standby_log許可權
grant select on v_$archived_log to rdsdt_dtsacct;
grant select on v_$parameter to rdsdt_dtsacct;
grant select on v_$database to rdsdt_dtsacct;
grant select on v_$active_instances to rdsdt_dtsacct;
grant select on v_$instance to rdsdt_dtsacct;
grant select on v_$logmnr_contents to rdsdt_dtsacct;

grant select on sys.USER$ to rdsdt_dtsacct;
grant select on sys.OBJ$ to rdsdt_dtsacct;
grant select on sys.COL$ to rdsdt_dtsacct;
grant select on sys.IND$ to rdsdt_dtsacct;
grant select on sys.ICOL$ to rdsdt_dtsacct;
grant select on sys.CDEF$ to rdsdt_dtsacct;
grant select on sys.CCOL$ to rdsdt_dtsacct;
grant select on sys.TABPART$ to rdsdt_dtsacct;
grant select on sys.TABSUBPART$ to rdsdt_dtsacct;
grant select on sys.TABCOMPART$ to rdsdt_dtsacct;

#使用rdsdt_dtsacct帳號登入,檢查是否授權完成
select * from user_role_privs;
select * from user_sys_privs;
select * from user_tab_privs;

Oracle 12c~19c(租戶式)

重要

PDB與CDB$ROOT中建立的帳號名稱(不包含全域帳號的開頭C##)需一致。

#切換至PDB,建立資料庫帳號(以rdsdt_dtsacct為例)並進行授權
alter session set container = ORCLPDB1;

create user rdsdt_dtsacct identified by rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;

grant connect to rdsdt_dtsacct;
grant select_catalog_role to rdsdt_dtsacct;
grant logmining TO rdsdt_dtsacct;
grant execute_catalog_role to rdsdt_dtsacct;

grant select any table to rdsdt_dtsacct;
grant select any transaction to rdsdt_dtsacct;

grant select on all_objects to rdsdt_dtsacct;
grant select on all_tab_cols to rdsdt_dtsacct;
grant select on dba_registry to rdsdt_dtsacct;
grant execute on sys.dbms_logmnr to rdsdt_dtsacct;

grant select on v_$pdbs to rdsdt_dtsacct;
grant select on v_$log to rdsdt_dtsacct;
grant select on v_$logfile to rdsdt_dtsacct;
grant select on v_$standby_log to rdsdt_dtsacct;
-- Oracle以ADG備庫接入時,需要授予v_$standby_log許可權
grant select on v_$archived_log to rdsdt_dtsacct;
grant select on v_$parameter to rdsdt_dtsacct;
grant select on v_$database to rdsdt_dtsacct;
grant select on v_$active_instances to rdsdt_dtsacct;
grant select on v_$instance to rdsdt_dtsacct;
grant select on v_$logmnr_contents to rdsdt_dtsacct;

grant select on sys.USER$ to rdsdt_dtsacct;
grant select on sys.OBJ$ to rdsdt_dtsacct;
grant select on sys.COL$ to rdsdt_dtsacct;
grant select on sys.IND$ to rdsdt_dtsacct;
grant select on sys.ICOL$ to rdsdt_dtsacct;
grant select on sys.CDEF$ to rdsdt_dtsacct;
grant select on sys.CCOL$ to rdsdt_dtsacct;
grant select on sys.TABPART$ to rdsdt_dtsacct;
grant select on sys.TABSUBPART$ to rdsdt_dtsacct;
grant select on sys.TABCOMPART$ to rdsdt_dtsacct;

#切換至CDB$ROOT,進行帳號建立並授權
alter session set container = CDB$ROOT;

#建立資料庫帳號(以rdsdt_dtsacct為例)並進行授權(如使用此方式,則您需要修改Oracle資料庫的預設參數)
alter session set "_ORACLE_SCRIPT"=true;
create user rdsdt_dtsacct identified by rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;
grant connect to rdsdt_dtsacct;
grant logmining to rdsdt_dtsacct;
grant execute_catalog_role to rdsdt_dtsacct;
grant select on v_$logmnr_contents to rdsdt_dtsacct;
grant execute on sys.dbms_logmnr to rdsdt_dtsacct;

#使用rdsdt_dtsacct帳號登入,檢查是否授權完成
select * from user_role_privs;
select * from user_sys_privs;
select * from user_tab_privs;

Amazon RDS Oracle(非租戶式)

說明

建議使用Oracle SQL Developer進行授權操作。

#建立資料庫帳號(以RDSDT_DTSACCT為例)並進行授權
create user rdsdt_dtsacct identified by rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;

grant connect to rdsdt_dtsacct;
grant logmining to rdsdt_dtsacct;
grant execute_catalog_role to rdsdt_dtsacct;

grant select any table to rdsdt_dtsacct;
grant select any transaction to rdsdt_dtsacct;

exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_OBJECTS','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_COLS','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_REGISTRY','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOG','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGFILE','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ACTIVE_INSTANCES','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$INSTANCE','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR','RDSDT_DTSACCT','EXECUTE');

exec rdsadmin.rdsadmin_util.grant_sys_object('USER$','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('OBJ$','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('COL$','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('IND$',  'RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ICOL$','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('CDEF$','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('CCOL$','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('TABPART$','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('TABSUBPART$','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('TABCOMPART$','RDSDT_DTSACCT','SELECT');

#使用RDSDT_DTSACCT帳號登入,檢查是否授權完成
select * from user_role_privs;
select * from user_sys_privs;
select * from user_tab_privs;

Oracle為目標

使用DTS同步或遷移Oracle的資料時,需要建立用於複製資料的帳號並授權。複製資料的帳號要求的權限如下:

  • 庫表結構任務:需要授予DBA角色許可權。

  • 全量和增量任務:需要授予resource角色許可權。

授予DBA角色許可權

#建立資料庫帳號(以rdsdt_dtsacct為例)並進行授權
create user rdsdt_dtsacct identified by rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;

grant connect to rdsdt_dtsacct;
grant dba to rdsdt_dtsacct;

#使用rdsdt_dtsacct帳號登入,檢查是否授權完成
select * from user_tab_privs;
select granted_role from user_role_privs;

授予resource角色許可權

#建立資料庫帳號(以rdsdt_dtsacct為例)並進行授權
create user rdsdt_dtsacct identified by rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;

grant connect to rdsdt_dtsacct;
grant resource to rdsdt_dtsacct;

#使用rdsdt_dtsacct帳號登入,檢查是否授權完成
select * from user_tab_privs;
select granted_role from user_role_privs;

後續步驟

配置源或目標為Oracle的任務。更多資訊,請參見同步方案概覽遷移方案概覽中的相關配置文檔。

附錄

DTS任務對Oracle資料類型和字元集的支援如下所示。

資料類型

支援

不支援

  • NUMBER

  • FLOAT

  • REAL

  • BINARY_FLOAT

  • CHAR [(size [BYTE | CHAR])]

  • NCHAR[(size)]

  • VARCHAR2(size [BYTE | CHAR])

  • NVARCHAR2(size)

  • CLOB

  • NCLOB

  • LONG

  • DATE

  • XMLTYPE:支援clob儲存模式,不支援blob儲存模式。

    說明

    支援Character Large Object(CLOB)儲存模式,不支援Binary Large Object(BLOB)儲存模式。

  • RAW(size)

  • LONG_RAW

  • BLOB

  • TIMESTAMP[fractional_seconds_precision]

  • TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE

  • TIMESTAMP [(fractional_seconds_precision)] WITH LOCAL TIME ZONE

  • INTERVAL YEAR [(year_precision)] TO MONTH

  • INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds_precision)]

  • SDO_GEOMETRY

  • SDO_TOPO_GEOMETRY

  • SDO_GEORASTER

  • ROWID

  • UROWID

  • ANYTYPE

  • ANYDATA

  • ANYDATASET

  • VARRAY

  • 自行定義的類型

字元集

支援

不支援

ASCII、ISO、UNICODE、US7ASCII、WE8HP、US8PC437、WE8EBCDIC285、WE8PC850、D7DEC、F7DEC、S7DEC、E7DEC、SF7ASCII、NDK7DEC、I7DEC、NL7DEC、CH7DEC、YUG7ASCII、SF7DEC、TR7DEC、IW7IS960、IN8ISCII、EE8ISO8859P2、SE8ISO8859P3、NEE8ISO8859P4、CL8ISO8859P5、AR8ISO8859P6、EL8ISO8859P7、IW8ISO8859P8、WE8ISO8859P9、NE8ISO8859P10、TH8TISASCII、BN8BSCII、VN8VN3、VN8MSWIN1258、WE8NEXTSTEP、AR8ASMO708PLUS、AR8EBCDICX、AR8XBASIC、EL8DEC、TR8DEC、WE8EBCDIC37、WE8EBCDIC37C、WE8EBCDIC500、WE8EBCDIC500C、WE8EBCDIC871、WE8EBCDIC284、EEC8EUROASCI、EEC8EUROPA3、LA8PASSPORT、BG8PC437S、EE8PC852、RU8PC866、RU8BESTA、IW8PC1507、RU8PC855、TR8PC857、CL8MACCYRILLIC、CL8MACCYRILLICS、WE8PC860、IS8PC861、EE8MSWIN1250、CL8MSWIN1251、ET8MSWIN923、BG8MSWIN、EL8MSWIN1253、IW8MSWIN1255、LT8MSWIN921、TR8MSWIN1254、WE8MSWIN1252、BLT8MSWIN1257、D8EBCDIC273、I8EBCDIC280、DK8EBCDIC277、S8EBCDIC278、F8EBCDIC297、IW8EBCDIC1086、N8PC865、BLT8CP921、LV8PC1117、LV8PC8LR、LV8RST104090、CL8KOI8R、BLT8PC775、F7SIEMENS9780X、E7SIEMENS9780X、S7SIEMENS9780X、DK7SIEMENS9780X、N7SIEMENS9780X、I7SIEMENS9780X、D7SIEMENS9780X、WE8GCOS7、EL8GCOS7、US8BS2000、D8BS2000、F8BS2000、E8BS2000、DK8BS2000、S8BS2000、WE8BS2000、WE8BS2000L5、CL8BS2000、WE8DG、WE8NCR4970、WE8ROMAN8、EE8MACCE、EE8MACCES、EE8MACCROATIAN、EE8MACCROATIANS、TR8MACTURKISH、TR8MACTURKISHS、IS8MACICELANDIC、IS8MACICELANDICS、EL8MACGREEK、EL8MACGREEKS、IW8MACHEBREW、IW8MACHEBREWS、US8ICL、WE8ICL、WE8ISOICLUK、WE8MACROMAN8、WE8MACROMAN8S、TH8MACTHAI、TH8MACTHAIS、HU8CWI2、EL8PC437S、EL8PC737、LT8PC772、LT8PC774、EL8PC869、EL8PC851、CDN8PC863、HU8ABMOD、AR8ASMO8X、AR8HPARABIC8T、AR8NAFITHA711、AR8NAFITHA711T、AR8SAKHR707、AR8SAKHR707T、AR8MUSSAD768、AR8MUSSAD768T、AR8ADOS710、AR8ADOS710T、AR8ADOS720、AR8ADOS720T、AR8APTEC715、AR8APTEC715T、AR8MSAWIN、AR8NAFITHA721、AR8NAFITHA721T、AR8SAKHR706、AR8ARABICMAC、AR8ARABICMACS、AR8ARABICMACT、LA8ISO6937、US8NOOP、WE8DEC、WE8DECTST、JA16VMS、JA16EUC、JA16EUCYEN、JA16EUCTILDE、JA16DBCS、JA16SJIS、JA16SJISTILDE、JA16SJISYEN、JA16EBCDIC930、JA16MACSJIS、KO16KSC5601、KO16DBCS、KO16KSCCS、KO16MSWIN949、ZHS16CGB231280、ZHS16MACCGB231280、ZHS16GBK、ZHS16DBCS、ZHS32GB18030、ZHT32EUC、ZHT32SOPS、ZHT16DBT、ZHT32TRIS、ZHT16DBCS、ZHT16BIG5、ZHT16CCDC、ZHT16MSWIN950、AL24UTFFSS、UTF8、UTFE、KO16TSTSET、JA16TSTSET2、JA16TSTSET、US16TSTFIXED、AL16UTF16LE、TH8TISEBCDIC、TH8TISEBCDICS、BLT8EBCDIC1112、BLT8EBCDIC1112S、CE8BS2000、CL8EBCDIC1025、CL8EBCDIC1025C、CL8EBCDIC1025R、CL8EBCDIC1025S、CL8EBCDIC1025X、CL8EBCDIC1158、CL8EBCDIC1158R、D8EBCDIC1141、DK8EBCDIC1142、EE8BS2000、EE8EBCDIC870、EE8EBCDIC870C、EE8EBCDIC870S、EL8EBCDIC423R、EL8EBCDIC875、EL8EBCDIC875S、EL8EBCDIC875R、F8EBCDIC1147、I8EBCDIC1144、WE8BS2000E、WE8EBCDIC1047、WE8EBCDIC1047E、WE8EBCDIC1140、WE8EBCDIC1140C、WE8EBCDIC1145、WE8EBCDIC1146、WE8EBCDIC1148、WE8EBCDIC1148C、AR8EBCDIC420S、IW8EBCDIC424、IW8EBCDIC424S、TR8EBCDIC1026、TR8EBCDIC1026S、ZHT16HKSCS、ZHT16HKSCS31、BLT8ISO8859P13、WE8ISO8859P1、WE8ISO8859P15、AR8MSWIN1256、S8EBCDIC1143、AZ8ISO8859P9E、CEL8ISO8859P14、CL8ISOIR111、CL8KOI8U、WE8PC858、WE8EBCDIC924、AL32UTF8、AL16UTF16

其餘類型的字元集