Data Transmission Service (DTS) を使用してOracleデータベースからデータを転送したり、Oracleデータベースにデータをダンプしたりする前に、DTSの機能と制限、およびOracleデータベースをDTSに接続する準備を理解する必要があります。 これにより、データをスムーズに同期または移行できます。
Oracleデータベースの制限
ソースとしての自己管理型Oracleデータベース
項目 | 説明 |
Version | Oracle 10g、11g、12c、18c、および19cをサポートします。 |
アーキテクチャ |
|
同期または移行するデータ |
|
ネットワーク帯域幅 | 少なくとも100メガバイト/秒のネットワーク帯域幅をサポートします。 |
ビジネス要件 |
|
アクセス方式 |
|
その他の制限 |
|
ソースとしてのAmazon RDS for Oracleインスタンス
項目 | 説明 |
Version | Oracle 10g、11g、12c、18c、および19cをサポートします。 |
アーキテクチャ |
|
同期または移行するデータ |
|
ネットワーク帯域幅 | 少なくとも100メガバイト/秒のネットワーク帯域幅をサポートします。 |
ビジネス要件 |
|
アクセス方式 |
|
その他の制限 |
|
宛先としてのOracleデータベース
項目 | 説明 |
Version | Oracle 10g、11g、12c、18c、および19cをサポートします。 |
アーキテクチャ |
|
ネットワーク帯域幅 | 少なくとも100メガバイト/秒のネットワーク帯域幅をサポートします。 |
アクセス方式 |
|
その他の制限 |
|
Oracleデータベースの構成
Oracleデータベースからの完全なデータ同期または移行: ソース・データベースでは設定は必要ありません。
Oracleデータベースからの増分データの同期または移行: 増分データを取得するには、Oracleデータベースで次の設定を完了して、ソースデータベースログをキャプチャおよび解析する必要があります。
Oracleデータベースへの完全または増分データの同期または移行: 移行先データベースでは設定は必要ありません。
ソースとしての自己管理型Oracleデータベース
ログアーカイブモードの有効化
次のステートメントを実行して、ソースデータベースに対してARCHIVELOGモードが有効になっているかどうかを確認します。
archive log list;
説明Database log modeパラメーターの値がArchive Modeの場合、ARCHIVELOGモードが有効になります。 この場合、引き続き補足ロギングを有効にします。 詳細については、このトピックの「補足ログの有効化」をご参照ください。
アーカイブされたログは少なくとも3日間保持する必要があります。
次のステートメントを実行してデータベースを再起動します。
重要サービスの中断を防ぐため、オフピーク時にこの操作を実行することを推奨します。
shutdown immediate; startup mount;
次のステートメントを実行して、ARCHIVELOGモードを有効にします。
alter database archivelog; alter database open;
次のステートメントを実行して、ARCHIVELOGモードが有効かどうかを確認します。
archive log list;
補足ログの有効化
DTSは、データベースまたはテーブルレベルでの補足ロギングをサポートします。 ビジネス要件に基づいて、補足ログの種類を選択します。
データベースレベルの補足ログを有効にして、DTSタスクの安定性を確保できます。
テーブルレベルの補足ロギングを有効にして、ソースOracleデータベースのディスク使用量を減らすことができます。 移行するオブジェクトとしてデータベースを選択した場合、DDL文を使用して作成され、補足ログが有効になっていないテーブルは移行できません。
データベースレベルの補足ロギングの有効化
次のステートメントを実行して、データベースレベルの補足ロギングが有効かどうかを確認します。
SELECT supplemental_log_data_min, supplemental_log_data_pk,supplemental_log_data_ui FROM v$database;
次の例は、データベースレベルの補足ロギングが有効になっていることを示しています。 この場合、後続の手順をスキップします。
SUPPLEME SUP SUP -------- --- --- IMPLICIT YES YES
次のステートメントを実行して、最小限のデータベースレベルの補足ログを有効にします。
alter database add supplemental log data;
次のステートメントを実行して、主キーと一意キーのデータベースレベルの補足ログを有効にします。
alter database add supplemental log data (primary key,unique index) columns;
次のステートメントを実行して、データベースレベルの補足ロギングが有効かどうかを確認します。
SELECT supplemental_log_data_min, supplemental_log_data_pk,supplemental_log_data_ui FROM v$database;
テーブルレベルの補足ロギングの有効化
次のステートメントを実行して、最小限の補足ロギングを有効にします。
alter database add补足ログデータ;
次のいずれかのステートメントを実行して、テーブルレベルの補足ログを有効にします。
次のステートメントを実行して、主キーのテーブルレベルの補足ログを有効にします。
alter table <table_name> 補足ログデータ (主キー) 列を追加します。
次のステートメントを実行して、すべての列に対してテーブルレベルの補足ログを有効にします。
alter table <table_name> 補足ログデータ (すべて) 列を追加します。
ソースとしてのAmazon RDS for Oracleインスタンス
ARCHIVELOGモードを有効にする
次のステートメントを実行して、アーカイブログの保持期間を照会および設定します。
exec rdsadmin.rdsadmin_util.show_configuration;
exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours', 72);
補足ロギングの有効化
DTSは、データベースまたはテーブルレベルでの補足ロギングをサポートします。 ビジネス要件に基づいて、補足ログの種類を選択します。
データベースレベルの補足ログを有効にして、DTSタスクの安定性を確保できます。
テーブルレベルの補足ロギングを有効にして、ソースOracleデータベースのディスク使用量を減らすことができます。 移行するオブジェクトとしてデータベースを選択した場合、DDL文を使用して作成され、補足ログが有効になっていないテーブルは移行できません。
データベースレベルの補足ロギングの有効化
次のステートメントを実行して、データベースレベルの補足ロギングが有効かどうかを確認します。
SELECT supplemental_log_data_min, supplemental_log_data_pk,supplemental_log_data_ui FROM v$database;
次の例は、データベースレベルの補足ロギングが有効になっていることを示しています。 この場合、後続の手順をスキップします。
SUPPLEME SUP SUP -------- --- --- IMPLICIT YES YES
次のステートメントを実行して、強制ロギングを有効にします。
exec rdsadmin.rdsadmin_util.force_logging(p_enable => true);
次のステートメントを実行して、主キーと一意キーのデータベースレベルの補足ログを有効にします。
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD', 'PRIMARY KEY'); exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD', 'UNIQUE');
テーブルレベルの補足ロギングの有効化
次のステートメントを実行して、すべての列に対してテーブルレベルの補足ログを有効にします。
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD', 'ALL');
次のステートメントを実行して、主キーのテーブルレベルの補足ログを有効にします。
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD', 'PRIMARY KEY');
宛先としてのOracleデータベース
設定は必要ありません。
データベースアカウントの準備
ソースとしてのOracleデータベース
DTSを使用してOracleデータベースからデータを同期または移行する場合は、データ収集用のアカウントを作成し、そのアカウントに権限を付与する必要があります。 データの収集に使用するアカウントには、次の権限が必要です。
スキーマと完全データの同期または移行: データベース管理者 (DBA) 権限または操作固有の権限。
増分データ同期または移行: 操作固有の権限。
重要ソースデータベースが非マルチテナントアーキテクチャのOracleデータベースである場合、増分データ同期または移行中に、データ収集のためにDBA権限をアカウントに付与することもできます。
アカウントにDBA権限を付与
# Create a database account named rdsdt_dtsacct and grant permissions to the account.
create user rdsdt_dtsacct identified by rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;
grant connect to rdsdt_dtsacct;
grant dba to rdsdt_dtsacct;
# Use the rdsdt_dtsacct account to log on to the database and check whether the required permissions are granted.
select * from user_tab_privs;
select granted_role from user_role_privs;
スキーマと完全データの同期または移行のために、アカウントにきめ細かい権限を付与
# Create a database account named rdsdt_dtsacct and grant permissions to the account.
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;
# Use the rdsdt_dtsacct account to log on to the database and check whether the required permissions are granted.
select * from user_role_privs;
select * from user_sys_privs;
増分データの同期または移行のための操作固有の権限をアカウントに付与する
オラクル10gおよび11g
# Create a database account named rdsdt_dtsacct and grant permissions to the account.
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;
-- If the Oracle database is a standby database in the ADG architecture, you must grant the v_$standby_log permission to the account.
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;
# Use the rdsdt_dtsacct account to log on to the database and check whether the required permissions are granted.
select * from user_role_privs;
select * from user_sys_privs;
select * from user_tab_privs;
Oracle 12c〜19c (非マルチテナント)
# Create a database account named rdsdt_dtsacct and grant permissions to the account.
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;
-- If the Oracle database is a standby database in the ADG architecture, you must grant the v_$standby_log permission to the account.
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;
# Use the rdsdt_dtsacct account to log on to the database and check whether the required permissions are granted.
select * from user_role_privs;
select * from user_sys_privs;
select * from user_tab_privs;
Oracle 12c〜19c (マルチテナント)
PDBに作成されるアカウント名は、PDBが属するコンテナデータベース (CDB) のルートコンテナ (CDB $root) に作成されるアカウント名と同じである必要があります。ただし、グローバルアカウント名のプレフィックスC## を除きます。
# Switch to a PDB. Create a database account named rdsdt_dtsacct and grant permissions to the account.
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;
-- If the Oracle database is a standby database in the ADG architecture, you must grant the v_$standby_log permission to the account.
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;
# Switch to the CDB$ROOT. Create an account and grant permissions to the account.
alter session set container = CDB$ROOT;
# Create a database account named rdsdt_dtsacct and grant permissions to the account. If you use this method, you must modify the default parameters of the Oracle database.
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;
# Use the rdsdt_dtsacct account to log on to the database and check whether the required permissions are granted.
select * from user_role_privs;
select * from user_sys_privs;
select * from user_tab_privs;
Amazon RDS for Oracleインスタンス (マルチテナント以外)
Oracle SQL Developerを使用して権限を付与することを推奨します。
# Create a database account named RDSDT_DTSACCT and grant permissions to the account.
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');
# Use the RDSDT_DTSACCT account to log on to the database and check whether the required permissions are granted.
select * from user_role_privs;
select * from user_sys_privs;
select * from user_tab_privs;
宛先としてのOracleデータベース
DTSを使用してデータをOracleデータベースに同期または移行する場合は、データ複製用のアカウントを作成し、そのアカウントに権限を付与する必要があります。 データの複製に使用されるアカウントには、次の権限が必要です。
スキーマと完全データの同期または移行: DBA権限。
増分データ同期または移行: リソースの所有者権限。
アカウントにDBA権限を付与する
# Create a database account named rdsdt_dtsacct and grant permissions to the account.
create user rdsdt_dtsacct identified by rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;
grant connect to rdsdt_dtsacct;
grant dba to rdsdt_dtsacct;
# Use the rdsdt_dtsacct account to log on to the database and check whether the required permissions are granted.
select * from user_tab_privs;
select granted_role from user_role_privs;
リソースロールの権限をアカウントに付与する
# Create a database account named rdsdt_dtsacct and grant permissions to the account.
create user rdsdt_dtsacct identified by rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;
grant connect to rdsdt_dtsacct;
grant resource to rdsdt_dtsacct;
# Use the rdsdt_dtsacct account to log on to the database and check whether the required permissions are granted.
select * from user_tab_privs;
select granted_role from user_role_privs;
次のステップ
ソースデータベースまたはターゲットデータベースがOracleデータベースであるDTSタスクを設定します。 詳細については、「データ同期シナリオの概要」または「データ移行シナリオの概要」をご参照ください。
付録
次の表に、DTSタスクでサポートされているOracleデータ型と文字セットを示します。
データ型
対応 | サポートされていません |
|
|
文字セット
対応 | サポートされていません |
ASCII、ISO、ユニコード、US7ASCII、WE8HP、US8PC437、WE8EBARPLIC285、WE88PCAR8ISO8PCII、8WINECR、8WINDEC、E7DEC、SFA7ASCII、NDK7DEC、I7DEC、NL7DEC、CH7DEC、YUG7ASCII、SFA7ISSO7DEC、TR859DEC、889ISISO8TH9、888NE88292、88292、8NE8NE882II 8NE8NE8PEP92、TR8DEC、WE8CDEBCDIC37、WE8PCCDIC37C、WE8MSTRFTRLTIC500、WE8EBCDIC278、8IC8EBCDIC53、8WIN8EBCDIC1250、8WIN8EBCDICI、8EC8EUROACI、EEC8EUROPA3、LA8PASSPORT、BG8PC437S、EE8PCCL852、8PCCL757、8PCRAW15057、8PCRAY、8PCRAY、8PCRAY、8W150 LV8ICEEEEE8ISCHLR、LV8RST104090、CL8KOIISCHR、BLT8PCIC BS49PC775、F7SIEMENS9780X、8CSIEMENS9780X、N7SIEMENS9780X、D7SIEMENS9780X、WE8GCOS7、EL8GCOS7、US8BS2000、D8CRCR8BS2000、E8MAWE8MABS2000、8WE8MAANMABS2000、DK2000 WE8WEVDECROMAN8, WE8MAARAESARAROMAN8S, TH8MAARAARB69CTHAI, TH8MAARARBARCTHA720, 8PC437S, EL8PC737, LT8PC769, EL8PC869, EL8PCAR15863, HU8ARARARAR8A20T, 8AARMOBCAMOBART, SAHTEC, 8DTECAHTEC, 8X, 8, 8, 8X, 8X, 8H JA16EUHTCYEN、JA16EUHTCYE、JA16TICSTHTCYE、JA16ZGBZHISIS、JA1632TF16ALBEB1616ISYEN、JA8THST16TIC16ALB16ISSEK、JA16MACSJIS、KO16HTSC5601、KO16KDBCS、KO16KGBZWIN949、ZHS16MA32CGZALCCB16D16D16K、JAGBB23UC、Z16、Z16、Z16、Z16、Z168、CL8EBCDIC1025R、CL8CDHTCDIC1025S、CL8EBCDIC1025X、CL8EBCDIC26ISOTRP59HZIC1424、ISO8EBCDIC148IC148ICIC148EBCDEB114, D8EBCDIC114, EE8EBCDIC870, EE8EBCDIC870S、F、F8EBCDIC47、10WE1ICIC8WEE、8WE1ICICICICIC8WEEB1IC8C8C8C8C8C8C8C14E、C14, C144 CL8ISOIR111、CL8KOI8U、WE8PC858、WE8EBCDIC924、AL32UTF8、およびAL16UTF16 | その他の文字セット |