このトピックでは、data Transmission Service (DTS) を使用して、自己管理型OracleデータベースからAnalyticDB for PostgreSQLインスタンスにデータを移行する方法について説明します。
前提条件
自己管理型Oracleデータベースのバージョン番号は、9i、10g、11g、12c、18c、または19cです。
自己管理型OracleデータベースはARCHIVELOGモードで実行されています。 アーカイブされたログファイルにはアクセス可能であり、アーカイブされたログファイルには適切な保存期間が設定されます。 詳細については、『 アーカイブ REDO ログファイルの管理』をご参照ください。
SUPPLEMENTAL_LOG_DATA_PKおよびSUPPLEMENTAL_LOG_DATA_UIを含む補足ログは、自己管理型Oracleデータベースに対して有効になっています。 詳細については、『サプリメンタルロギング』をご参照ください。
移行先のAnalyticDB for PostgreSQLインスタンスが作成されました。 詳細については、次をご参照ください: インスタンスの作成
課金ルール
移行タイプ | タスク設定料金 | インターネットトラフィック料金 |
スキーマ移行とフルデータ移行 | 無料です。 | インターネット経由でAlibaba Cloudからデータが移行された場合にのみ課金されます。 詳細については、「課金の概要」をご参照ください。 |
増分データ移行 | 有料。 詳細については、「課金の概要」をご参照ください。 |
使用上の注意
完全データ移行中、DTSはソースデータベースとターゲットデータベースの読み取りおよび書き込みリソースを使用します。 これは、データベースサーバの負荷を増加させる可能性がある。 データを移行する前に、移行元データベースと移行先データベースのパフォーマンスに対するデータ移行の影響を評価します。 オフピーク時にデータを移行することを推奨します。
データ移行タスクが失敗して停止すると、DTSは自動的にタスクを再開します。 ワークロードをターゲットデータベースに切り替える前に、データ移行タスクを停止またはリリースしてください。 それ以外の場合、タスクの再開後に、ソースデータベースのデータがターゲットデータベースのデータを上書きします。
自己管理型OracleデータベースがReal Application Cluster (RAC) アーキテクチャでデプロイされ、Alibaba Cloud仮想プライベートクラウド (VPC) を介してDTSに接続されている場合、Oracle RACのSingle Client Access Name (SCAN) IPアドレスと各ノードの仮想IPアドレス (VIP) をVPCに接続し、ルートを設定する必要があります。 この設定により、DTSタスクが期待どおりに実行できるようになります。 詳細については、「VPN Gatewayを使用したデータセンターのDTSへの接続」をご参照ください。
重要DTSコンソールでソースOracleデータベースを構成する場合、Oracle RACのSCAN IPアドレスをデータベースエンドポイントまたはIPアドレスとして指定できます。
移行タイプ
移行タイプ | 説明 |
スキーマの移行 | DTSは、オブジェクトのスキーマをソースデータベースからターゲットデータベースに移行します。 DTSは、テーブル、インデックス、制約、関数、シーケンス、およびビューのタイプのオブジェクトのスキーマ移行をサポートしています。 警告
|
フルデータ移行 | DTSは、オブジェクトの履歴データをソースデータベースからターゲットデータベースに移行します。 説明 スキーマ移行中およびフルデータ移行中は、移行するオブジェクトに対してDDL操作を実行しないでください。 そうしないと、オブジェクトの移行に失敗する可能性があります。 |
増分データ移行 | 完全なデータ移行が完了すると、DTSはソースOracleデータベースからredoログファイルを取得します。 次に、DTSは、増分データをソースOracleデータベースからターゲットデータベースにリアルタイムで移行します。 DTSは、増分データ移行中に次のSQL操作を移行できます。
増分データ移行は、データ移行中の自己管理型アプリケーションのサービス継続性を保証します。 |
データベースアカウントに必要な権限
データベース | スキーマ移行 | 完全なデータ移行 | 増分データ移行 |
自己管理型Oracleデータベース | スキーマ所有者の権限 | スキーマ所有者の権限 | データベース管理者 (DBA) |
AnalyticDB for PostgreSQL | ターゲットデータベースの読み取りおよび書き込み権限 | ターゲットデータベースの読み取りおよび書き込み権限 | ターゲットデータベースの読み取りおよび書き込み権限 |
データベースアカウントを作成し、データベースアカウントに権限を付与する方法の詳細については、以下のトピックを参照してください。
自己管理型Oracleデータベース: CREATE USERおよびGRANT
AnalyticDB for PostgreSQLインスタンス: アカウントの設定
Oracleデータベースから増分データを移行する必要があるが、データベースアカウントにDBA権限を付与できない場合は、そのアカウントにきめ細かい権限を付与できます。 次のサンプルステートメントは、Oracleデータベースアカウントに特定の権限を付与する方法を示しています。
ログ記録を有効にし、Oracleデータベース・アカウントにきめ細かい権限を付与する
Oracleデータベースから増分データを移行する必要があるが、データベース管理者 (DBA) 権限をデータベースアカウントに付与できない場合は、アーカイブロギングと補足ロギングを有効にし、アカウントにきめ細かい権限を付与できます。
アーカイブロギングと補足ロギングを有効にします。
タイプ
手順
アーカイブロギング
次のステートメントを実行して、アーカイブログを有効にします。
shutdown immediate; startup mount; alter database archivelog; alter database open; archive log list;
補足ロギング
ビジネス要件に基づいて、データベースまたはテーブルレベルで補足ログを有効にします。
説明データベースレベルの補足ログを有効にして、Data Transmission Service (DTS) タスクの安定性を確保できます。 テーブルレベルの補足ロギングを有効にして、ソースOracleデータベースのディスク使用量を減らすことができます。
データベースレベルの補足ロギングの有効化
次のステートメントを実行して、最小限の補足ロギングを有効にします。
alter database add supplemental log data;
次のステートメントを実行して、データベースレベルで主キーと一意キーの補足ログを有効にします。
alter database add supplemental log data (primary key,unique index) columns;
テーブルレベルの補足ロギングの有効化
次のステートメントを実行して、最小限の補足ロギングを有効にします。
alter database add supplemental log data;
次のいずれかの方法を使用して、テーブルレベルの補足ログを有効にします。
テーブルレベルでプライマリキーの補足ログを有効にする
alter table table_name add supplemental log data (primary key) columns;
すべての列でテーブルレベルの補足ログを有効にする
alter table tb_name add supplemental log data (all) columns;
強制ロギング
次のステートメントを実行して、強制ロギングを有効にします。
alter database force logging;
Oracleデータベースアカウントにきめ細かい権限を付与します。
マルチテナントアーキテクチャを使用するの# rdsdt_dtsacctという名前のデータベースアカウントを作成し、そのアカウントに権限を付与します。 rdsdt_dtsacctによるIDENTIFIEDユーザーrdsdt_dtsacctを作成します。rdsdt_dtsacctにセッション作成を付与します。rdsdt_dtsacctへの接続を許可します。rdsdt_dtsacctにリソースを付与します。sys.dbms_logmnrでrdsdt_dtsacctに実行を許可します。V_$LOGMNR_LOGSでrdsdt_dtsacctにselectを付与します。all_objectsのselectをrdsdt_dtsacctに付与します。all_tab_colsのselectをrdsdt_dtsacctに付与します。dba_registryのselectをrdsdt_dtsacctに付与します。rdsdt_dtsacctに任意のテーブルを選択します。rdsdt_dtsacctへのトランザクションの選択を許可します。-- v$log特権 v_$ logのselectをrdsdt_dtsacctに付与します。-- v$logfile特権 v_$ logfileのselectをrdsdt_dtsacctに付与します。-- v$archived_log特権 v_$ archived_logでrdsdt_dtsacctにselectを付与します。-- v $パラメータ特権 v_$ パラメータのselectをrdsdt_dtsacctに付与します。-- v $データベース特権 v_$ データベースのselectをrdsdt_dtsacctに付与します。-- v$active_instances特権 v_$ active_instancesのselectをrdsdt_dtsacctに付与します。-- v $インスタンス特権 v_$ インスタンスのselectをrdsdt_dtsacctに付与します。-- v$logmnr_content権限 v_$ logmnr_contentsのselectをrdsdt_dtsacctに付与します。-- システムテーブル sys.USE R$ の選択をrdsdt_dtsacctに付与します。select on SYS.OBJ $をrdsdt_dtsacctに付与します。select on SYS.COL $をrdsdt_dtsacctに付与します。select on SYS.IND $をrdsdt_dtsacctに付与します。select on SYS.ICOL $をrdsdt_dtsacctに付与します。select on SYS.CDEF $をrdsdt_dtsacctに付与します。select on SYS.CCOL $をrdsdt_dtsacctに付与します。select on SYS.TABPART $をrdsdt_dtsacctに付与します。select on SYS.TABSUBPART $をrdsdt_dtsacctに付与します。select on SYS.TABCOMPART $をrdsdt_dtsacctに付与します。select_catalog_roleをrdsdt_dtsacctに付与します。
# プラガブルデータベース (PDB) に切り替えます。 rdsdt_dtsacctという名前のデータベースアカウントを作成し、そのアカウントに権限を付与します。 ALTER SESSION SETコンテナ=ORCLPDB1; rdsdt_dtsacctによるIDENTIFIEDユーザーrdsdt_dtsacctを作成します。rdsdt_dtsacctにセッション作成を付与します。rdsdt_dtsacctへの接続を許可します。rdsdt_dtsacctにリソースを付与します。sys.dbms_logmnrでrdsdt_dtsacctに実行を許可します。all_objectsのselectをrdsdt_dtsacctに付与します。all_tab_colsのselectをrdsdt_dtsacctに付与します。dba_registryのselectをrdsdt_dtsacctに付与します。rdsdt_dtsacctに任意のテーブルを選択します。rdsdt_dtsacctへのトランザクションの選択を許可します。-- v$log特権 v_$ logのselectをrdsdt_dtsacctに付与します。-- v$logfile特権 v_$ logfileのselectをrdsdt_dtsacctに付与します。-- v$archived_log特権 v_$ archived_logでrdsdt_dtsacctにselectを付与します。-- v $パラメータ特権 v_$ パラメータのselectをrdsdt_dtsacctに付与します。-- v $データベース特権 v_$ データベースのselectをrdsdt_dtsacctに付与します。-- v$active_instances特権 v_$ active_instancesのselectをrdsdt_dtsacctに付与します。-- v $インスタンス特権 v_$ インスタンスのselectをrdsdt_dtsacctに付与します。-- v$logmnr_content権限 v_$ logmnr_contentsのselectをrdsdt_dtsacctに付与します。sys.USE R$ の選択をrdsdt_dtsacctに付与します。select on SYS.OBJ $をrdsdt_dtsacctに付与します。select on SYS.COL $をrdsdt_dtsacctに付与します。select on SYS.IND $をrdsdt_dtsacctに付与します。select on SYS.ICOL $をrdsdt_dtsacctに付与します。select on SYS.CDEF $をrdsdt_dtsacctに付与します。select on SYS.CCOL $をrdsdt_dtsacctに付与します。select on SYS.TABPART $をrdsdt_dtsacctに付与します。select on SYS.TABSUBPART $をrdsdt_dtsacctに付与します。select on SYS.TABCOMPART $をrdsdt_dtsacctに付与します。-- V$PDBS特権 V_$PDBSのselectをrdsdt_dtsacctに付与します。v $データベースで選択をrdsdt_dtsacctに付与します。dba_objectsのselectをrdsdt_dtsacctに付与します。DBA_TAB_COMMENTSの選択をrdsdt_dtsacctに付与します。dba_tab_colsのselectをrdsdt_dtsacctに付与します。select_catalog_roleをrdsdt_dtsacctに付与します。# コンテナデータベース (CDB) のルートコンテナであるCDB$ROOTに切り替えます。 データベースアカウントを作成し、アカウントに権限を付与します。 ALTER SESSION SETコンテナ=CDB$ROOT; # rdsdt_dtsacctという名前のデータベースアカウントを作成し、そのアカウントに権限を付与します。 Oracleデータベースのデフォルト・パラメータを変更する必要があります。 alterセッションセット "_ORACLE_SCRIPT"=true; rdsdt_dtsacctによるIDENTIFIEDユーザーrdsdt_dtsacctを作成します。rdsdt_dtsacctにセッション作成を付与します。rdsdt_dtsacctへの接続を許可します。v_$ logmnr_contentsのselectをrdsdt_dtsacctに付与します。rdsdt_dtsacctへのログインを許可します。EXECUTE_CATALOG_ROLEをrdsdt_dtsacctに付与します。sys.dbms_logmnrでrdsdt_dtsacctに実行を許可します。
# rdsdt_dtsacctという名前のデータベースアカウントを作成し、そのアカウントに権限を付与します。 rdsdt_dtsacctによるIDENTIFIEDユーザーrdsdt_dtsacctを作成します。rdsdt_dtsacctにセッション作成を付与します。rdsdt_dtsacctへの接続を許可します。rdsdt_dtsacctにリソースを付与します。V_$LOGMNR_LOGSでrdsdt_dtsacctにselectを付与します。all_objectsのselectをrdsdt_dtsacctに付与します。all_tab_colsのselectをrdsdt_dtsacctに付与します。dba_registryのselectをrdsdt_dtsacctに付与します。rdsdt_dtsacctに任意のテーブルを選択します。rdsdt_dtsacctへのトランザクションの選択を許可します。v $データベースで選択をrdsdt_dtsacctに付与します。dba_objectsのselectをrdsdt_dtsacctに付与します。DBA_TAB_COMMENTSの選択をrdsdt_dtsacctに付与します。dba_tab_colsのselectをrdsdt_dtsacctに付与します。-- v$log特権 v_$ logのselectをrdsdt_dtsacctに付与します。-- v$logfile特権 v_$ logfileのselectをrdsdt_dtsacctに付与します。-- v$archived_log特権 v_$ archived_logでrdsdt_dtsacctにselectを付与します。-- v $パラメータ特権 v_$ パラメータのselectをrdsdt_dtsacctに付与します。-- v $データベース特権 v_$ データベースのselectをrdsdt_dtsacctに付与します。-- v$active_instances特権 v_$ active_instancesのselectをrdsdt_dtsacctに付与します。-- v $インスタンス特権 v_$ インスタンスのselectをrdsdt_dtsacctに付与します。-- v$logmnr_content権限 v_$ logmnr_contentsのselectをrdsdt_dtsacctに付与します。sys.USE R$ の選択をrdsdt_dtsacctに付与します。select on SYS.OBJ $をrdsdt_dtsacctに付与します。select on SYS.COL $をrdsdt_dtsacctに付与します。select on SYS.IND $をrdsdt_dtsacctに付与します。select on SYS.ICOL $をrdsdt_dtsacctに付与します。select on SYS.CDEF $をrdsdt_dtsacctに付与します。select on SYS.CCOL $をrdsdt_dtsacctに付与します。select on SYS.TABPART $をrdsdt_dtsacctに付与します。select on SYS.TABSUBPART $をrdsdt_dtsacctに付与します。select on SYS.TABCOMPART $をrdsdt_dtsacctに付与します。rdsdt_dtsacctへのログインを許可します。EXECUTE_CATALOG_ROLEをrdsdt_dtsacctに付与します。sys.dbms_logmnrでrdsdt_dtsacctに実行を許可します。select_catalog_roleをrdsdt_dtsacctに付与します。
手順
DTSコンソールにログインします。
説明データ管理 (DMS) コンソールにリダイレクトされている場合は、のアイコンをクリックして、以前のバージョンのDTSコンソールに移動し。
左側のナビゲーションウィンドウで、[データ移行] をクリックします。
[移行タスク] ページの上部で、移行先インスタンスが存在するリージョンを選択します。
ページの右上隅にある [移行タスクの作成] をクリックします。
ソースデータベースとターゲットデータベースを設定します。
セクション
パラメーター
説明
非該当
タスク名
DTSが自動的に生成するタスク名。 タスクを簡単に識別できるように、わかりやすい名前を指定することをお勧めします。 一意のタスク名を指定する必要はありません。
移行元データベース
インスタンスタイプ
ソースデータベースのインスタンスタイプ。 この例では、ECSインスタンスのユーザー作成データベースが選択されています。
説明別のインスタンスタイプを選択した場合は、自己管理データベースに必要な環境を設定する必要があります。 詳細については、「準備の概要」をご参照ください。
インスタンスリージョン
自己管理型OracleデータベースがホストされているElastic Compute Service (ECS) インスタンスが存在するリージョン。
ECSインスタンスID
自己管理型OracleデータベースがホストされているECSインスタンスのID。
データベースエンジン
移行元ディスクのタイプを設定します。 [Oracle] を選択します。
ポート番号
自己管理型Oracleデータベースのサービス・ポート番号。 デフォルト値: 1521
インスタンスタイプ
[非RACインスタンス] を選択した場合、SIDパラメーターを指定する必要があります。
RACまたはPDBインスタンスを選択した場合、サービス名パラメーターを指定する必要があります。
この例では、[非RACインスタンス] が選択されています。
SID
自己管理型OracleデータベースのシステムID (SID) 。
データベースアカウント
自己管理型Oracleデータベースのアカウント。 アカウントに必要な権限の詳細については、このトピックの「データベースアカウントに必要な権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを設定します。
説明ソースデータベースに関する情報を指定した後、[データベースパスワード] の横にある [接続のテスト] をクリックして、情報が有効かどうかを確認できます。 情報が有効な場合は、[合格] メッセージが表示されます。 [失敗] メッセージが表示されたら、[失敗] の横にある [チェック] をクリックします。 次に、チェック結果に基づいて情報を変更します。
ターゲットデータベース
インスタンスタイプ
ターゲットデータベースのタイプ。 [AnalyticDB for PostgreSQL] を選択します。
インスタンスリージョン
移行先のAnalyticDB for PostgreSQLインスタンスが存在するリージョン。
インスタンス ID
移行先のAnalyticDB for PostgreSQLインスタンスのID。
データベース名
ターゲットテーブルの名前です。
データベースアカウント
移行先のAnalyticDB for PostgreSQLインスタンスのデータベースアカウント。 アカウントに必要な権限の詳細については、このトピックの「データベースアカウントに必要な権限」をご参照ください。
データベースパスワード
データベースアカウントのパスワードを設定します。
ページの右下隅にある [ホワイトリストと次への設定] をクリックします。
警告DTSサーバーのCIDRブロックがデータベースまたはインスタンスのホワイトリスト、またはECSセキュリティグループルールに自動的または手動で追加されると、セキュリティリスクが発生する可能性があります。 したがって、DTSを使用してデータを移行する前に、潜在的なリスクを理解して認識し、次の対策を含む予防策を講じる必要があります。VPNゲートウェイ、またはSmart Access Gateway。
移行タイプ、操作タイプ、および移行するオブジェクトを選択します。
設定
説明
移行タイプの選択
フルデータ移行のみを実行するには、[スキーマ移行] と [フルデータ移行] を選択します。
データ移行中のサービスの継続性を確保するには、[スキーマ移行] 、[フルデータ移行] 、および [増分データ移行] を選択します。
説明増分データ移行が選択されていない場合、完全データ移行中にソースデータベースにデータを書き込まないことを推奨します。 これにより、ソースデータベースとターゲットデータベース間のデータの整合性が確保されます。
操作タイプの選択
増分データ移行時に移行する操作の種類を選択します。 デフォルトでは、すべての操作タイプが選択されています。
移行するオブジェクトの選択
[使用可能] セクションから1つ以上のオブジェクトを選択し、アイコンをクリックして、オブジェクトを [選択済み] セクションに移動します。
説明移行するオブジェクトとして、列、テーブル、またはスキーマを選択できます。
既定では、オブジェクトがターゲットデータベースに移行された後、オブジェクトの名前は変更されません。 オブジェクト名マッピング機能を使用して、移行先データベースに移行するオブジェクトの名前を変更できます。 詳細は、オブジェクト名のマッピングをご参照ください。
オブジェクト名マッピング機能を使用してオブジェクトの名前を変更すると、そのオブジェクトに依存する他のオブジェクトの移行に失敗する可能性があります。
オブジェクトの名前を変更するかどうかを指定する
オブジェクト名マッピング機能を使用して、移行先インスタンスに移行されるオブジェクトの名前を変更できます。 詳細は、オブジェクト名のマッピングをご参照ください。
ソースデータベースまたはターゲットデータベースへの接続が失敗した場合のリトライ時間範囲の指定
デフォルトでは、DTSがソースデータベースまたはターゲットデータベースへの接続に失敗した場合、DTSは次の12時間以内に再試行します。 業務要件に基づいて再試行時間範囲を指定できます。 指定された時間範囲内にDTSがソースデータベースとターゲットデータベースに再接続された場合、DTSはデータ移行タスクを再開します。 それ以外の場合、データ移行タスクは失敗します。
説明DTSがソースデータベースとターゲットデータベースへの再接続を試行する再試行時間内に、DTSインスタンスの料金が請求されます。 業務要件に基づいて再試行時間範囲を指定することを推奨します。 ソースインスタンスとターゲットインスタンスがリリースされた後、できるだけ早くDTSインスタンスをリリースすることもできます。
オブジェクト名を引用符で囲む
オブジェクト名を引用符で囲むかどうかを指定します。 [はい] を選択し、次の条件が満たされている場合、DTSは、スキーマ移行および増分データ移行中に、オブジェクト名を一重引用符 (') または二重引用符 (") で囲みます。
ソースデータベースのビジネス環境は大文字と小文字を区別しますが、データベースのオブジェクト名には大文字と小文字の両方が含まれます。
ソーステーブル名は、文字で始まるのではなく、文字、数字、および特殊文字以外の文字が含まれます。
説明ソーステーブル名には、アンダースコア (_) 、数字記号 (#) 、およびドル記号 ($) の特殊文字のみを含めることができます。
移行するスキーマ、テーブル、または列の名前は、移行先データベースのキーワード、予約済みキーワード、または無効な文字です。
AnalyticDB for PostgreSQLインスタンスに移行するテーブルのプライマリキー列と配布キーを指定します。
説明主キー列と配布列の詳細については、「contraints」と「テーブルの配布を定義」をご参照ください。
DTSがプライマリキーなしのテーブルを識別した場合、プライマリキーなしのすべてのテーブルのプライマリキーと配布キーをROWIDに設定オプションが前のページに表示されます。 このオプションを選択した場合、DTSはROWIDフィールドをプライマリキーおよび配布キーとして宛先テーブルに追加します。
ページの右下隅にある [事前チェック] をクリックします。
説明データ移行タスクを開始する前に、DTSは事前チェックを実行します。 データ移行タスクは、タスクが事前チェックに合格した後にのみ開始できます。
タスクが事前チェックに合格しなかった場合は、失敗した各項目の横にあるアイコンをクリックして詳細を表示できます。
原因に基づいて問題をトラブルシューティングし、事前チェックを再度実行できます。
問題をトラブルシューティングする必要がない場合は、失敗した項目を無視して、再度事前チェックを実行できます。
タスクが事前チェックに合格したら、[次へ] をクリックします。
[設定の確認] ダイアログボックスで、[チャネル仕様] パラメーターを指定し、[データ送信サービス (従量課金) サービス規約] を選択します。
[購入と開始] をクリックして、データ移行タスクを開始します。
スキーマ移行とフルデータ移行
フルデータ移行中は、手動でタスクを停止しないことをお勧めします。 そうしないと、ターゲットデータベースに移行されたデータが不完全になる可能性があります。 データ移行タスクが自動的に停止するまで待つことができます。
スキーマ移行、完全データ移行、および増分データ移行
増分データ移行タスクは自動的に停止しません。 タスクを手動で停止する必要があります。
重要データ移行タスクを手動で停止する適切な時期を選択することを推奨します。 たとえば、オフピーク時やワークロードを移行先クラスターに切り替える前にタスクを停止できます。
増分データ移行と移行タスクが遅延しませんが移行タスクのプログレスバーに表示されるまで待ちます。 その後、ソースデータベースへのデータの書き込みを数分間停止します。 増分データ移行のレイテンシは、プログレスバーに表示され得る。
増分データ移行のステータスが [移行タスクは遅延なし] に変わるまで待ちます。 次に、移行タスクを手動で停止します。