このトピックでは、data Transmission Service (DTS) を使用して、自己管理型OracleデータベースからPolarDB-X 1.0インスタンスにデータを移行する方法について説明します。 DTS はフルデータ移行と増分データ移行をサポートします。 自己管理型のOracleデータベースからデータを移行する場合、サービスの継続性を確保するために2つの移行タイプを選択できます。
前提条件
自己管理型Oracleデータベースのバージョン番号は、9i、10g、11g、12c、18c、または19cです。
SUPPLEMENTAL_LOG_DATA_PKおよびSUPPLEMENTAL_LOG_DATA_UIを含む補足ログは、自己管理型Oracleデータベースに対して有効になっています。 詳細については、『サプリメンタルロギング』をご参照ください。
自己管理型OracleデータベースはARCHIVELOGモードで実行されています。 アーカイブされたログファイルにアクセスでき、アーカイブされたログファイルに適切な保存期間が設定されます。 詳細については、『 アーカイブ REDO ログファイルの管理』をご参照ください。
自己管理型Oracleデータベースのサービス・ポートには、インターネット経由でアクセスできます。
PolarDB-X 1.0インスタンスのデータベースは、ApsaraDB RDS for MySQLインスタンスに基づいて作成する必要があります。 DTSは、PolarDB for MySQLクラスターに基づいて作成されたデータベースをサポートしていません。
PolarDB-X 1.0インスタンスの使用可能なストレージ容量は、自己管理型Oracleデータベースのデータの合計サイズよりも大きい。
使用上の注意
DTSは、自己管理型OracleデータベースからPolarDB-X 1.0インスタンスへのスキーマ移行をサポートしていません。
説明スキーマ移行中、DTSは、テーブルなどのオブジェクトのスキーマをソースデータベースからターゲットデータベースに移行します。
DTSは、完全データ移行中にソースデータベースとターゲットデータベースの読み取りおよび書き込みリソースを使用します。 これは、データベースサーバの負荷を増加させる可能性がある。 データベースのパフォーマンスが悪い場合、仕様が低い場合、またはデータ量が多い場合、データベースサービスが利用できなくなる可能性があります。 たとえば、ソースデータベースで多数の低速SQLクエリが実行されている場合、テーブルにプライマリキーがない場合、またはターゲットデータベースでデッドロックが発生する場合、DTSは大量の読み取りおよび書き込みリソースを占有します。 データを移行する前に、移行元データベースと移行先データベースのパフォーマンスに対するデータ移行の影響を評価します。 オフピーク時にデータを移行することを推奨します。 たとえば、ソースデータベースとターゲットデータベースのCPU使用率が30% 未満の場合にデータを移行できます。
移行元データベースで移行するテーブルには、PRIMARY KEYまたはUNIQUE制約が必要であり、すべてのフィールドが一意である必要があります。 そうでない場合、宛先データベースは重複するデータレコードを含み得る。
自己管理型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は自動的にタスクを再開します。 ワークロードをターゲットインスタンスに切り替える前に、データ移行タスクを停止またはリリースします。 それ以外の場合、タスクの再開後、ソースデータベースのデータはターゲットインスタンスのデータを上書きします。
課金ルール
移行タイプ | タスク設定料金 | インターネットトラフィック料金 |
スキーマ移行とフルデータ移行 | 無料です。 | インターネット経由でAlibaba Cloudからデータが移行された場合にのみ課金されます。 詳細については、「課金の概要」をご参照ください。 |
増分データ移行 | 有料。 詳細については、「課金の概要」をご参照ください。 |
移行タイプ
フルデータ移行
DTSは、オブジェクトの履歴データをソースOracleデータベースからターゲットPolarDB-X 1.0インスタンスに移行します。
説明データの整合性を確保するために、フルデータ移行中は自己管理型Oracleデータベースにデータを書き込まないことを推奨します。
増分データ移行
DTSは、自己管理Oracleデータベースからredoログ・ファイルを取得します。 次に、DTSは、増分データを自己管理型Oracleデータベースから移行先のPolarDB-X 1.0インスタンスに移行します。 増分データ移行により、OracleデータベースからPolarDB-X 1.0インスタンスにデータを移行する際に、サービスの継続性が確保されます。
説明増分データ移行中に、次のSQL操作を移行できます。INSERT、DELETE、およびUPDATE操作。 増分データ移行中は、DDL操作を移行できません。
準備
自己管理型Oracleデータベースから移行するテーブルに基づいて、移行先のPolarDB-X 1.0インスタンスにデータベースとテーブルを作成します。 詳細については、次をご参照ください: データベースの作成と テーブルを作成
説明OracleデータベースとPolarDB-X 1.0インスタンスのデータ型は、1対1で対応していません。 PolarDB-X 1.0インスタンスで対応するデータ型を定義する必要があります。 詳細については、「異種データベース間のデータ型マッピング」をご参照ください。
自己管理型のOracleデータベースにログインし、データの収集に使用するアカウントを作成し、そのアカウントに権限を付与します。
データベース
完全なデータ移行
増分データ移行
自己管理型Oracleデータベース
スキーマ所有者の権限
データベース管理者 (DBA) の権限
PolarDB-X
ターゲットデータベースに対する書き込み権限
ターゲットデータベースに対する書き込み権限
ログ記録を有効にし、Oracleデータベース・アカウントにきめ細かい権限を付与する
Oracleデータベースから増分データを移行する必要があるが、データベース管理者 (DBA) 権限をデータベースアカウントに付与できない場合は、アーカイブロギングと補足ロギングを有効にし、アカウントにきめ細かい権限を付与できます。
アーカイブロギングと補足ロギングを有効にします。
タイプ
手順
アーカイブロギング
次のステートメントを実行して、アーカイブログを有効にします。
すぐにシャットダウン。起動マウント; データベースarchivelogを変更します。データベースを開く。アーカイブログリスト;
補足ロギング
ビジネス要件に基づいて、データベースまたはテーブルレベルで補足ログを有効にします。
説明データベースレベルの補足ログを有効にして、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コンソールに移動します。
左側のナビゲーションウィンドウで、データ移行 をクリックします。
[移行タスク] ページの上部で、RDSインスタンスが存在するリージョンを選択します。
ページの右上隅にある [移行タスクの作成] をクリックします。
ソースデータベースとターゲットデータベースを設定します。
セクション
パラメーター
説明
非該当
タスク名
DTSが自動的に生成するタスク名。 タスクを簡単に識別できるように、わかりやすい名前を指定することをお勧めします。 一意のタスク名を指定する必要はありません。
移行元データベース
インスタンスタイプ
ソースデータベースのアクセス方法。 この例では、パブリックIPアドレスを持つユーザー作成データベースが選択されています。
説明別のインスタンスタイプを選択した場合は、自己管理データベースに必要な環境を設定する必要があります。 詳細については、「準備の概要」をご参照ください。
インスタンスリージョン
インスタンスタイプに [パブリックIPアドレスを持つユーザー作成データベース] を選択した場合、[インスタンスリージョン] パラメーターを設定する必要はありません。
説明自己管理型Oracleデータベースにホワイトリストが設定されている場合は、DTSサーバーのCIDRブロックをデータベースのホワイトリストに追加する必要があります。 [インスタンスリージョン] の横にある [DTS IP を取得する] をクリックして、DTS サーバーの CIDR ブロックを取得します。
データベースエンジン
移行元ディスクのタイプを設定します。 [Oracle] を選択します。
Hostname or IP Address
自己管理型Oracleデータベースへの接続に使用されるエンドポイント。 この例では、データベースのパブリックIPアドレスが使用されます。
ポート番号
自己管理型Oracleデータベースのサービス・ポート番号。 デフォルト値: 1521
インスタンスタイプ
ソースデータベースのアーキテクチャ。 [非RACインスタンス] を選択した場合、SIDパラメーターを指定する必要があります。
RACまたはPDBインスタンスを選択した場合、サービス名パラメーターを設定する必要があります。
データベースアカウント
自己管理型Oracleデータベースのアカウント。 アカウントに必要な権限の詳細については、このトピックの準備セクションを参照してください。
データベースパスワード
データベースアカウントのパスワードを設定します。
説明ソースデータベースに関する情報を指定した後、[データベースパスワード] の横にある [接続のテスト] をクリックして、情報が有効かどうかを確認できます。 情報が有効な場合は、[合格] メッセージが表示されます。 [失敗] メッセージが表示されたら、[失敗] の横にある [チェック] をクリックします。 次に、チェック結果に基づいて情報を変更します。
ターゲットデータベース
インスタンスタイプ
ターゲットデータベースのインスタンスタイプ。 [DRDSインスタンス] を選択します。
インスタンスリージョン
ターゲットPolarDB-X 1.0インスタンスが存在するリージョン。
DRDSインスタンスID
移行先のPolarDB-X 1.0インスタンスのID。
データベースアカウント
ターゲットPolarDB-Xデータベースインスタンスの1.0アカウント。 アカウントに必要な権限の詳細については、このトピックの準備セクションを参照してください。
データベースパスワード
データベースアカウントのパスワードを設定します。
説明RDSインスタンスに関する情報を指定した後、[データベースパスワード] の横にある [接続のテスト] をクリックして、情報が有効かどうかを確認できます。 情報が有効な場合は、[合格] メッセージが表示されます。 [失敗] メッセージが表示されたら、[失敗] の横にある [チェック] をクリックします。 次に、チェック結果に基づいて情報を変更します。
ページの右下隅にある [ホワイトリストの設定] および [次へ] をクリックします。
警告DTSサーバーのCIDRブロックがデータベースまたはインスタンスのホワイトリスト、またはECSセキュリティグループルールに自動的または手動で追加されると、セキュリティリスクが発生する可能性があります。 したがって、DTSを使用してデータを移行する前に、潜在的なリスクを理解して認識し、次の対策を含む予防策を講じる必要があります。VPNゲートウェイ、またはSmart Access Gateway。
移行タイプと移行するオブジェクトを選択します。
設定
説明
移行タイプの選択
フルデータ移行のみを実行する場合は、[スキーマ移行] および [フルデータ移行] を選択します。
データ移行中のサービスの継続性を確保するには、[スキーマ移行] 、[フルデータ移行] 、および [増分データ移行] を選択します。
説明増分データ移行を選択しない場合は、フルデータ移行中に自己管理型Oracleデータベースにデータが書き込まれないことを確認します。 これにより、自己管理型OracleデータベースとRDSインスタンス間のデータの整合性が確保されます。
移行するオブジェクトの選択
移行するオブジェクトを [オブジェクト] セクションから選択し、アイコンをクリックしてオブジェクトを [選択済み] セクションに移動します。
説明移行するオブジェクトとして、列、テーブル、またはデータベースを選択できます。
デフォルトでは、RDSインスタンスに移行されるオブジェクトの名前は、自己管理型Oracleデータベースの名前と同じままです。 オブジェクト名マッピング機能を使用して、ApsaraDB RDS for MySQLインスタンスに移行されるオブジェクトの名前を変更できます。 詳細は、オブジェクト名のマッピングをご参照ください。
オブジェクトの名前を変更するかどうかを指定する
オブジェクト名マッピング機能を使用して、移行先データベースに移行するオブジェクトの名前を変更できます。 詳細は、オブジェクト名のマッピングをご参照ください。
自己管理型OracleデータベースまたはApsaraDB RDS for MySQLインスタンスへの接続が失敗した場合のリトライ時間範囲の指定
デフォルトでは、DTSがソースデータベースまたはターゲットデータベースへの接続に失敗した場合、DTSは次の12時間以内に再試行します。 業務要件に基づいて再試行時間範囲を指定できます。 指定された時間範囲内にDTSがソースデータベースとターゲットデータベースに再接続された場合、DTSはデータ移行タスクを再開します。 それ以外の場合、変更追跡タスクは失敗します。
説明DTSが接続を再確立しようとすると、DTSインスタンスに対して課金されます。 ビジネスニーズに基づいて再試行時間範囲を指定することを推奨します。 ソースインスタンスとターゲットインスタンスがリリースされた後、できるだけ早くDTSインスタンスをリリースすることもできます。
[事前チェック] をクリックします。
説明移行タスクが開始される前にプリチェックが実行されます。 移行タスクは、事前チェックが成功した後にのみ開始されます。
事前チェックが失敗した場合は、失敗した各チェック項目の横にあるアイコンをクリックして、関連する詳細を表示します。 指示に従って問題を修正し、事前チェックを再度実行します。
[次へ] をクリックします。
[設定の確認] ダイアログボックスで、[チャネル仕様] パラメーターを設定します。 次に、[データ送信サービス (従量課金) サービス規約] を読み、選択します。
[今すぐ購入してスタート] をクリックして、移行タスクを開始します。
フルデータ移行
フルデータ移行タスクを手動で停止しないでください。 フルデータ移行タスクを手動で停止すると、RDSインスタンスに移行されたデータが不完全になる可能性があります。 データ移行タスクが自動的に停止するまで待つことができます。
増分データ移行
増分データ移行タスクは自動的に停止しません。 タスクを手動で停止する必要があります。
説明増分データ移行タスクを適切な時点で手動で停止することを推奨します。 たとえば、オフピーク時やワークロードをApsaraDB RDS For MySQLインスタンスに切り替える前にタスクを停止できます。
増分データ移行とデータ移行タスクが遅延しませんがデータ移行タスクのプログレスバーに表示されるまで待ちます。 その後、ソースデータベースへのデータの書き込みを数分間停止します。 増分データ移行のレイテンシは、プログレスバーに表示され得る。
増分データ移行のステータスが [データ移行タスクは遅延なし] に変わるまで待ちます。 次に、移行タスクを手動で停止します。
ワークロードをソースデータベースからPolarDB-X 1.0インスタンスに切り替えます。
次のステップ
データ移行に使用されるデータベースアカウントには、読み取りおよび書き込み権限があります。 データ移行が完了したら、セキュリティを確保するために、自己管理型OracleデータベースとPolarDB-X 1.0インスタンスの両方のアカウントを削除する必要があります。