翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS DMSのソースとしての Oracle データベースの使用
を使用して、1 つまたは複数の Oracle データベースからデータを移行できます AWS DMS。ソースとして Oracle データベースを使用すると、 AWS DMSが対応しているどのターゲットにもデータを移行できます。
AWS DMS は、次の Oracle データベースエディションをサポートしています。
-
Oracle Enterprise Edition
-
Oracle Standard Edition
-
Oracle Express Edition
-
Oracle Personal Edition
がソースとして AWS DMS サポートする Oracle データベースのバージョンについては、「」を参照してくださいのソース AWS DMS。
Secure Sockets Layer (SSL) を使用して、Oracle エンドポイントとレプリケーションインスタンスとの接続を暗号化できます。Oracle エンドポイントで SSL を使用する方法の詳細については、「Oracle エンドポイントでの SSL のサポート」を参照してください。
AWS DMS は、Oracle 透過的データ暗号化 (TDE) を使用して、ソースデータベースに保管中のデータを暗号化します。Oracle ソースエンドポイントで Oracle TDE を使用する方法については、「のソースとして Oracle を使用するためのサポートされている暗号化方法 AWS DMS」をご参照ください。
AWS は、Oracle エンドポイント (および他のすべてのエンドポイントタイプ) での TLS バージョン 1.2 以降の使用をサポートし、TLS バージョン 1.3 以降の使用を推奨します。
Oracle データベースを AWS DMS ソースエンドポイントとして設定するには、次の手順に従います。
-
が Oracle ソースデータベースにアクセス AWS DMS するための適切なアクセス許可を持つ Oracle ユーザーを作成します。
-
選択した Oracle データベース設定に準拠する Oracle ソース エンドポイントを作成します。 full-load-only タスクを作成するには、それ以上の設定は必要ありません。
-
変更データキャプチャ (CDC のみまたは全ロードおよび CDC タスク) を処理するタスクを作成するには、Oracle LogMiner または AWS DMS Binary Reader を選択してデータ変更をキャプチャします。 LogMiner またはバイナリリーダーを選択すると、後のアクセス許可と設定オプションの一部が決まります。 LogMiner とバイナリリーダーの比較については、次のセクションを参照してください。
注記
全ロードタスク、CDC のみのタスク、および全ロードおよび CDC タスクの詳細については、「[Creating a task] (タスクの作成)」をご参照ください。
Oracle ソースデータベースと の操作の詳細については AWS DMS、以下のセクションを参照してください。
トピック
- CDC に Oracle LogMiner または AWS DMS Binary Reader を使用する
- のセルフマネージド型または AWSマネージド型の Oracle ソースデータベースを設定するためのワークフロー AWS DMSOracle ソースデータベースの設定
- のソースとしてのセルフマネージド Oracle データベースの使用 AWS DMS
- のソースとしての AWSマネージド Oracle データベースの使用 AWS DMS
- のソースとしての Oracle の使用に関する制限 AWS DMS
- Oracle エンドポイントでの SSL のサポート
- のソースとして Oracle を使用するためのサポートされている暗号化方法 AWS DMS
- のソースとして Oracle を使用するためのサポートされている圧縮方法 AWS DMS
- のソースとして Oracle を使用してネストされたテーブルをレプリケートする AWS DMS
- のソースとして Oracle を使用する場合の Oracle ASM への REDO の保存 AWS DMS
- のソースとして Oracle を使用する場合のエンドポイント設定 AWS DMS
- Oracle のソースデータ型
CDC に Oracle LogMiner または AWS DMS Binary Reader を使用する
では AWS DMS、Oracle の変更データキャプチャ (CDC) をソースとして実行するときに REDO ログを読み取るには、Oracle LogMiner と AWS DMS Binary Reader の 2 つの方法があります。 LogMiner は、オンライン REDO ログとアーカイブ REDO ログファイルを読み取るための Oracle API です。Binary Reader は、raw REDO ログファイルを直接読み取り、解析する AWS DMS メソッドです。これらのメソッドには次の特徴があります。
機能 | LogMiner | Binary Reader |
---|---|---|
設定しやすい | あり | なし |
ソースシステムのI/Oと CPU への影響軽減 | なし | あり |
CDC パフォーマンスの向上 | なし | あり |
Oracle テーブル クラスターのサポート | あり | なし |
すべてのタイプの Oracle ハイブリッド列圧縮(HCC)をサポート | あり |
部分的 バイナリリーダーは CDC のタスクでクエリローをサポートしていません。他のすべての HCC タイプが完全にサポートされています。 |
Oracle 12c でのみ LOB カラムのサポート | いいえ (LOB サポートは Oracle 12c の LogMiner では使用できません)。 | あり |
LOB カラムにのみ影響を与える UPDATE ステートメントに対応 |
なし | あり |
Oracle Transparent データ暗号化 (TDE) に対応 |
部分的 Oracle を使用する場合 LogMiner、Amazon RDS for Oracle AWS DMS の列レベルでの TDE 暗号化はサポートされていません。 |
部分的 Binary Reader は、自己管理 Oracle データベースに対してのみ TDE をサポートします。 |
すべての Oracle 圧縮法に対応 | あり | なし |
XA トランザクションに対応 | なし | あり |
RAC |
あり パフォーマンス上の理由や内部 DMS の制限により、推奨されません。 |
あり 強く推奨 |
注記
デフォルトでは、 は Oracle LogMiner for (CDC) AWS DMS を使用します。
AWS DMS は、Oracle ソースデータベースを使用する場合、透過的なデータ暗号化 (TDE) メソッドをサポートします。指定した TDE 認証情報が正しくない場合、 AWS DMS 移行タスクは失敗せず、暗号化されたテーブルの継続的なレプリケーションに影響する可能性があります。TDE 認証情報の指定の詳細については、「のソースとして Oracle を使用するためのサポートされている暗号化方法 AWS DMS」を参照してください。
LogMiner で を使用する主な利点 AWS DMS は次のとおりです。
-
LogMiner は、暗号化オプションや圧縮オプションなど、ほとんどの Oracle オプションをサポートしています。Binary Reader では、すべての Oracle オプションがサポートされているわけではありません (特に圧縮とほとんどの暗号化のオプション)。
-
LogMiner では、特に Binary Reader の直接アクセス設定や、REDO ログが Oracle Automatic Storage Management (ASM) を使用して管理されている場合と比較して、設定が簡単になります。
-
LogMiner は、 で使用するテーブルクラスターをサポートします AWS DMS。Binary Reader はサポートされません。
で Binary Reader を使用する主な利点 AWS DMS は次のとおりです。
-
大量の変更を伴う移行の場合、Oracle ソースデータベースをホストするコンピュータに I/O または CPU が何らかの影響を与える LogMiner 可能性があります。Binary Reader では、ログが複数のデータベース クエリを行うのではなく、直接マイニングされるため、I/O や CPU に影響を与える可能性が高くありません。
-
変更量の多い移行では、Oracle を使用するよりも Binary Reader を使用する場合の CDC パフォーマンスが通常はるかに優れています LogMiner。
-
Binary Reader は、Oracle バージョン 12c の LOBs の CDC をサポートしています。 LogMiner はサポートしていません。
通常、次のいずれかの状況がない限り、Oracle データベースの LogMiner 移行に Oracle を使用します。
-
ソース Oracle データベースで複数の移行タスクを実行する必要がある。
-
ソース Oracle データベース上の変更のボリュームまたは REDO ログボリュームが多いか、または変更があり、Oracle ASM も使用している場合。
注記
Oracle LogMiner と AWS DMS Binary Reader の使用を切り替える場合は、必ず CDC タスクを再起動してください。
Oracle ソース データベースでの CDC の設定
Oracle ソース エンドポイントが変更データ キャプチャ (CDC) タスクでデータベースに接続するには、特に追加の接続属性を指定する必要があります。これは、全ロードタスクと CDC タスク、または CDC のみのタスクに当てはまります。指定する追加の接続属性は、REDO ログへのアクセスに使用する方法、Oracle LogMiner または AWS DMS Binary Reader によって異なります。
ソース エンドポイントを作成するときに追加の接続属性を指定します。接続属性の設定が複数ある場合は、空白を追加せずにそれぞれをセミコロンで区切ります (例: oneSetting;thenAnother
)。
AWS DMS LogMiner はデフォルトで を使用します。これを使用するために、追加の接続属性を指定する必要はありません。
Binary Reader を使用してREDO ログにアクセスするには、以下の追加の接続属性を加えます。
useLogMinerReader=N;useBfile=Y;
次の追加の接続属性形式を使用して、Binary Reader で ASM を使用するサーバーにアクセスします。
useLogMinerReader=N;useBfile=Y;asm_user=
asm_username
;asm_server=RAC_server_ip_address
:port_number
/+ASM;
ソースエンドポイントの Password
リクエストパラメータに、Oracle ユーザーパスワードと ASM パスワードの両方をカンマで区切って含める必要があります。
oracle_user_password
,asm_user_password
Oracle ソースが ASM を使用する場合、Binary Reader でハイ パフォーマンスオプションを使用して、スケールが大きいなトランザクション処理を実行できます。これらのオプションには、並列スレッド数 (parallelASMReadThreads
) および先読みバッファ数 (readAheadBlocks
) を指定する追加の接続属性が含まれます。これらの属性を一括設定すると、CDC タスクのパフォーマンスを大幅に改善できます。次に示す設定は、ほとんどの ASM 設定で良好な結果を提供します。
useLogMinerReader=N;useBfile=Y;asm_user=asm_username;asm_server=RAC_server_ip_address:port_number/+ASM; parallelASMReadThreads=6;readAheadBlocks=150000;
追加の接続属性がサポートする値の詳細については、「のソースとして Oracle を使用する場合のエンドポイント設定 AWS DMS」をご参照ください。
また、 ASM を使用したOracle ソースで CDC タスクのパフォーマンスは、選択した他の設定によって異なります。これらの設定には、 AWS DMS の追加の接続属性と Oracle ソースを設定するための SQL 設定が含まれます。ASM を使用した Oracle ソースの追加接続属性の詳細については、「のソースとして Oracle を使用する場合のエンドポイント設定 AWS DMS」をご参照ください。
また、適切な CDC スタートポイントを選択する必要があります。通常、これを行う場合、CDC を開始する最も早いオープントランザクションをキャプチャするトランザクション処理点を特定します。そうしないと、CDC タスクは以前のオープントランザクションを見逃す可能性があります。Oracle ソースデータベースの場合、Oracle システム変更番号 (SCN) に基づいて CDC ネイティブのスタートポイントを選択して、この最も早いオープントランザクションを識別できます。詳細については、「CDC 開始点を起点とするレプリケーションの実行」を参照してください。
自己管理型 Oracle データベースをソースとして使用するための CDC 設定の詳細については、「Oracle を使用して REDO ログ LogMiner にアクセスするときに必要なアカウント権限」、「AWS DMS Binary Reader を使用して REDO ログにアクセスするときに必要なアカウント権限」や「Oracle ASM で Binary Reader の使用時に必要なアカウント権限」をご参照ください。
マネージド Oracle データベースの CDC をソースとして設定する方法の詳細については、 AWS の RDS for Oracle ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS「」および「」を参照してくださいAWS DMSの CDC 用 Binary Reader を使用したソースとして Amazon RDS Oracle スタンバイ(リードレプリカ)を使用する。
のセルフマネージド型または AWSマネージド型の Oracle ソースデータベースを設定するためのワークフロー AWS DMS
Oracle ソースデータベースの設定
セルフマネージド型のソースデータベースインスタンスを設定するには、CDC の実行方法に応じて、次のワークフローステップを使用します。
このワークフロー ステップの場合 | を使用して CDC を実行する場合は LogMiner、これを実行します。 | Binary Reader を使用して CDC を実行する場合は、これを行います |
---|---|---|
Oracle アカウントの特権を付与します。 | 「のセルフマネージド Oracle ソースに必要なユーザーアカウント権限 AWS DMS」を参照してください | 「のセルフマネージド Oracle ソースに必要なユーザーアカウント権限 AWS DMS」を参照してください |
CDC を使用してレプリケーション用のソースデータベースを準備します。 | 「を使用した CDC 用の Oracle セルフマネージド型ソースデータベースの準備 AWS DMS」を参照してください | 「を使用した CDC 用の Oracle セルフマネージド型ソースデータベースの準備 AWS DMS」を参照してください |
CDC に必要な追加の Oracle ユーザー権限を付与します。 | 「Oracle を使用して REDO ログ LogMiner にアクセスするときに必要なアカウント権限」を参照してください | 「AWS DMS Binary Reader を使用して REDO ログにアクセスするときに必要なアカウント権限」を参照してください |
ASM を持つ Oracle インスタンスの場合は、 CDC のために ASM へのアクセスに必要な追加のユーザーアカウント権限を付与します。 | 追加のアクションはありません。 は、追加のアカウント権限なしで Oracle ASM AWS DMS をサポートします。 | Oracle ASM で Binary Reader の使用時に必要なアカウント権限 を参照してください。 |
まだ行っていない場合は、CDC 用の LogMiner または Binary Reader を使用するようにタスクを設定します。 | 「CDC に Oracle LogMiner または AWS DMS Binary Reader を使用する」を参照してください | 「CDC に Oracle LogMiner または AWS DMS Binary Reader を使用する」を参照してください |
Oracle スタンバイを CDC のソースとして設定します。 | AWS DMS はソースとして Oracle Standby をサポートしていません。 | AWS DMSの CDC 用Binary Reader を使用したソースとしてのセルフ管理 Oracle スタンバイの使用 を参照してください。 |
AWSマネージド Oracle ソースデータベースインスタンスを設定するには、次のワークフローステップを使用します。
このワークフロー ステップの場合 | を使用して CDC を実行する場合は LogMiner、これを実行します。 | Binary Reader を使用して CDC を実行する場合は、これを行います |
---|---|---|
Oracle アカウントの特権を付与します。 | 詳細については、「の AWSマネージド Oracle ソースに必要なユーザーアカウント権限 AWS DMS」を参照してください。 | 詳細については、「の AWSマネージド Oracle ソースに必要なユーザーアカウント権限 AWS DMS」を参照してください。 |
CDC を使用してレプリケーション用のソースデータベースを準備します。 | 詳細については、「 の マネージド Oracle AWSソースの設定 AWS DMS」を参照してください。 | 詳細については、「 の マネージド Oracle AWSソースの設定 AWS DMS」を参照してください。 |
CDC に必要な追加の Oracle ユーザー権限を付与します。 | 追加のアカウント権限は必要ありません。 | 詳細については、「 の RDS for Oracle ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS」を参照してください。 |
まだ行っていない場合は、CDC 用の LogMiner または Binary Reader を使用するようにタスクを設定します。 | 詳細については、「CDC に Oracle LogMiner または AWS DMS Binary Reader を使用する」を参照してください。 | 詳細については、「CDC に Oracle LogMiner または AWS DMS Binary Reader を使用する」を参照してください。 |
Oracle スタンバイを CDC のソースとして設定します。 | AWS DMS はソースとして Oracle Standby をサポートしていません。 | 詳細については、「AWS DMSの CDC 用 Binary Reader を使用したソースとして Amazon RDS Oracle スタンバイ(リードレプリカ)を使用する」を参照してください。 |
のソースとしてのセルフマネージド Oracle データベースの使用 AWS DMS
セルフ管理データベースは自分で構成および制御するデータベースで、ローカルのオンプレミス データベース インスタンスまたは Amazon EC2 上のデータベースのいずれかです。次に、 でセルフマネージド Oracle データベースを使用するときに必要な権限と設定について説明します AWS DMS。
のセルフマネージド Oracle ソースに必要なユーザーアカウント権限 AWS DMS
で Oracle データベースをソースとして使用するには AWS DMS、Oracle エンドポイント接続設定で指定された Oracle ユーザーに次の権限を付与します。
注記
権限を付与する場合、オブジェクトのシノニムではなく、各オブジェクトの実際の名前を使用します。たとえば、下線のある V_$OBJECT
を使用します。下線のない V$OBJECT
は使用しません。
GRANT CREATE SESSION TO
db_user
; GRANT SELECT ANY TRANSACTION TOdb_user
; GRANT SELECT ON V_$ARCHIVED_LOG TOdb_user
; GRANT SELECT ON V_$LOG TOdb_user
; GRANT SELECT ON V_$LOGFILE TOdb_user
; GRANT SELECT ON V_$LOGMNR_LOGS TOdb_user
; GRANT SELECT ON V_$LOGMNR_CONTENTS TOdb_user
; GRANT SELECT ON V_$DATABASE TOdb_user
; GRANT SELECT ON V_$THREAD TOdb_user
; GRANT SELECT ON V_$PARAMETER TOdb_user
; GRANT SELECT ON V_$NLS_PARAMETERS TOdb_user
; GRANT SELECT ON V_$TIMEZONE_NAMES TOdb_user
; GRANT SELECT ON V_$TRANSACTION TOdb_user
; GRANT SELECT ON V_$CONTAINERS TOdb_user
; GRANT SELECT ON ALL_INDEXES TOdb_user
; GRANT SELECT ON ALL_OBJECTS TOdb_user
; GRANT SELECT ON ALL_TABLES TOdb_user
; GRANT SELECT ON ALL_USERS TOdb_user
; GRANT SELECT ON ALL_CATALOG TOdb_user
; GRANT SELECT ON ALL_CONSTRAINTS TOdb_user
; GRANT SELECT ON ALL_CONS_COLUMNS TOdb_user
; GRANT SELECT ON ALL_TAB_COLS TOdb_user
; GRANT SELECT ON ALL_IND_COLUMNS TOdb_user
; GRANT SELECT ON ALL_ENCRYPTED_COLUMNS TOdb_user
; GRANT SELECT ON ALL_LOG_GROUPS TOdb_user
; GRANT SELECT ON ALL_TAB_PARTITIONS TOdb_user
; GRANT SELECT ON SYS.DBA_REGISTRY TOdb_user
; GRANT SELECT ON SYS.OBJ$ TOdb_user
; GRANT SELECT ON DBA_TABLESPACES TOdb_user
; GRANT SELECT ON DBA_OBJECTS TOdb_user
; -– Required if the Oracle version is earlier than 11.2.0.3. GRANT SELECT ON SYS.ENC$ TOdb_user
; -– Required if transparent data encryption (TDE) is enabled. For more information on using Oracle TDE with AWS DMS, see のソースとして Oracle を使用するためのサポートされている暗号化方法 AWS DMS. GRANT SELECT ON GV_$TRANSACTION TOdb_user
; -– Required if the source database is Oracle RAC in AWS DMS versions 3.4.6 and higher. GRANT SELECT ON V_$DATAGUARD_STATS TOdb_user
; -- Required if the source database is Oracle Data Guard and Oracle Standby is used in the latest release of DMS version 3.4.6, version 3.4.7, and higher. GRANT SELECT ON V$DATABASE_INCARNATION TOdb_user
;
特定のテーブルリストを使用する場合は、レプリケーションテーブルごとに次の追加権限を付与します。
GRANT SELECT on
any-replicated-table
todb_user
;
検証機能を使用して LOB 列を検証するには、次の追加の権限を付与します。
GRANT EXECUTE ON SYS.DBMS_CRYPTO TO
db_user
;
の代わりにバイナリリーダーを使用する場合は、次の追加の権限を付与します LogMiner。
GRANT SELECT ON SYS.DBA_DIRECTORIES TO
db_user
;
ビューを公開するには、次の追加の権限を付与します。
GRANT SELECT on ALL_VIEWS to
dms_user
;
ビューを公開するには、ソースエンドポイントに追加のexposeViews=true
接続属性も追加します。
サーバーレスレプリケーションを使用する場合は、次の追加のアクセス権限を付与します。
GRANT SELECT on dba_segments to
db_user
;
サーバーレスレプリケーションの詳細については、「Serverless AWS DMS の使用」を参照してください。
Oracle 独自の移行前評価を使用する場合は、以下のアクセス権限を追加で付与します。
GRANT SELECT on gv_$parameter to
dms_user
; GRANT SELECT on v_$instance todms_user
; GRANT SELECT on v_$version todms_user
; GRANT SELECT on gv_$ASM_DISKGROUP todms_user
; GRANT SELECT on gv_$database todms_user
; GRANT SELECT on dba_db_links todms_user
; GRANT SELECT on gv_$log_History todms_user
; GRANT SELECT on gv_$log todms_user
; GRANT SELECT ON DBA_TYPES TOdb_user
; GRANT SELECT ON DBA_USERS to dms_user; GRANT SELECT ON DBA_DIRECTORIES to dms_user;
Oracle 独自の移行前評価の詳細については、「Oracle の評価」を参照してください。
Oracle スタンバイのオープントランザクションを処理するための前提条件
AWS DMS バージョン 3.4.6 以降を使用する場合は、次の手順を実行して Oracle Standby のオープントランザクションを処理します。
-
プライマリデータベースに
AWSDMS_DBLINK
という名前のデータベースリンクを作成します。
は、データベースリンクを使用してプライマリデータベースに接続します。このデータベースリンクは、プライマリデータベースで実行されるオープントランザクションをクエリするためにスタンバイインスタンスから実行されることに注意します。次の例を参照してください。DMS_USER
CREATE PUBLIC DATABASE LINK AWSDMS_DBLINK CONNECT TO
DMS_USER
IDENTIFIED BYDMS_USER_PASSWORD
USING '(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=PRIMARY_HOST_NAME_OR_IP
)(PORT=PORT
)) (CONNECT_DATA=(SERVICE_NAME=SID
)) )'; -
次の例に示されるとおり、
を使用したデータベースリンクへの接続が確立されていることを確認します。DMS_USER
select 1 from dual@AWSDMS_DBLINK
を使用した CDC 用の Oracle セルフマネージド型ソースデータベースの準備 AWS DMS
次の手順を実行して、CDC タスクを実行するソースとして自己管理型 Oracle データベースを準備します:
がソースデータベースのバージョン AWS DMS をサポートしていることの検証
以下のようなクエリを実行して、現在のバージョンの Oracle ソースデータベースが AWS DMSでサポートされていることを確認します。
SELECT name, value, description FROM v$parameter WHERE name = 'compatible';
ここで name
、value
、および description
は name
の値に基づいてクエリされるデータベース内の任意の列です。このクエリがエラーなしで実行された場合、 はデータベースの最新バージョン AWS DMS をサポートし、移行を続行できます。クエリでエラーが発生した場合、 AWS DMS データベースの最新バージョンはサポートされません。移行を続行するには、まず Oracle データベースを でサポートされているバージョンに変換します AWS DMS。
ARCHIVELOG モードがオンになっていることを確認する
Oracle は、ARCHIVELOG
モードと NOARCHIVELOG
モードの 2 つの異なるモードで実行できます。CDC タスクを実行するには、ARCHIVELOG
モードでデータベースを実行します。データベースが ARCHIVELOG
モードにあるかどうかを確認するため、次のクエリを実行します。
SQL> SELECT log_mode FROM v$database;
もし NOARCHIVELOG
mode が返されれば、オラクルの命令に従ってデータベースを ARCHIVELOG
に設定します。
サプリメンタル ロギングの設定
進行中の変更をキャプチャするには、Oracle ソースデータベースで最小限のサプリメンタルログを有効にする AWS DMS 必要があります。さらに、データベース内のレプリケーションされた各テーブルでサプリメンタル ロギングを有効にする必要があります。
デフォルトでは、 はレプリケートされたすべてのテーブルにPRIMARY KEY
サプリメンタルログ AWS DMS を追加します。 AWS DMS がPRIMARY KEY
サプリメンタルログを追加できるようにするには、レプリケートされたテーブルごとに次の権限を付与します。
ALTER on
any-replicated-table
;
追加の接続属性 AWS DMS を使用して、追加されたデフォルトのPRIMARY KEY
サプリメンタルログを無効にすることができますaddSupplementalLogging
。詳細については、「のソースとして Oracle を使用する場合のエンドポイント設定 AWS DMS」を参照してください。
プライマリ キー列を参照しない WHERE
句を使用してレプリケーション タスクでテーブルを更新する場合は、必ずサプリメンタル ログを有効にしてください。
サプリメンタル ログをマニュアルでセットアップするには
-
次のクエリを実行して、データベースのサプリメンタル ログが有効になっていることを確認します。
SELECT supplemental_log_data_min FROM v$database;
返される結果が
YES
またはIMPLICIT
の場合は、データベースのサプリメンタル ログは有効です。そうなっていなければ、次のコマンドを実行して、データベースのサプリメンタル ログを有効にします。
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
-
必要なサプリメンタル ログがレプリケートされたテーブルごとに追加されていることを確認します。
以下の点を考慮します。
-
ALL COLUMNS
サプリメンタル ログがテーブルに追加済みなら、その追加は不要です。 -
プライマリキーが存在する場合は、プライマリキーのサプリメンタルロギングを追加します。これを行うには、プライマリキーにサプリメンタル ログを追加する形式を使用するか、サプリメンタル ログをデータベースのプライマリキー列に追加します。
ALTER TABLE Tablename ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS; ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
-
プライマリキーが存在せず、テーブルに一意のインデックスが 1 つある場合、一意のインデックスのすべての列をサプリメンタルログに追加します。
ALTER TABLE
TableName
ADD SUPPLEMENTAL LOG GROUPLogGroupName
(UniqueIndexColumn1
[,UniqueIndexColumn2
] ...) ALWAYS;SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS
を使用しても、一意のインデックス列はログに追加されません。 -
プライマリキーが存在しず、テーブルに複数の一意のインデックスがある場合、 はアルファベット順に並べられた昇順リストで最初の一意のインデックス AWS DMS を選択します。前の項目と同様に、選択したインデックスの列にサプリメンタル ログを追加する必要があります。
SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS
を使用しても、一意のインデックス列はログに追加されません。 -
プライマリキーが存在せず、一意のインデックスがない場合は、すべての列にサプリメンタルロギングを追加します。
ALTER TABLE
TableName
ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;場合によっては、ターゲットテーブルのプライマリキーまたは一意のインデックスは、ソーステーブルのプライマリキーまたは一意のインデックスと異なります。その場合、ターゲット テーブルのプライマリ キーまたは一意のインデックスを構成するソース テーブル列でサプリメンタル ログを手動で追加します。
ターゲットテーブルのプライマリキーを変更する場合、ソースプライマリキーまたは一意のインデックスではなく、ターゲットの一意のインデックスの列にサプリメンタルロギングを追加する必要があります。
-
テーブルにフィルターまたは変換が定義されている場合は、追加のロギングを有効にする必要があります。
以下の点を考慮します。
-
ALL COLUMNS
サプリメンタル ログがテーブルに追加済みなら、その追加は不要です。 -
テーブルに一意のインデックスやプライマリ キーがある場合、フィルターまたは変換に関係する列ごとにサプリメンタル ログを追加します。ただし、これらの列がプライマリ キーまたは一意のインデックス列と異なる場合にのみ行ってください。
-
変換で列が 1 つしか使用されない場合は、この列をサプリメンタル ログ グループに追加しないでください。たとえば、変換
A+B
の場合は、列A
とB
の両方にサプリメンタルロギングを追加します。ただし、変換substring(A,10)
の場合、列A
にサプリメンタルロギングを追加しないでください。 -
プライマリ キーや一意のインデックス列、フィルタリングまたは変換されるその他の列の両方にサプリメンタル ログを設定するには、
USER_LOG_GROUP
サプリメンタル ログを追加できます。プライマリ キー/一意のインデックス列、フィルタリングまたは変換されるその他の特定の列の両方にこのサプリメンタル ログを追加します。たとえば、
TEST.LOGGING
という名前のテーブルをプライマリ キーID
と列NAME
によるフィルターでレプリケーションするには、次のようなコマンドを実行して、ロググループのサプリメンタル ログを作成します。ALTER TABLE TEST.LOGGING ADD SUPPLEMENTAL LOG GROUP TEST_LOG_GROUP (ID, NAME) ALWAYS;
Oracle を使用して REDO ログ LogMiner にアクセスするときに必要なアカウント権限
Oracle を使用して REDO ログにアクセスするには LogMiner、Oracle エンドポイント接続設定で指定された Oracle ユーザーに次の権限を付与します。
GRANT EXECUTE on DBMS_LOGMNR to db_user; GRANT SELECT on V_$LOGMNR_LOGS to db_user; GRANT SELECT on V_$LOGMNR_CONTENTS to db_user; GRANT LOGMINING to db_user; -– Required only if the Oracle version is 12c or higher.
AWS DMS Binary Reader を使用して REDO ログにアクセスするときに必要なアカウント権限
AWS DMS Binary Reader を使用して REDO ログにアクセスするには、Oracle エンドポイント接続設定で指定された Oracle ユーザーに次の権限を付与します。
GRANT SELECT on v_$transportable_platform to db_user; -– Grant this privilege if the redo logs are stored in Oracle Automatic Storage Management (ASM) and AWS DMS accesses them from ASM. GRANT CREATE ANY DIRECTORY to db_user; -– Grant this privilege to allow AWS DMS to use Oracle BFILE read file access in certain cases. This access is required when the replication instance doesn't have file-level access to the redo logs and the redo logs are on non-ASM storage. GRANT EXECUTE on DBMS_FILE_TRANSFER to db_user; -– Grant this privilege to copy the redo log files to a temporary folder using the CopyToTempFolder method. GRANT EXECUTE on DBMS_FILE_GROUP to db_user;
Binary Reader は、Oracle ディレクトリを含む Oracle ファイル機能で動作します。各 Oracle ディレクトリオブジェクトには、処理する REDO ログファイルが格納されているフォルダの名前が含まれます。これらの Oracle ディレクトリは、ファイルシステムレベルでは表されません。代わりに、これらは Oracle データベースレベルで作成される論理ディレクトリとなります。これらのビューは、Oracle ALL_DIRECTORIES
ビューで表示できます。
これらの Oracle ディレクトリ AWS DMS を作成する場合は、前述の権限を付与します。 CREATE ANY DIRECTORY
は、 DMS_
プレフィックスを持つディレクトリ名 AWS DMS を作成します。CREATE ANY DIRECTORY
権限を付与しない場合は、対応するディレクトリを手動で作成します。このような場合、Oracle ディレクトリを手動で作成すると、Oracle ソースエンドポイントで指定された Oracle ユーザーがこれらのディレクトリを作成したユーザーではない場合があります。このような場合は、READ
on DIRECTORY
権限も付与します。
Oracle ソースエンドポイントがアクティブデータガードスタンバイ (ADG) にある場合は、 AWS データベースブログの「ADG でバイナリリーダーを使用する方法
注記
AWS DMS CDC は、自動 REDO トランスポートサービスを使用するように設定されていない Active Dataguard Standby をサポートしていません。
このような場合、Oracle 管理ファイル (OMF) を使用してログを保存することがあります。または、ソース エンドポイントは ADG にあり、CREATE ANY DIRECTORY 権限を付与できません。このような場合は、 AWS DMS レプリケーションタスクを開始する前に、可能なすべてのログの場所を含むディレクトリを手動で作成します。 AWS DMS
が予期した事前に作成されたディレクトリを見つけられない場合、タスクは停止します。また、 AWS DMS は ALL_DIRECTORIES
ビューに作成したエントリを削除しないため、手動で削除します。
Oracle ASM で Binary Reader の使用時に必要なアカウント権限
Binary Reader を使用して Automatic Storage Management (ASM) の REDO ログにアクセスするには、Oracle エンドポイント接続設定で指定された Oracle ユーザーに次の権限を付与します。
SELECT ON v_$transportable_platform SYSASM -– To access the ASM account with Oracle 11g Release 2 (version 11.2.0.2) and higher, grant the Oracle endpoint user the SYSASM privilege. For older supported Oracle versions, it's typically sufficient to grant the Oracle endpoint user the SYSDBA privilege.
ASM アカウントへのアクセスを検証するには、上記で指定された Oracle バージョンに応じて、コマンド プロンプトを開き、次のいずれかのステートメントを呼び出します。
SYSDBA
特権が必要な場合は、以下を使用します。
sqlplus
asmuser
/asmpassword
@+asmserver
as sysdba
SYSASM
特権が必要な場合は、以下を使用します。
sqlplus
asmuser
/asmpassword
@+asmserver
as sysasm
AWS DMSの CDC 用Binary Reader を使用したソースとしてのセルフ管理 Oracle スタンバイの使用
CDC 用 Binary Reader を使用するときにソースとして Oracle Standby インスタンスを構成するには、次の前提条件からスタートします:
-
AWS DMS は現在、Oracle Active Data Guard スタンバイのみをサポートしています。
-
Oracle Data Guard の構成で次のものが使用されていることを確認します:
-
REDO データの自動転送用 REDO トランスポート サービス。
-
サービスを適用して、スタンバイデータベースに REDO を自動的に適用します。
-
上記の要件が満たされていることを確認するには、次のクエリを実行します。
SQL> select open_mode, database_role from v$database;
クエリの出力で、スタンバイデータベースが読み取り専用モードで開かれており、REDO が自動的に適用されていることを確認します。例:
OPEN_MODE DATABASE_ROLE -------------------- ---------------- READ ONLY WITH APPLY PHYSICAL STANDBY
CDC 用 Binary Reader を使用するときにソースとして Oracle スタンバイインスタンスを設定するには
-
スタンバイ ログファイルへのアクセスに必要な追加の権限を付与します。
GRANT SELECT ON v_$standby_log TO
db_user
; -
AWS Management Console または AWS CLIを使用して、Oracle スタンバイのソースエンドポイントを作成します。エンドポイントを作成する場合、次の追加の接続属性を指定します。
useLogminerReader=N;useBfile=Y;
注記
では AWS DMS、追加の接続属性を使用して、REDO ログの代わりにアーカイブログから移行するかどうかを指定できます。詳細については、「のソースとして Oracle を使用する場合のエンドポイント設定 AWS DMS」を参照してください。
-
アーカイブログの保存先を設定します。
ASM を使用しない Oracle ソースの DMS Binary Reader は、Oracle ディレクトリを使用してアーカイブの REDO ログにアクセスします。データベースがアーカイブログの宛先として高速リカバリ領域 (FRA) を使用するように設定されている場合、アーカイブ REDO ファイルの場所は一定ではありません。アーカイブ REDO ログが毎日生成されると、YYYY_MM_DD 形式のディレクトリ名を使用して、FRA に新しいディレクトリが作成されます。例:
DB_RECOVERY_FILE_DEST
/SID
/archivelog/YYYY_MM_DD
DMS が新しく作成された FRA ディレクトリ内のアーカイブ REDOファイルにアクセスする必要があり、プライマリの読み取り/書き込みデータベースがソースとして使用されている場合、DMS は次のとおり新しい Oracle ディレクトリを作成するか、既存の Oracle ディレクトリを置き換えます。
CREATE OR REPLACE DIRECTORY
dmsrep_taskid
AS ‘DB_RECOVERY_FILE_DEST
/SID
/archivelog/YYYY_MM_DD
’;スタンバイデータベースがソースとして使用されている場合、データベースは読み取り専用モードであるため、DMS は Oracle ディレクトリを作成または置換できません。ただし、次の追加手順のいずれかを実行できます。
-
Oracle が毎日サブディレクトリを作成しない設定の場合、FRA の代わりに実際のパスを使用するように
log_archive_dest_id_1
を変更します。ALTER SYSTEM SET log_archive_dest_1=’LOCATION=
full directory path
’次に、DMS が使用する Oracle ディレクトリオブジェクトを作成します。
CREATE OR REPLACE DIRECTORY dms_archived_logs AS ‘
full directory path
’; -
追加のアーカイブログの保存先と、その保存先を指す Oracle ディレクトリオブジェクトを作成します。例:
ALTER SYSTEM SET log_archive_dest_3=’LOCATION=
full directory path
’; CREATE DIRECTORY dms_archived_log AS ‘full directory path
’;次に、タスクのソースエンドポイントに追加の接続属性を追加します。
archivedLogDestId=3
-
DMS で使用する Oracle ディレクトリオブジェクトを手動で事前作成します。
CREATE DIRECTORY
dms_archived_log_20210301
AS ‘DB_RECOVERY_FILE_DEST/SID/archivelog/2021_03_01
’; CREATE DIRECTORYdms_archived_log_20210302
AS ‘DB_RECOVERY_FILE_DEST>/SID>/archivelog/2021_03_02
’; ... -
毎日実行され、必要なディレクトリを作成する Oracle スケジューラジョブを作成します。
-
AWS DMSの CDC のソースとしての Oracle Cloud Infrastructure (OCI) 上のユーザー管理データベースの使用
ユーザー管理データベースとは、仮想マシン (VM)、ベアメタル、または Exadata サーバー上に作成された Oracle データベースなど、ユーザーが設定して管理するデータベースです。または、Oracle Cloud Infrastructure (OCI) などの専用インフラストラクチャ上で実行される、ユーザーが設定して管理するデータベースもあります。次の情報は、 AWS DMSの変更データキャプチャ (CDC) のソースとして OCI 上の Oracle ユーザー管理データベースを使用する際に必要なアクセス権限と設定について説明しています。
OCI でホストされるユーザー管理の Oracleデータベースを変更データキャプチャのソースとして設定するには
-
OCI 上のユーザーマネージドの Oracle ソースデータベースに必要なユーザーアカウントアクセス権限を付与します。詳細については、「Account privileges for a self-managed Oracle source endpoint」を参照してください。
-
Binary Reader を使用して REDO ログにアクセスする際に必要なアカウントアクセス権限を付与します。詳細については、「Account privileges required when using Binary Reader」を参照してください。
-
Oracle Automatic Storage Management (ASM)で Binary Reader を使用する場合に必要なアカウントアクセス権限を追加します。詳細については、「Additional account privileges required when using Binary Reader with Oracle ASM」を参照してください。
-
サプリメンタルロギングをセットアップします。詳細については、「Setting up supplemental logging」を参照してください。
-
TDE 暗号化を設定します。詳細については、「Encryption methods when using an Oracle database as a source endpoint」を参照してください。
Oracle Cloud Infrastructure (OCI) 上の Oracle ソースデータベースからデータをレプリケートする場合、次の制限が適用されます。
制限事項
-
DMS は、Oracle を使用して REDO ログにアクセスする LogMiner ことをサポートしていません。
-
DMS は Autonomous DB をサポートしていません。
のソースとしての AWSマネージド Oracle データベースの使用 AWS DMS
AWSマネージドデータベースは、Amazon RDS、Amazon Aurora、Amazon S3 などの Amazon サービス上にあるデータベースです。で AWS管理の Oracle データベースを使用するときに設定する必要がある権限と設定を以下に示します AWS DMS。
の AWSマネージド Oracle ソースに必要なユーザーアカウント権限 AWS DMS
Oracle ソース エンドポイント定義で指定された Oracle ユーザーアカウントに、以下の権限を付与します。
重要
や db_user
などすべてのパラメータ値では、大文字と小文字を区別する識別子を使用して値を指定しない限り、Oracle は値をすべて大文字と見なします。たとえば、any-replicated-table
CREATE USER
または myuser
CREATE USER
MYUSER
のように引用符を使用しない
の値を作成するとします。この場合、Oracle は値をすべて大文字 (db_user
MYUSER
) として識別して格納します。CREATE USER "MyUser"
やCREATE USER 'MyUser'
のように引用符を使用すると、Oracle は、指定した大文字と小文字を区別する値を識別して格納します (MyUser
)。
GRANT CREATE SESSION to
db_user
; GRANT SELECT ANY TRANSACTION todb_user
; GRANT SELECT on DBA_TABLESPACES todb_user
; GRANT SELECT ONany-replicated-table
todb_user
; GRANT EXECUTE on rdsadmin.rdsadmin_util todb_user
; -- For Oracle 12c or higher: GRANT LOGMINING to db_user; – Required only if the Oracle version is 12c or higher.
さらに、SELECT
と EXECUTE
のアクセス許可を次のように Amazon RDS 手順 rdsadmin.rdsadmin_util.grant_sys_object
を使用して SYS
オブジェクトに付与します。詳細については、「SYS オブジェクトへの SELECT または EXECUTE 権限の付与」をご参照ください。
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_VIEWS', '
db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_PARTITIONS', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_INDEXES', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_OBJECTS', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TABLES', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_USERS', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CATALOG', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONSTRAINTS', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONS_COLUMNS', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_COLS', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_IND_COLUMNS', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_LOG_GROUPS', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOG', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGFILE', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$THREAD', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$NLS_PARAMETERS', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TIMEZONE_NAMES', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSACTION', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$CONTAINERS', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_REGISTRY', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('OBJ$', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_ENCRYPTED_COLUMNS', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS', 'db_user
', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','db_user
','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR', 'db_user
', 'EXECUTE'); -- (as of Oracle versions 12.1 and higher) exec rdsadmin.rdsadmin_util.grant_sys_object('REGISTRY$SQLPATCH', 'db_user
', 'SELECT'); -- (for Amazon RDS Active Dataguard Standby (ADG)) exec rdsadmin.rdsadmin_util.grant_sys_object('V_$STANDBY_LOG', 'db_user
', 'SELECT'); -- (for transparent data encryption (TDE)) exec rdsadmin.rdsadmin_util.grant_sys_object('ENC$', 'db_user
', 'SELECT'); -- (for validation with LOB columns) exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_CRYPTO', 'db_user
', 'EXECUTE'); -- (for binary reader) exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_DIRECTORIES','db_user
','SELECT'); -- Required when the source database is Oracle Data guard, and Oracle Standby is used in the latest release of DMS version 3.4.6, version 3.4.7, and higher. exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATAGUARD_STATS', 'db_user
', 'SELECT');
AWS DMS で Amazon RDS アクティブデータガードスタンバイ (ADG) の使用の詳細については、「AWS DMSの CDC 用 Binary Reader を使用したソースとして Amazon RDS Oracle スタンバイ(リードレプリカ)を使用する」をご参照ください。
での Oracle TDE の使用の詳細については AWS DMS、「」を参照してくださいのソースとして Oracle を使用するためのサポートされている暗号化方法 AWS DMS。
Oracle スタンバイのオープントランザクションを処理するための前提条件
AWS DMS バージョン 3.4.6 以降を使用する場合は、次の手順を実行して Oracle Standby のオープントランザクションを処理します。
-
プライマリデータベースに
AWSDMS_DBLINK
という名前のデータベースリンクを作成します。
は、データベースリンクを使用してプライマリデータベースに接続します。このデータベースリンクは、プライマリデータベースで実行されるオープントランザクションをクエリするためにスタンバイインスタンスから実行されることに注意します。次の例を参照してください。DMS_USER
CREATE PUBLIC DATABASE LINK AWSDMS_DBLINK CONNECT TO
DMS_USER
IDENTIFIED BYDMS_USER_PASSWORD
USING '(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=PRIMARY_HOST_NAME_OR_IP
)(PORT=PORT
)) (CONNECT_DATA=(SERVICE_NAME=SID
)) )'; -
次の例に示されるとおり、
を使用したデータベースリンクへの接続が確立されていることを確認します。DMS_USER
select 1 from dual@AWSDMS_DBLINK
の マネージド Oracle AWSソースの設定 AWS DMS
AWSマネージド Oracle データベースを のソースとして使用する前に AWS DMS、Oracle データベースに対して次のタスクを実行します。
-
自動バックアップを有効化します。自動バックアップの有効化の詳細については、Amazon RDS ユーザーガイド の「自動バックアップの有効化」をご参照ください。
-
サプリメンタルロギングをセットアップします。
-
アーカイブを設定します。Amazon RDS for Oracle DB インスタンスの REDO ログをアーカイブすると AWS DMS 、 は Oracle LogMiner または Binary Reader を使用してログ情報を取得できます。
アーカイブを設定するには
-
rdsadmin.rdsadmin_util.set_configuration
コマンドを実行してアーカイブをセットアップします。たとえば、アーカイブされた REDO ログを 24 時間保持するには、次のコマンドを実行します。
exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24); commit;
注記
変更を反映するにはコミットが必要です。
-
指定された保持期間中、アーカイブされた REDO ログのための十分な容量がストレージにあることを確認します。たとえば、保持期間が 24 時間の場合は、通常のトランザクション処理時間における累積アーカイブ REDO ログの合計サイズを計算し、その合計に 24 を掛けます。この計算された 24 時間の合計と、使用可能なストレージ容量を比較し、24 時間のトランザクション処理を処理するのに十分なストレージ領域があるかどうかを判断します。
サプリメンタルロギングをセットアップするには
-
データベース レベルでサプリメンタル ログを有効にするには、次のコマンドを実行します。
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
-
次のコマンドを実行してプライマリ キー列のサプリメンタル ログを有効にします。
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','PRIMARY KEY');
-
(オプション) テーブル レベルでキーレベルのサプリメンタル ログを有効にします。
キーレベルのサプリメンタル ログを有効にすると、ソースデータベースで多少のオーバーヘッドが生じます。したがって、テーブルのサブセットのみを移行する場合は、テーブルレベルでのサプリメンタル ログを有効にすることをお勧めします。キーレベルのサプリメンタル ログをテーブル レベルで有効にするには、次のコマンドを使用します。
alter table table_name add supplemental log data (PRIMARY KEY) columns;
の RDS for Oracle ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS
CDC 用 Binary Reader を使用して、ソース Amazon RDS for Oracle インスタンスの REDO ログにアクセスする AWS DMS ように を設定できます。
注記
Oracle を使用するには LogMiner、最低限必要なユーザーアカウント権限で十分です。詳細については、「の AWSマネージド Oracle ソースに必要なユーザーアカウント権限 AWS DMS」を参照してください。
AWS DMS Binary Reader を使用するには、バージョンに応じて AWS DMS 、Oracle ソースエンドポイントの追加設定と追加の接続属性を指定します。
Binary Reader のサポートは、Amazon RDS for Oracle の次のバージョンで利用できます。
-
Oracle バージョン 12.1.0.2.v11 以降
-
Oracle バージョン 12.1.0.2.v7 以降
-
Oracle 12.2 – すべてのバージョン
-
Oracle 18.0 – すべてのバージョン
-
Oracle 19.0 – すべてのバージョン
Binary Reader を使用して CDC を設定するには
-
Amazon RDS for Oracle ソース データベースにマスターユーザーとしてログインし、次のストアド プロシージャを実行してサーバーレベル ディレクトリを作成します。
exec rdsadmin.rdsadmin_master_util.create_archivelog_dir; exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
-
Oracle ユーザーアカウントに、Oracle ソース エンドポイントにアクセスするための以下の権限を付与します。
GRANT READ ON DIRECTORY ONLINELOG_DIR TO
db_user
; GRANT READ ON DIRECTORY ARCHIVELOG_DIR TOdb_user
; -
Amazon RDS Oracle ソースエンドポイントで、次の追加の接続属性を設定します。
-
RDS Oracle バージョン 11.2 と 12.1 では、次のように設定します。
useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false;useAlternateFolderForOnline=true; oraclePathPrefix=/rdsdbdata/db/{$DATABASE_NAME}_A/;usePathPrefix=/rdsdbdata/log/;replacePathPrefix=true;
-
RDS Oracle バージョン 12.2、18.0、19.0 では、次のように設定します。
useLogminerReader=N;useBfile=Y;
-
注記
複数の属性設定には、セミコロン区切り文字 (;) の後に空白を含めることはできません、例えば oneSetting;thenAnother
。
CDC タスクの設定の詳細については、「Oracle ソース データベースでの CDC の設定」をご参照ください。
AWS DMSの CDC 用 Binary Reader を使用したソースとして Amazon RDS Oracle スタンバイ(リードレプリカ)を使用する
AWS DMSで CDC 用 Binary Reader を使用する場合は、ソースとして Amazon RDS for Oracle スタンバイを使用するための次の前提条件を確認します:
-
Oracle マスターユーザーを使用して、 Binary Reader を設定します。
-
現在、 が Oracle Active Data Guard Standby のみの使用 AWS DMS をサポートしていることを確認してください。
その後、CDC 用 Binary Reader を使用するときに、次の手順に従ってソースとして RDS for Oracle スタンバイを使用します。
CDC 用 Binary Reader を使用するときにソースとして RDS for Oracle スタンバイを設定するには
-
RDS for Oracle のプライマリインスタンスに管理ユーザーとしてサインインします。
-
Amazon RDS ユーザーガイドに記載されている次のストアドプロシージャを実行して、サーバーレベル ディレクトリを作成します。
exec rdsadmin.rdsadmin_master_util.create_archivelog_dir; exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
-
ステップ 2 で作成したディレクトリを特定します。
SELECT directory_name, directory_path FROM all_directories WHERE directory_name LIKE ( 'ARCHIVELOG_DIR_%' ) OR directory_name LIKE ( 'ONLINELOG_DIR_%' )
たとえば、前述のコードでは、次のようなディレクトリの一覧が表示されます。
-
Oracle スタンバイにアクセスするために使用する Oracle ユーザーアカウントに対する前述のディレクトリに対する
Read
の権限を許可します。GRANT READ ON DIRECTORY ARCHIVELOG_DIR_A TO
db_user
; GRANT READ ON DIRECTORY ARCHIVELOG_DIR_B TOdb_user
; GRANT READ ON DIRECTORY ONLINELOG_DIR_A TOdb_user
; GRANT READ ON DIRECTORY ONLINELOG_DIR_B TOdb_user
; -
プライマリ インスタンスでアーカイブ ログ スイッチを実行します。これを行うと、
ALL_DIRECTORIES
の変更が Oracle スタンバイにも移植されることを確認します。 -
ALL_DIRECTORIES
Oracle Standby でクエリを実行して、変更が適用されたことを確認します。 -
マネジメントコンソールまたは AWS Command Line Interface () を使用して、Oracle スタンバイの AWS DMS ソースエンドポイントを作成しますAWS CLI。エンドポイントの作成時に、次の追加の接続属性を指定します。
useLogminerReader=N;useBfile=Y;archivedLogDestId=1;additionalArchivedLogDestId=2
-
エンドポイントを作成したら、コンソールのエンドポイントの作成ページでエンドポイント接続のテストを使用するか、 AWS CLI
test-connection
コマンドを使用して接続が確立されていることを確認します。
のソースとしての Oracle の使用に関する制限 AWS DMS
Oracle データベースを AWS DMSのソースとして使用する場合は、以下の制限が適用されます。
-
AWS DMS は、 AWS DMS バージョン 3.5.0 以降の Oracle 拡張データ型をサポートしています。
-
AWS DMS は長いオブジェクト名 (30 バイト以上) をサポートしていません。
-
AWS DMS は関数ベースのインデックスをサポートしていません。
-
サプリメンタル ログを管理し、いずれかの列で変換を実行する場合は、すべてのフィールドと列でサプリメンタル ログが有効になっていることを確認してください。サプリメンタル ログの設定の詳細については、以下のトピックをご参照ください:
-
セルフ管理 Oracle ソースデータベースについては、「サプリメンタル ロギングの設定」をご参照ください。
-
マネージド Oracle ソースデータベースについては、 AWS「」を参照してください の マネージド Oracle AWSソースの設定 AWS DMS。
-
-
AWS DMS は、マルチテナントコンテナルートデータベース (CDB$ROOT) をサポートしていません。しかし、Binary Reader を使用した PDB をサポートしています。
-
AWS DMS は遅延制約をサポートしていません。
-
AWS DMS バージョン 3.5.1 以降では、安全な LOBs は LOB ルックアップを実行することによってのみサポートされます。
-
AWS DMS は、サポートされているすべての Oracle バージョン 11 以降の
rename table table-name to new-table-name
構文をサポートします。この構文は Oracle バージョン 10 ソースデータベースではサポートされていません。 -
AWS DMS は DDL ステートメント の結果をレプリケートしません
ALTER TABLE ADD
。ターゲットにcolumn
data_type
DEFAULTdefault_value
をレプリケートする代わりに、新しい列をdefault_value
NULL
に設定します。 -
AWS DMS バージョン 3.4.7 以降を使用している場合、パーティションまたはサブパーティションオペレーションに起因する変更をレプリケートするには、DMS タスクを開始する前に次の操作を行います。
-
パーティション分割されたテーブル構造 (DDL) を手動で作成します。
-
DDL が Oracle ソースと Oracle ターゲットの両方で同じであることを確認します。
-
追加の接続属性
enableHomogenousPartitionOps=true
を設定します。
enableHomogenousPartitionOps
の詳細については、「のソースとして Oracle を使用する場合のエンドポイント設定 AWS DMS」を参照してください。また、フルと CDC タスクでは、DMS はキャッシュした変更の一部としてキャプチャしたデータ変更をレプリケートしないことにも注意します。このようなユースケースでは、Oracle ターゲットでテーブル構造を再作成して、該当テーブルをもう一度ロードします。AWS DMS バージョン 3.4.7 より前:
DMS は、パーティション操作またはサブパーティション操作 (
ADD
、DROP
、EXCHANGE
、TRUNCATE
) によるデータ変更をレプリケートしません。このような更新により、レプリケーション中に次のエラーが発生する可能性があります:-
ADD
オペレーションの場合、追加されたデータの更新と削除により、「影響を受ける行は 0 です」という警告が表示されることがあります。 -
DROP
およびTRUNCATE
オペレーションの場合、新しい挿入によって「重複」エラーが発生する可能性があります。 -
EXCHANGE
オペレーションは、「影響を受ける行は 0 です」警告と「重複」エラーの両方が発生する可能性があります。
パーティションオペレーションまたはサブパーティションオペレーションによる変更をレプリケートするには、対象のテーブルをリロードします。新しい空のパーティションを追加した後、新しく追加されたテーブルに対するオペレーションは、通常どおりターゲットへのレプリケーションとなります。
-
-
AWS DMS 3.4 より前のバージョンでは、ソースで
CREATE TABLE AS
ステートメントを実行した結果生じるターゲットのデータ変更をサポートしていません。ただし、新しいテーブルがターゲットで作成されます。 -
AWS DMS は、テーブルメタデータや
OBJECT_ID
フィールドなど、OracleDBMS_REDEFINITION
パッケージによって行われた変更をキャプチャしません。 -
AWS DMS は、空の BLOB 列と CLOB 列をターゲット
NULL
の にマッピングします。 -
Oracle 11 で変更をキャプチャする場合 LogMiner、文字列長が 1982 を超える CLOB 列の更新は失われ、ターゲットは更新されません。
-
変更データキャプチャ (CDC) AWS DMS 中、プライマリキーとして定義された数値列へのバッチ更新はサポートされていません。
-
AWS DMS は特定の
UPDATE
コマンドをサポートしていません。次の例は、サポートされていないUPDATE
コマンドです。UPDATE TEST_TABLE SET KEY=KEY+1;
ここで、
TEST_TABLE
はテーブル名であり、KEY
は、プライマリキーとして定義された数値列です。 -
AWS DMS は、LONG 列と LONG RAW 列をロードするためのフル LOB モードをサポートしていません。この代わりに、制限付き LOB モードを使用してこのようなデータ型を Oracle ターゲットに移行できます。限定 LOB モードでは、 は、64 KB を超える LONG または LONG RAW 列に設定したデータを 64 KB に AWS DMS 切り捨てます。
-
AWS DMS は、XMLTYPE 列のロードにフル LOB モードをサポートしていません。この代わりに、制限付き LOB モードを使用して XMLTYPE 列を Oracle ターゲットに移行できます。制限付き LOB モードでは、DMS はユーザー定義の「最大 LOB サイズ」変数以上のデータは切り捨てます。「最大 LOB サイズ」の最大推奨値は 100 MB です。
-
AWS DMS は、名前にアポストロフィが含まれているテーブルをレプリケートしません。
-
AWS DMS は、マテリアライズドビューからの CDC をサポートします。ただし、DMS はその他のビューからの CDC はサポートしていません。
-
AWS DMS は、オーバーフローセグメントを持つインデックスで編成されたテーブルの CDC をサポートしていません。
-
AWS DMS は、 を
enableHomogenousPartitionOps
に設定して参照によってパーティション分割されたテーブルのDrop Partition
オペレーションをサポートしていませんtrue
。 -
Oracle を使用して REDO ログ LogMiner にアクセスする場合、 には次の制限 AWS DMS があります。
-
Oracle 12 のみの場合、LOB 列に変更をレプリケー AWS DMS トしません。
-
すべての Oracle バージョンで、 AWS DMS
XMLTYPE
および LOB 列に対するUPDATE
オペレーションの結果をレプリケートしません。 -
AWS DMS は、Oracle の使用中にレプリケーションで XA トランザクションをサポートしていません LogMiner。
-
Oracle LogMiner は、プラガブルデータベース (PDB) への接続をサポートしていません。PDB に接続するには、Binary Reader を使用して REDO ログにアクセスします。
-
SHRINK SPACE 操作はサポートされていません。
-
-
Binary Reader を使用する場合、 AWS DMS には次の制限があります。
-
テーブルクラスターはサポートされていません。
-
テーブルレベルでの
SHRINK SPACE
オペレーションのみがサポートされます。このレベルには、テーブル全体、パーティション、サブパーティションが含まれます。 -
キー圧縮によるインデックス構成表への変更はサポートされません。
-
RAW デバイスでのオンライン REDO ログの実装はサポートされていません。
-
RDS for Oracle では、TDE 暗号化キーのウォレットパスワードの取得がサポートされていないため、Binary Reader は、セルフマネージド型 Oracle データベースに対してのみ TDE をサポートします。
-
-
AWS DMS は、Oracle Automatic Storage Management (ASM) プロキシを使用した Amazon RDS Oracle ソースへの接続をサポートしていません。
-
AWS DMS は仮想列をサポートしていません。
-
AWS DMS は、ROWID 列に基づく
ROWID
データ型またはマテリアライズドビューをサポートしていません。AWS DMS は Oracle マテリアライズドビューを部分的にサポートしています。フルロードの場合、DMS は Oracle マテリアライズドビューのフルロードコピーを実行できます。DMS はマテリアライズドビューをベーステーブルとしてターゲットシステムにコピーして、マテリアライズドビューの ROWID 列は無視します。継続的なレプリケーション (CDC) の場合、DMS は変更をマテリアライズドビューのデータへの変更をレプリケート使用としますが、理想的でない結果となる可能性があります。具体的には、マテリアライズドビューが完全に更新されると、DMS はすべての行の個別の削除をレプリケートし、続いてすべての行の個別の挿入をレプリケートします。これはリソースを非常に大量に消費する作業であり、多数の行を含むマテリアライズドビューのパフォーマンスが低下する可能性があります。マテリアライズドビューが高速リフレッシュを実行する継続的なレプリケーションの場合、DMS は高速リフレッシュのデータの変更を処理してレプリケートしようとします。どちらの場合も、DMS はマテリアライズドビュー内の ROWID 列はスキップします。
-
AWS DMS はグローバル一時テーブルをロードまたはキャプチャしません。
-
レプリケーションを使用する S3 ターゲットでは、ソース行の更新がすべての列の値を取得できるように、どの列でもサプリメンタル ログを有効にします。以下に例
alter table yourtablename add supplemental log data (all) columns;
を示します。 -
null
を含む複合一意キーを持つ行の更新はターゲットでレプリケーション不可です。 -
AWS DMS は、同じソースエンドポイントでの複数の Oracle TDE 暗号化キーの使用をサポートしていません。各エンドポイントは、TDE 暗号化キー名「
securityDbEncryptionName
」に対して属性を 1 つ、またこのキーの TDE パスワードが 1 つ持つことができます。 -
Amazon RDS for Oracle からレプリケートする場合、TDE は暗号化されたテーブルスペースと Oracle の使用でのみサポートされます LogMiner。
-
AWS DMS は、複数のテーブル名変更オペレーションを連続してすばやくサポートしていません。
-
Oracle 19.0 をソースとして使用する場合、以下の機能は AWS DMS サポートされていません。
-
データガード DML リダイレクト
-
パーティション分割されたハイブリッドテーブル
-
スキーマのみの Oracle アカウント
-
-
AWS DMS は、
BIN$
または タイプのテーブルまたはビューの移行をサポートしていませんDR$
。 -
Oracle 18.x 以降、 AWS DMS Oracle Express Edition (Oracle Database XE) からの変更データキャプチャ (CDC) はサポートされていません。
-
CHAR 列からデータを移行する場合、DMS は末尾のスペースをすべて切り捨てます。
-
AWS DMS は、アプリケーションコンテナからのレプリケーションをサポートしていません。
-
AWS DMS では、Oracle Flashback Database と復元ポイントの実行はサポートされていません。これらのオペレーションは Oracle Redo ログファイルの整合性に影響するためです。
-
並列実行オプションを使用したダイレクトロードの
INSERT
プロシージャは、次の場合にはサポートされません。-
255 列を超える非圧縮テーブル
-
行サイズが 8K 以上
-
Exadata HCC テーブル
-
Big Endian プラットフォームで実行されているデータベース
-
-
プライマリキーも一意キーもないソーステーブルでは、ALL COLUMN サプリメンタルロギングを有効にする必要があります。これにより、さらに多くの REDO ログアクティビティが作成され、DMS CDC のレイテンシーが増加する可能性があります。
-
AWS DMS は、ソースデータベース内の非表示の列からデータを移行しません。このような列を移行の範囲に含めるには、
ALTER TABLE
ステートメントを使用して列を表示します。
Oracle エンドポイントでの SSL のサポート
AWS DMS Oracle エンドポイントは、 none
および SSL モードの SSL V3 verify-ca
をサポートします。Oracle エンドポイントで SSL を使用するには、.pem 証明書ファイルの代わりにエンドポイント用の Oracle ウォレットをアップロードします。
Oracle SSL への既存の証明書の使用
既存の Oracle クライアントインストールを使用して CA 証明書ファイルから Oracle ウォレットファイルを作成するには、以下の手順を実行します。
AWS DMSで Oracle SSL に既存の Oracle クライアントインストールを使用するには
-
以下のコマンドを実行して、
ORACLE_HOME
システム変数をdbhome_1
ディレクトリの場所に設定します。prompt>export ORACLE_HOME=/home/user/app/user/product/12.1.0/dbhome_1
-
$ORACLE_HOME/lib
をLD_LIBRARY_PATH
システム変数に追加します。prompt>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
-
$ORACLE_HOME/ssl_wallet
に Oracle Wallet のディレクトリを作成します。prompt>mkdir $ORACLE_HOME/ssl_wallet
-
CA 証明書ファイル
.pem
をssl_wallet
ディレクトリに配置します。Amazon RDS を使用する場合は、Amazon RDS によってホストされるrds-ca-2015-root.pem
ルート CA 証明書ファイルをダウンロードできます。このファイルのダウンロード方法については、Amazon RDS ユーザーガイド の「SSL/TLS を使用した DB インスタンス接続の暗号化」をご参照ください。 -
以下のコマンドを実行して Oracle Wallet を作成します。
prompt>orapki wallet create -wallet $ORACLE_HOME/ssl_wallet -auto_login_only prompt>orapki wallet add -wallet $ORACLE_HOME/ssl_wallet -trusted_cert -cert $ORACLE_HOME/ssl_wallet/ca-cert.pem -auto_login_only
ここまでの手順を完了したら、ImportCertificate
API コールで certificate-wallet パラメータを指定してウォレットファイルをインポートできます。Oracle エンドポイントの作成または変更時に SSL モードとして verify-ca
を選択すると、インポートされたウォレット証明書を使用できます。
注記
Oracle ウォレットはバイナリファイルです。 AWS DMS はこれらのファイルをそのまま受け入れます。
Oracle SSL への自己署名証明書の使用
Oracle SSL に自己署名証明書を使用するには、oracle123
の Oracle ウォレットパスワードを次のように仮定して、次のステップを実行します。
で Oracle SSL の自己署名証明書を使用するには AWS DMS
-
自己署名証明書で使用するディレクトリを作成します。
mkdir -p /u01/app/oracle/self_signed_cert
-
前の手順で作成したディレクトリに移動します。
cd /u01/app/oracle/self_signed_cert
-
ルートキーを作成します。
openssl genrsa -out self-rootCA.key 2048
-
前の手順で作成したルートキーを使用して、ルート証明書に自己署名します。
openssl req -x509 -new -nodes -key self-rootCA.key -sha256 -days 3650 -out self-rootCA.pem
次のような、入力パラメーターを使用します。
-
Country Name (2 letter code) [XX]
。例:AU
-
State or Province Name (full name) []
。例:NSW
-
Locality Name (e.g., city) [Default City]
。例:Sydney
-
Organization Name (e.g., company) [Default Company Ltd]
。例:AmazonWebService
-
Organizational Unit Name (e.g., section) []
。例:DBeng
-
Common Name (e.g., your name or your server's hostname) []
。例:aws
-
Email Address []
、例えば:abcd.efgh@amazonwebservice.com
-
-
Oracle データベース用の Oracle ウォレットディレクトリを作成します。
mkdir -p /u01/app/oracle/wallet
-
新しい Oracle ウォレットを作成します。
orapki wallet create -wallet "/u01/app/oracle/wallet" -pwd oracle123 -auto_login_local
-
Oracle ウォレットにルート証明書を追加します。
orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd oracle123 -trusted_cert -cert /u01/app/oracle/self_signed_cert/self-rootCA.pem
-
Oracle ウォレットの内容のリストを表示します。リストにはルート証明書が含まれます。
orapki wallet display -wallet /u01/app/oracle/wallet -pwd oracle123
たとえば、次のような表示となることがあります。
Requested Certificates: User Certificates: Trusted Certificates: Subject: CN=aws,OU=DBeng,O= AmazonWebService,L=Sydney,ST=NSW,C=AU
-
ORAPKI ユーティリティを使用して証明書署名リクエスト (CSR) を生成します。
orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd oracle123 -dn "CN=aws" -keysize 2048 -sign_alg sha256
-
以下のコマンドを実行します。
openssl pkcs12 -in /u01/app/oracle/wallet/ewallet.p12 -nodes -out /u01/app/oracle/wallet/nonoracle_wallet.pem
これにより次のような出力が生成されます。
Enter Import Password: MAC verified OK Warning unsupported bag type: secretBag
-
共通名として「dms」を指定します。
openssl req -new -key /u01/app/oracle/wallet/nonoracle_wallet.pem -out certdms.csr
次のような、入力パラメーターを使用します。
-
Country Name (2 letter code) [XX]
。例:AU
-
State or Province Name (full name) []
。例:NSW
-
Locality Name (e.g., city) [Default City]
。例:Sydney
-
Organization Name (e.g., company) [Default Company Ltd]
。例:AmazonWebService
-
Organizational Unit Name (e.g., section) []
。例:aws
-
Common Name (e.g., your name or your server's hostname) []
。例:aws
-
Email Address []
、例えば:abcd.efgh@amazonwebservice.com
これがステップ 4 と同じでないことを確認してください。たとえば、組織単位名を図のように別の名前に変更することで、これを行うことができます。
証明書要求とともに送信する追加属性を入力します。
-
A challenge password []
。例:oracle123
-
An optional company name []
。例:aws
-
-
証明書の署名を取得します。
openssl req -noout -text -in certdms.csr | grep -i signature
この投稿の署名キーは
sha256WithRSAEncryption
となります。 -
次のコマンドを実行して、証明書 (
.crt
) ファイルを生成します。openssl x509 -req -in certdms.csr -CA self-rootCA.pem -CAkey self-rootCA.key -CAcreateserial -out certdms.crt -days 365 -sha256
これにより次のような出力が生成されます。
Signature ok subject=/C=AU/ST=NSW/L=Sydney/O=awsweb/OU=DBeng/CN=aws Getting CA Private Key
-
証明書をウォレットに追加します。
orapki wallet add -wallet /u01/app/oracle/wallet -pwd oracle123 -user_cert -cert certdms.crt
-
ウォレットを見る。エントリが 2 つあるはずです。次のコードが表示されます。
orapki wallet display -wallet /u01/app/oracle/wallet -pwd oracle123
-
sqlnet.ora
ファイル ($ORACLE_HOME/network/admin/sqlnet.ora
) を設定します。WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /u01/app/oracle/wallet/) ) ) SQLNET.AUTHENTICATION_SERVICES = (NONE) SSL_VERSION = 1.0 SSL_CLIENT_AUTHENTICATION = FALSE SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA)
-
Oracle リスナーを停止します。
lsnrctl stop
-
listener.ora
ファイル ($ORACLE_HOME/network/admin/listener.ora
) に SSL のエントリを追加します。SSL_CLIENT_AUTHENTICATION = FALSE WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /u01/app/oracle/wallet/) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME =
SID
) (ORACLE_HOME =ORACLE_HOME
) (SID_NAME =SID
) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCPS)(HOST = localhost.localdomain)(PORT = 1522)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) -
tnsnames.ora
ファイル ($ORACLE_HOME/network/admin/tnsnames.ora
) を設定します。<SID>= (DESCRIPTION= (ADDRESS_LIST = (ADDRESS=(PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <SID>) ) ) <SID>_ssl= (DESCRIPTION= (ADDRESS_LIST = (ADDRESS=(PROTOCOL = TCPS)(HOST = localhost.localdomain)(PORT = 1522)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <SID>) ) )
-
Oracle リスナーを再起動します。
lsnrctl start
-
Oracle リスナーの状態を表示します。
lsnrctl status
-
sqlplus と SSL tnsnames エントリを使用して、localhost からデータベースへの SSL 接続をテストします。
sqlplus -L
ORACLE_USER
@SID
_ssl -
SSL を使用して正常に接続したことを確認します。
SELECT SYS_CONTEXT('USERENV', 'network_protocol') FROM DUAL; SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') -------------------------------------------------------------------------------- tcps
-
現在のディレクトリを自己署名証明書のあるディレクトリに変更します。
cd /u01/app/oracle/self_signed_cert
-
AWS DMS が使用する新しいクライアント Oracle ウォレットを作成します。
orapki wallet create -wallet ./ -auto_login_only
-
Oracle ウォレットに自己署名証明書を追加します。
orapki wallet add -wallet ./ -trusted_cert -cert self-rootCA.pem -auto_login_only
-
AWS DMS が使用する Oracle ウォレットの内容を一覧表示します。リストには自己署名証明書が含まれます。
orapki wallet display -wallet ./
これにより次のような出力が生成されます。
Trusted Certificates: Subject: CN=aws,OU=DBeng,O=AmazonWebService,L=Sydney,ST=NSW,C=AU
-
先ほど作成した Oracle ウォレットを にアップロードします AWS DMS。
のソースとして Oracle を使用するためのサポートされている暗号化方法 AWS DMS
次の表に、Oracle ソースデータベースを使用する際に が AWS DMS サポートする透過的データ暗号化 (TDE) メソッドを示します。
REDO ログのアクセス方法 | TDE テーブルスペース | TDE 列 |
---|---|---|
Oracle LogMiner | はい | あり |
Binary Reader | はい | あり |
AWS DMS は、バイナリリーダーを使用する場合、列レベルとテーブルスペースレベルの両方で Oracle TDE をサポートします。で TDE 暗号化を使用するには AWS DMS、まず TDE 暗号化キーと TDE パスワードが保存されている Oracle ウォレットの場所を特定します。次に、Oracle ソース エンドポイントの正しい TDE 暗号化キーとパスワードを特定します。
TDE 暗号化の暗号化キーとパスワードを識別して指定するには
-
次のクエリを実行して、Oracle データベースホスト上の Oracle 暗号化ウォレットを検索します。
SQL> SELECT WRL_PARAMETER FROM V$ENCRYPTION_WALLET; WRL_PARAMETER -------------------------------------------------------------------------------- /u01/oracle/product/12.2.0/dbhome_1/data/wallet/
ここでは
/u01/oracle/product/12.2.0/dbhome_1/data/wallet/
がウォレットの場所です。 -
この値を返すものに応じて、次のいずれかの暗号化オプションを使用してマスター キー ID を取得します。
-
テーブルレベルまたは列レベルの暗号化の場合は、次のクエリを実行します。
SQL> SELECT OBJECT_ID FROM ALL_OBJECTS WHERE OWNER='DMS_USER' AND OBJECT_NAME='TEST_TDE_COLUMN' AND OBJECT_TYPE='TABLE'; OBJECT_ID --------------- 81046 SQL> SELECT MKEYID FROM SYS.ENC$ WHERE OBJ#=81046; MKEYID ------------ AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ここでは
AWGDC9glSk8Xv+3bVveiVSg
がマスターキー ID (MKEYID
) です。MKEYID
の値が得られたら、ステップ 3 に進むことができます。それ以外の場合は、ステップ 2.2 に進みます。注記
末尾の文字列
'A'
文字 (AAA...
) は値の一部ではありません。 -
テーブルスペース レベルの暗号化の場合は、次のクエリを実行します。
SQL> SELECT TABLESPACE_NAME, ENCRYPTED FROM dba_tablespaces; TABLESPACE_NAME ENC ------------------------------ --- SYSTEM NO SYSAUX NO UNDOTBS1 NO TEMP NO USERS NO TEST_ENCRYT YES SQL> SELECT name,utl_raw.cast_to_varchar2( utl_encode.base64_encode('01'||substr(mkeyid,1,4))) || utl_raw.cast_to_varchar2( utl_encode.base64_encode(substr(mkeyid,5,length(mkeyid)))) masterkeyid_base64 FROM (SELECT t.name, RAWTOHEX(x.mkid) mkeyid FROM v$tablespace t, x$kcbtek x WHERE t.ts#=x.ts#) WHERE name = 'TEST_ENCRYT'; NAME MASTERKEYID_BASE64 ------------------------------ ---------------------------------- TEST_ENCRYT AWGDC9glSk8Xv+3bVveiVSg=
ここでは
AWGDC9glSk8Xv+3bVveiVSg
がマスターキー ID (TEST_ENCRYT
) です。ステップ 2.1 と 2.2 の両方が値を返す場合、それらは常に同一です。末尾の
'='
文 字は値の一部ではありません。
-
-
コマンド・ラインから、ソース Oracle データベース ホスト上の暗号化ウォレット エントリをリストします。
$ mkstore -wrl /u01/oracle/product/12.2.0/dbhome_1/data/wallet/ -list Oracle Secret Store entries: ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ORACLE.SECURITY.DB.ENCRYPTION.AY1mRA8OXU9Qvzo3idU4OH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA ORACLE.SECURITY.DB.ENCRYPTION.MASTERKEY ORACLE.SECURITY.ID.ENCRYPTION. ORACLE.SECURITY.KB.ENCRYPTION. ORACLE.SECURITY.KM.ENCRYPTION.AY1mRA8OXU9Qvzo3idU4OH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
ステップ 2 (
AWGDC9glSk8Xv+3bVveiVSg
) で確認したマスター キー ID を含むエントリを検索します。このエントリは TDE 暗号化キー名です。 -
前のステップで検索したエントリの詳細を表示します。
$ mkstore -wrl /u01/oracle/product/12.2.0/dbhome_1/data/wallet/ -viewEntry ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Oracle Secret Store Tool : Version 12.2.0.1.0 Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved. Enter wallet password: ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA = AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==
ウォレット パスワードを入力して結果を確認します。
ここで、
'='
の右にある値は TDE パスワードです。 -
Oracle ソース エンドポイントの TDE 暗号化キー名を指定するには、
securityDbEncryptionName
追加の接続属性を設定します。securityDbEncryptionName=ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-
Oracle ソースパスワード値の一部としてコンソールでこのキーに関連付けられた TDE パスワードを入力します。パスワード値。TDE パスワード値で終わるコンマ区切りのパスワード値をフォーマットするには、次の順序を使用します。
Oracle_db_password
,ASM_Password
,AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==Oracle データベースの設定に関係なく、この順序でパスワード値を指定します。たとえば、TDE を使用していて Oracle データベースで ASM を使用していない場合、関連するパスワード値をカンマで区切って次の順序で指定します。
Oracle_db_password
,,AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==
指定した TDE 認証情報が正しくない場合、 AWS DMS 移行タスクは失敗しません。ただし、このタスクでは、進行中のレプリケーションの変更をターゲット データベースに対して読み取りまたは適用しません。タスクを開始したら、コンソール移行タスクページでテーブル統計を監視し、変更レプリケーションがなされていることを確認します。
タスクの実行中に DBA によって Oracle データベースの TDE 認証情報値が変更された場合、タスクは失敗します。エラーメッセージには、新しい TDE 暗号化キー名が含まれています。新しい値を指定してタスクを再開するには、前の手順を使用します。
重要
OS レベルのcp
、mv
、orapki
や mkstore
などのコマンドではASM の場所に保存されているウォレットファイルが破損するため、Oracle 自動ストレージ管理(ASM)の場所で作成された TDE ウォレットを操作することはできません。この制限は、ASM の場所に格納された TDE ウォレット ファイルにのみに固有であり、ローカル OS ディレクトリに格納されている TDE ウォレット ファイルは対象外です。
ASM に格納されている TDE ウォレットを OS レベルのコマンドで操作するには、ローカル キーストアを作成し、次のように ASM キーストアをローカル キーストアにマージします:
-
ローカル キーストアを作成します。
ADMINISTER KEY MANAGEMENT create keystore
file system wallet location
identified bywallet password
; -
ASM キーストアをローカル キーストアにマージします。
ADMINISTER KEY MANAGEMENT merge keystore
ASM wallet location
identified bywallet password
into existing keystorefile system wallet location
identified bywallet password
with backup;
次に、暗号化ウォレット エントリと TDE パスワードを一覧表示するには、ローカル キーストアに対してステップ 3 と 4 を実行します。
のソースとして Oracle を使用するためのサポートされている圧縮方法 AWS DMS
次の表に、Oracle ソースデータベースを使用する際に が AWS DMS サポートする圧縮方法を示します。表に示すように、圧縮のサポートは、Oracle データベースのバージョンと、DMS が Oracle を使用して REDO ログ LogMiner にアクセスするように設定されているかどうかの両方によって異なります。
Version | Basic (ベーシック) | OLTP |
HCC (Oracle 11g R2 より) |
その他 |
---|---|---|---|---|
Oracle 10 | なし | 該当なし | 該当なし | なし |
Oracle 11 以降 – Oracle LogMiner | はい | はい | あり | はい — Oracle でサポートされている圧縮方法 LogMiner。 |
オラクル 11 以降 — Binary Reader | はい | あり | [Yes](はい) - 詳細については、次の注をご参照ください。 | あり |
注記
Oracle ソースエンドポイントが Binary Reader を使用するように設定されている場合、HCC 圧縮方法の Query Low レベルは、全ロードタスクに対してのみサポートされます。
のソースとして Oracle を使用してネストされたテーブルをレプリケートする AWS DMS
AWS DMS は、ネストされたテーブルまたは定義された型の列を含む Oracle テーブルのレプリケーションをサポートします。この機能を有効にするには、Oracle ソース エンドポイントに以下の接続属性設定を追加します。
allowSelectNestedTables=true;
AWS DMS は、Oracle ネストされたテーブルからターゲットテーブルを、一意の制約なしでターゲット上の通常の親テーブルと子テーブルとして作成します。ターゲットの正しいデータにアクセスするには、親テーブルと子テーブルを結合します。これを行うには、まず、ターゲットの子テーブルの NESTED_TABLE_ID
列に一意でないインデックスを手動で作成します。その後、結合 ON
句の NESTED_TABLE_ID
列を、子テーブル名に対応する親列とともに使用できます。さらに、このようなインデックスを作成すると、ターゲットの子テーブルデータが によって更新または削除されるときのパフォーマンスが向上します AWS DMS。例については、「ターゲットの親テーブルと子テーブルの結合の例」をご参照ください。
完全なロードが完了したら、タスクを停止するように設定することをお勧めします。次に、ターゲット上のすべてのレプリケートされた子テーブルに対して一意でないインデックスを作成し、タスクを再開します。
キャプチャされたネストされたテーブルが既存の親テーブルに追加された場合 (キャプチャされたかキャプチャされなかったか)、 はそれを正しく AWS DMS 処理します。ただし、対応するターゲットテーブルの一意でないインデックスは作成されません。この場合、ターゲットの子テーブルが非常に大きくなると、パフォーマンスが影響を受ける可能性があります。このような場合は、タスクを停止し、インデックスを作成してからタスクを再開することをお勧めします。
ネストされたテーブルがターゲットにレプリケートされたら、DBA は親テーブルと対応する子テーブルに対して結合を実行し、データを平坦化します。
Oracle ネストされたテーブルをソースとしてレプリケートするための前提条件
レプリケートされた、すべてのネストされたテーブルについて、親テーブルをレプリケートしてください。テーブルマッピングには、親テーブル (ネストされたテーブル列を含むテーブル) と子テーブル (ネストされた AWS DMS テーブル) の両方を含めます。
ソースとしてサポートされている Oracle ネストされたテーブル型
AWS DMS は、ソースとして次の Oracle ネストされたテーブルタイプをサポートします。
-
データ型
-
ユーザー定義のオブジェクト
ソースとしての Oracle ネストされたテーブルの AWS DMS サポートの制限
AWS DMS Oracle ネストされたテーブルをソースとしてサポートする場合、 には以下の制限があります。
-
AWS DMS は、1 レベルのテーブルネストのみをサポートします。
-
AWS DMS テーブルマッピングでは、親テーブルと子テーブルの両方がレプリケーション対象として選択されているかどうかはチェックされません。つまり、子のない親テーブル、または親のない子テーブルを選択する可能性があります。
AWS DMS が Oracle ネストされたテーブルをソースとしてレプリケートする方法
AWS DMS は、次のように親テーブルとネストされたテーブルをターゲットにレプリケートします。
-
AWS DMS はソースと同じ親テーブルを作成します。次に、親のネストされた列を
RAW(16)
として定義し、親のネストされたテーブルへの参照をそのNESTED_TABLE_ID
列に含めます。 -
AWS DMS は、ネストされたソースと同じ子テーブルを作成しますが、 という名前の列を追加します
NESTED_TABLE_ID
。この列は、対応する親のネストされた列と同じ型と値を持ち、同じ意味を持ちます。
ターゲットの親テーブルと子テーブルの結合の例
親テーブルを平坦化するには、次の例に示すように、親テーブルと子テーブルの間で結合を実行します。
-
Type
テーブルを作成します。CREATE OR REPLACE TYPE NESTED_TEST_T AS TABLE OF VARCHAR(50);
-
前述のように型
NESTED_TEST_T
列を持つ親テーブルを作成します。CREATE TABLE NESTED_PARENT_TEST (ID NUMBER(10,0) PRIMARY KEY, NAME NESTED_TEST_T) NESTED TABLE NAME STORE AS NAME_KEY;
-
CHILD.NESTED_TABLE_ID
がPARENT.NAME
と一致するNAME_KEY
子テーブルとの結合を使用してテーブルNESTED_PARENT_TEST
を平坦化します。SELECT … FROM NESTED_PARENT_TEST PARENT, NAME_KEY CHILD WHERE CHILD.NESTED_ TABLE_ID = PARENT.NAME;
のソースとして Oracle を使用する場合の Oracle ASM への REDO の保存 AWS DMS
REDO 生成が多い Oracle ソースの場合、REDO を Oracle ASM に保存すると、ASM REDO 読み取りをすべての ASM ノードに分散するように DMS を設定できるため、特に RAC 構成の場合にパフォーマンスが向上します。
この構成を利用するには、asmServer
接続属性を使用します。例えば、以下の接続文字列では、DMS REDO 読み取りが 3 つの ASM ノードに分散されます。
asmServer=(DESCRIPTION=(CONNECT_TIMEOUT=8)(ENABLE=BROKEN)(LOAD_BALANCE=ON)(FAILOVER=ON) (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=asm_node1_ip_address)(PORT=asm_node1_port_number)) (ADDRESS=(PROTOCOL=tcp)(HOST=asm_node2_ip_address)(PORT=asm_node2_port_number)) (ADDRESS=(PROTOCOL=tcp)(HOST=asm_node3_ip_address)(PORT=asm_node3_port_number))) (CONNECT_DATA=(SERVICE_NAME=+ASM)))
NFS を使用して Oracle REDO を保存する場合、適切な DNFS (ダイレクト NFS) クライアントパッチ、特に Oracle のバグ 25224242 に対処するパッチが適用されていることを確認することが重要です。詳細については、Direct NFS クライアント関連のパッチに関する「Recommended Patches for Direct NFS Client
さらに、NFS の読み取りパフォーマンスを向上するには、次の例のとおり NFS fstab
ボリュームの rsize
と wsize
in の値を増やすことをお勧めします。
NAS_name_here
:/ora_DATA1_archive /u09/oradata/DATA1 nfs rw,bg,hard,nointr,tcp,nfsvers=3,_netdev, timeo=600,rsize=262144,wsize=262144
また、tcp-max-xfer-size
値を次のとおり調整します。
vserver nfs modify -vserver
vserver
-tcp-max-xfer-size 262144
のソースとして Oracle を使用する場合のエンドポイント設定 AWS DMS
エンドポイントの設定を使用して、追加の接続属性の使用する場合と同様に、ソースの Oracle のデータベースを設定できます。ソースエンドポイントを作成するときはAWS CLI、 AWS DMS コンソールを使用するか、--oracle-settings '{"
JSON 構文で の EndpointSetting"
: "value"
, ...
}'create-endpoint
コマンドを使用して設定を指定します。
次の表は、Oracle をソースとして使用できるエンドポイント設定を説明しています。
名前 | 説明 |
---|---|
AccessAlternateDirectly |
ソースとして Amazon RDS for Oracle の変更データを Binary Reader でキャプチャするには、この属性を false に設定します。この設定は、DMS インスタンスに対して、指定されたパスプレフィックス置換を使用してファイルへの直接アクセスで REDO ログにアクセスしないように指示します。詳細については、「 の RDS for Oracle ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS」を参照してください。 デフォルト値: true 有効な値: true/false 例: |
|
この属性を、プライマリ スタンバイ セットアップで AWS DMS では Oracle 有効値: アーカイブ先 ID 例: |
|
Oracle データベースにテーブルレベルのサプリメンタルロギングをセットアップするには、この属性を設定します。この属性は、テーブルのメタデータに応じて、移行タスク用に選択したすべてのテーブルで次のいずれかを有効にします。
デフォルト値: false 有効な値: true/false 例: 注記このオプションを使用する場合でも、前述のようにデータベースレベルサプリメンタルロギングを有効にする必要があります。 |
|
ネストされたテーブルまたは定義された型である列を含む Oracle テーブルのレプリケーションを有効にするには、この属性を true に設定します。詳細については、「のソースとして Oracle を使用してネストされたテーブルをレプリケートする AWS DMS」を参照してください。 デフォルト値: false 有効な値: true/false 例: |
|
アーカイブされた REDO ログの宛先 ID を指定します。この値は、v$archived_log ビューの dest_id 列の数値と同じにする必要があります。追加の REDO ログの保存先を使用する場合は、 デフォルト値: 1 有効な値: 数値 例: |
|
このフィールドが Y に設定されている場合、 はアーカイブされた REDO ログ AWS DMS にのみアクセスします。アーカイブされた REDO ログが Oracle ASM にのみ保存されている場合、 AWS DMS ユーザーアカウントに ASM 権限を付与する必要があります。 デフォルト値: N 有効な値: Y/N 例: |
|
でソースの変更をキャプチャするときは、この追加の接続属性 (ECA) を使用します BinaryReader。この設定により、DMS は デフォルト値: false 有効な値: true/false ECA の例: |
|
TIMESTAMP WITH TIME ZONE 列と TIMESTAMP WITH LOCAL TIME ZONE 列のタイムスタンプ値を UTC に変換するには、この属性を デフォルト値: false 有効な値: true/false 例: |
|
この属性を この機能はバージョン 3 AWS DMS .4.7 で導入されたことに注意してください。 デフォルト値: false 有効な値: true/false 例: |
|
同種のテーブルスペースのレプリケーションを有効にし、ターゲットの同じテーブルスペースで既存のテーブルまたはインデックスを作成するには、この属性を設定します。 デフォルト値: false 有効な値: true/false 例: |
|
この属性はエスケープ文字に設定する。このエスケープ文字を使うと、単一のワイルドカード文字をテーブルマッピング式で通常の文字のように動作させることができる。詳細については、「テーブルマッピングのワイルドカード」を参照してください。 デフォルト値: Null 有効値: ワイルドカード文字以外の任意の文字 例: 注記
|
|
この属性を使ってビューからデータを 1 回プルできます。これを継続的なレプリケーションに使用することはできません。ビューからデータを抽出すると、そのビューはターゲットスキーマのテーブルとして表示されます。 デフォルト値: false 有効な値: true/false 例: |
|
1 つ以上のアーカイブされた REDO ログに対する 1 つ以上の送信先の ID を指定します。このような ID は、v$archived_log ビューの dest_id 列の値である。この設定は、セットアップまたは primary-to-single セットアップの追加 ArchivedLogDestId 接続属性で使用します primary-to-multiple-standby 。 この属性は、Oracle Data Guard データベースをソースとして使用するときの切り替えに役立ちます。この場合、 は変更を読み取るためにアーカイブ REDO ログを取得する送信先に関する情報 AWS DMS を必要とします。 AWS DMS これは、前のプライマリのスイッチオーバー後がスタンバイインスタンスであるためです。 有効値:アーカイブ先 ID 例: |
|
タスクが制限付き LOB モードに設定され、このオプションが デフォルト値: false 有効な値: ブール値 例: |
|
この追加の接続属性 (ECA) を使用して、 を使用するときに Oracle からデータをレプリケートするときに、DMS が指定されたユーザーからのトランザクションを無視できるようにします LogMiner。カンマ区切りのユーザー名の値を渡すことができる。ただし、すべて大文字にする必要がある。 ECA の例: |
|
数値のスケールを指定します。最大 38 のスケールを選択するか、FLOAT には -1、VARCHAR には -2 を選択できます。デフォルトでは、NUMBER データ型が精度 38、スケール 10 に変換されます。 デフォルト値: 10 有効な値: -2〜38 (VARCHAR では -2、FLOAT の場合は -1) 例: 注記精度スケールの組み合わせ、-1 (FLOAT) または -2 (VARCHAR) を選択します。DMS は、Oracle がサポートする精度スケールの組み合わせをサポートします。精度が 39 以上の場合は、-2 (VARCHAR) を選択します。Oracle データベースの NumberDataTypeScale 設定は、NUMBER データ型にのみ使用されます (明示的な精度とスケール定義なし)。 |
|
CDC のみのタスクでオープントランザクションを確認する時間枠を分単位で指定する。 注記
デフォルト値: 0 有効値: 0~240 の整数 例: |
OraclePathPrefix |
Amazon RDS for Oracle をソースとして Binary Reader で変更データをキャプチャするには、この文字列属性を必要な値に設定します。この値は、REDO ログにアクセスするために使用されるデフォルトの Oracle ルートを指定します。詳細については、「 の RDS for Oracle ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS」を参照してください。 デフォルト値: なし 有効な値: /rdsdbdata/db/ORCL_A/ 例: |
ParallelASMReadThreads |
この属性を設定して、DMS が Oracle 自動ストレージ管理 (ASM) を使用して変更データ キャプチャ (CDC) を実行するように設定するスレッドの数を変更します。2 (デフォルト) から 8 (最大) までの整数値を指定できます。この属性は デフォルト値: 2 有効な値: 2~8 の整数 例: |
ReadAheadBlocks |
この属性を設定して、 Oracle Automatic Storage Management (ASM) と ASM 以外の NAS ストレージを使用して CDC を実行するように DMS が設定する先読みブロック数を変更する。1,000 (デフォルト) から 200,000 (最大) までの整数値を指定できます。この属性は デフォルト値: 1000 有効な値: 1,000~200,000 の整数 例: |
|
デフォルト値: false 有効な値: ブール値 例: |
ReplacePathPrefix |
Amazon RDS for Oracle をソースとして Binary Reader で変更データをキャプチャするには、この属性を true に設定します。この設定は、DMS インスタンスに対して、デフォルトの Oracle ルートを UsePathPrefix の設定に置換して REDO ログにアクセスするように指示します。詳細については、「 の RDS for Oracle ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS」を参照してください。デフォルト値: false 有効な値: true/false 例: |
|
システムがクエリを再送するまで待機する時間の秒数を指定します。 デフォルト値: 5 有効な値: 1 以降の数値 例: |
|
Oracle ソースデータベースの列およびテーブルスペースの透過的データ暗号化 (TDE) に使用されるキーの名前を指定します。Oracle ソースエンドポイントでのこの属性とそれに関連付けられたパスワードの設定の詳細については、「のソースとして Oracle を使用するためのサポートされている暗号化方法 AWS DMS」をご参照ください。 デフォルト値: "" 有効な値: 文字列 例: |
|
PostgreSQL ターゲットに移行する Oracle バージョン 12.1 以前のソースの場合、この属性を使用して SDO_GEOMETRY 形式を GEOJSON 形式に変換します。 デフォルトでは、 は AWS DMS ユーザーが存在し、アクセス可能である必要がある デフォルト値: SDO2GEOJSON 有効な値: 文字列 例: |
|
この属性を使用して、スタンバイ同期の遅延時間を分単位で指定します。ソースが Active Data Guard スタンバイデータベースの場合、この属性を使用して、プライマリ データベースとスタンバイ データベース間のタイムラグを指定します。 では AWS DMS、進行中の変更をレプリケートするためのソースとして Active Data Guard スタンバイインスタンスを使用する Oracle CDC タスクを作成できます。これにより、運用中のアクティブなデータベースに接続する必要がなくなります。 デフォルト値: 0 有効な値: 数値 例: 注: DMS 3.4.6、3.4.7 以降を使用している場合、この接続設定の使用は任意となる。DMS 3.4.6 とバージョン 3.4.7 の最新バージョンでは、DMS がスタンバイ遅延時間を計算できるように |
UseAlternateFolderForOnline |
Amazon RDS for Oracle をソースとして Binary Reader で変更データをキャプチャするには、この属性を true に設定します。この設定は、DMS インスタンスに対して、指定されたプレフィックス置換を使用してすべてのオンライン REDO ログにアクセスするように指示します。詳細については、「 の RDS for Oracle ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS」を参照してください。 デフォルト値: false 有効な値: true/false 例: |
UseBfile |
Binary Reader ユーティリティを使用して変更データをキャプチャするには、この属性を Y に設定します。この属性を Y に設定するため、 注: この値を追加の接続属性 (ECA) として設定する場合の有効な値は「Y」と「N」となる。この値をエンドポイント設定として設定する場合、有効な値は デフォルト値: N 有効値: Y または N (この値を ECA として設定する場合)、true または false (この値をエンドポイント設定として設定する場合) 例: |
|
LogMiner ユーティリティ (デフォルト) を使用して変更データをキャプチャするには、この属性を Y に設定します。 AWS DMS がバイナリファイルとして REDO ログにアクセスするようにする場合は、このオプションを N に設定します。このオプションを N に設定すると、useBfile=Y という設定も追加されます。この設定および Oracle 自動ストレージ管理 (ASM) の使用の詳細については、「CDC に Oracle LogMiner または AWS DMS Binary Reader を使用する」をご参照ください。 注: この値を追加の接続属性 (ECA) として設定する場合の有効な値は「Y」と「N」となる。この値をエンドポイント設定として設定する場合、有効な値は デフォルト値: Y 有効値: Y または N (この値を ECA として設定する場合)、true または false (この値をエンドポイント設定として設定する場合) 例: |
UsePathPrefix |
Amazon RDS for Oracle をソースとして Binary Reader で変更データをキャプチャするには、この文字列属性を必要な値に設定します。この値は、デフォルトの Oracle ルートを置換して REDO ログにアクセスするために使用されるパスプレフィックスを指定します。詳細については、「 の RDS for Oracle ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS」を参照してください。 デフォルト値: なし 有効な値: /rdsdbdata/log/ 例: |
Oracle のソースデータ型
の Oracle エンドポイントは、ほとんどの Oracle データ型 AWS DMS をサポートしています。次の表は、 の使用時にサポートされる Oracle ソースデータ型 AWS DMS と、 AWS DMS データ型へのデフォルトのマッピングを示しています。
注記
LONG と LONG RAW データ型を除き、Oracle ソースから Oracle ターゲットにレプリケーションする場合 (均質なレプリケーション)、ソースとターゲットのすべてのデータ型が同一になります。ただし、LONG データ型は CLOB にマッピングされ、LONG RAW データ型は BLOB にマップされます。
ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションをご参照ください。
AWS DMS データ型の詳細については、「」を参照してくださいAWS Database Migration Service のデータ型。
Oracle のデータ型 |
AWS DMS データ型 |
---|---|
BINARY_FLOAT |
REAL4 |
BINARY_DOUBLE |
REAL8 |
BINARY |
BYTES |
FLOAT (P) |
精度が 24 以下の場合、REAL4 を使用します。 精度が 24 より高い場合、REAL8 を使用します。 |
NUMBER (P,S) |
位取りが 0 より大きい場合、NUMERIC を使用する。 スケールが 0 の場合
位取りが 0 未満の場合、REAL8 を使用する。 |
DATE |
DATETIME |
INTERVAL_YEAR TO MONTH |
STRING (間隔 year_to_month を指定) |
INTERVAL_DAY TO SECOND |
STRING (間隔 day_to_second を指定) |
TIMESTAMP |
DATETIME |
タイムスタンプ時間帯あり |
STRING (timestamp_with_timezone を指定) |
タイムスタンプ現地時間帯あり |
STRING (timestamp_with_local_ timezone を指定) |
CHAR |
STRING |
VARCHAR2 |
|
NCHAR |
WSTRING |
NVARCHAR2 |
|
RAW |
BYTES |
REAL |
REAL8 |
BLOB |
BLOB このデータ型を で使用するには AWS DMS、特定のタスクで BLOB データ型の使用を有効にする必要があります。 は、プライマリキーを含むテーブルでのみ BLOB データ型 AWS DMS をサポートします。 |
CLOB |
CLOB このデータ型を で使用するには AWS DMS、特定のタスクで CLOB データ型の使用を有効にする必要があります。CDC 中、 はプライマリキーを含むテーブルでのみ CLOB データ型 AWS DMS をサポートします。 |
NCLOB |
NCLOB このデータ型を で使用するには AWS DMS、特定のタスクで NCLOB データ型の使用を有効にする必要があります。CDC 中、 はプライマリキーを含むテーブルでのみ NCLOB データ型 AWS DMS をサポートします。 |
LONG |
CLOB LONG データ型は、バッチ最適化適用モード (TurboStream CDC モード) ではサポートされていません。 このデータ型を で使用するには AWS DMS、特定のタスクで LOBsの使用を有効にします。 CDC または全ロード中、 はプライマリキーを持つテーブルでのみ LOB データ型 AWS DMS をサポートします。 また、LONG AWS DMS 列をロードするためのフル LOB モードもサポートされていません。この代わりに、制限付き LOB モードを使用して LONG 列を Oracle ターゲットに移行できる。限定 LOB モードでは、 は、64 KB を超える LONG 列に設定したデータを 64 KB に AWS DMS 切り捨てます。での LOB サポートの詳細については AWS DMS、「」を参照してください。 AWS DMS タスクでのソースデータベースLOBのサポートの設定 |
LONG RAW |
BLOB LONG RAW データ型は、バッチ最適化適用モード (TurboStream CDC モード) ではサポートされていません。 このデータ型を で使用するには AWS DMS、特定のタスクで LOBsの使用を有効にします。 CDC または全ロード中、 はプライマリキーを持つテーブルでのみ LOB データ型 AWS DMS をサポートします。 また、LONG RAW 列をロードするためのフル LOB モードは AWS DMS サポートされていません。この代わりに、制限付き LOB モードを使用して LONG RAW 列を Oracle ターゲットに移行できる。限定 LOB モードでは、 は、64 KB を超える LONG RAW 列に設定したデータを 64 KB に AWS DMS 切り捨てます。での LOB サポートの詳細については AWS DMS、「」を参照してください。 AWS DMS タスクでのソースデータベースLOBのサポートの設定 |
XMLTYPE |
CLOB |
SDO_GEOMETRY |
BLOB (Oracle から Oracle への移行の場合) CLOB (Oracle から PostgreSQL への移行の場合) |
以下のデータ型の列とともにソースとして使用されている Oracle テーブルはサポートされておらず、レプリケートすることができません。これらのデータ型の列をレプリケートすると NULL 列が発生します。
-
BFILE
-
ROWID
-
REF
-
UROWID
-
ユーザー定義のデータ型
-
ANYDATA
-
VARRAY
注記
仮想列はサポートされていません。
Oracle 空間データ型の移行
空間データは、空間内のオブジェクトまたは場所のジオメトリ情報を識別します。Oracle データベースでは、空間オブジェクトのジオメトリ説明は型 SDO_GEOMETRY のオブジェクトに保存されます。このオブジェクト内では、ジオメトリ説明は、ユーザー定義テーブルの 1 つの列の 1 つの行に格納されます。
AWS DMS は、Oracle ソースから Oracle または PostgreSQL ターゲットへの Oracle タイプ SDO_GEOMETRY の移行をサポートします。
を使用して Oracle 空間データ型を移行する場合は AWS DMS、次の考慮事項に注意してください。
-
Oracle ターゲットに移行する場合は、型情報を含む USER_SDO_GEOM_METADATA エントリを手動で転送してください。
-
Oracle ソースエンドポイントから PostgreSQL ターゲットエンドポイントに移行すると、 はターゲット列 AWS DMS を作成します。これらの列には、2D ディメンションとゼロ (0) に等しい空間参照識別子 (SRID) を持つデフォルトのジオメトリおよび地理的型情報があります。例:
GEOMETRY, 2, 0
。 -
PostgreSQL ターゲットに移行する Oracle バージョン 12.1 以前のソースの場合、
SDO2GEOJSON
関数またはspatialSdo2GeoJsonFunctionName
追加の接続属性を使用してSDO_GEOMETRY
オブジェクトをGEOJSON
形式に変換します。詳細については、「のソースとして Oracle を使用する場合のエンドポイント設定 AWS DMS」を参照してください。 -
AWS DMS は、フル LOB モードの Oracle 空間列移行のみをサポートします。制限付き LOB モードまたはインライン LOB モードは AWS DMS サポートされていません。LOB モードの詳細については、「AWS DMS タスクでのソースデータベースLOBのサポートの設定」を参照。
は Oracle Spatial Columns を移行するためのフル LOB モード AWS DMS のみをサポートしているため、列のテーブルにはプライマリキーと一意のキーが必要です。プライマリキーと一意のキーがないテーブルは移行でスキップされる。