翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 または Binary Reader を選択すると、後の権限と設定オプションの一部が決まります。 LogMiner とバイナリリーダーの比較については、以下のセクションを参照してください。
注記
全ロードタスク、CDC のみのタスク、および全ロードおよび CDC タスクの詳細については、「[Creating a task] (タスクの作成)」をご参照ください。
Oracle ソースデータベースおよびの操作方法の詳細については AWS DMS、以下のセクションを参照してください。
トピック
- CDC 用の Oracle LogMiner AWS DMS またはバイナリリーダーの使用
- 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 をソースとして使用しているときに REDO を Oracle ASM に保存する AWS DMS
- Oracle をソースとして使用する場合のエンドポイント設定 AWS DMS
- Oracle のソースデータ型
CDC 用の Oracle LogMiner AWS DMS またはバイナリリーダーの使用
では AWS DMS、Oracle をソースとして変更データキャプチャ (CDC) を行う際に REDO ログを読み取る方法として、Oracle LogMiner と AWS DMS Binary Reader の 2 つの方法があります。 LogMiner は、オンライン REDO ログとアーカイブ REDO ログファイルを読み取る Oracle API です。バイナリリーダーは、未加工の REDO AWS DMS ログファイルを直接読み取って解析するメソッドです。これらのメソッドには次の特徴があります。
機能 | LogMiner | Binary Reader |
---|---|---|
設定しやすい | Yes | No |
ソースシステムのI/Oと CPU への影響軽減 | No | Yes |
CDC パフォーマンスの向上 | No | Yes |
Oracle テーブル クラスターのサポート | Yes | No |
すべてのタイプの Oracle ハイブリッド列圧縮(HCC)をサポート | Yes |
部分的 バイナリリーダーは CDC のタスクでクエリローをサポートしていません。他のすべての HCC タイプが完全にサポートされています。 |
Oracle 12c でのみ LOB カラムのサポート | いいえ (LOB Support は Oracle 12c LogMiner では使用できません) | Yes |
LOB カラムにのみ影響を与える UPDATE ステートメントに対応 |
No | Yes |
Oracle Transparent データ暗号化 (TDE) に対応 |
部分的 オラクルを使用する場合 LogMiner、Amazon RDS for Oracle の列レベルの TDE AWS DMS 暗号化はサポートされません。 |
部分的 Binary Reader は、自己管理 Oracle データベースに対してのみ TDE をサポートします。 |
すべての Oracle 圧縮法に対応 | Yes | No |
XA トランザクションに対応 | No | Yes |
RAC |
Yes 非推奨 |
Yes 強く推奨 |
注記
デフォルトでは、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 のダイレクト・アクセス・セットアップや Oracle 自動ストレージ管理 (ASM) を使用して REDO ログを管理する場合と比べると、構成が簡単になります。
-
LogMiner が使用するテーブルクラスタをサポートします。 AWS DMS Binary Reader はサポートされません。
Binary Reader AWS DMS をとともに使用する主な利点は次のとおりです。
-
大量の変更を伴う移行では、Oracle ソースデータベースをホストするコンピューターに I/O や CPU LogMiner に何らかの影響を与える可能性があります。Binary Reader では、ログが複数のデータベース クエリを行うのではなく、直接マイニングされるため、I/O や CPU に影響を与える可能性が高くありません。
-
大量の変更を伴う移行では、通常、Oracle を使用する場合よりも Binary Reader を使用する方が CDC のパフォーマンスがはるかに向上します。 LogMiner
-
バイナリリーダーは Oracle バージョン 12c の LOB 用 CDC をサポートしています。 LogMinerサポートしていません。
一般に、次のいずれかの状況でない限り、Oracle データベースの移行には Oracle を使用してください。 LogMiner
-
ソース 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 LogMiner を使用して REDO ログにアクセスする場合に必要なアカウント権限」、「AWS DMS Binary Reader を使用して REDO ログにアクセスする場合に必要なアカウント権限」や「Oracle ASM で Binary Reader の使用時に必要なアカウント権限」をご参照ください。
AWS管理対象の Oracle データベースの CDC をソースとして設定する方法の詳細については、「」と「」を参照してください RDS for Oracle ソースでバイナリリーダーを使用するように CDC タスクを設定する AWS DMS。AWS DMSの CDC 用 Binary Reader を使用したソースとして Amazon RDS Oracle スタンバイ(リードレプリカ)を使用する
AWS自己管理型または管理型の Oracle ソースデータベースを設定するためのワークフロー AWS DMS
Oracle ソースデータベースの設定
セルフマネージド型のソースデータベースインスタンスを設定するには、CDC の実行方法に応じて、次のワークフローステップを使用します。
このワークフロー ステップの場合 | を使用して LogMiner CDC を実行する場合は、次の操作を行います。 | Binary Reader を使用して CDC を実行する場合は、これを行います |
---|---|---|
Oracle アカウントの特権を付与します。 | 「自己管理型の Oracle ソースに必要なユーザーアカウント権限 AWS DMS」を参照してください | 「自己管理型の Oracle ソースに必要なユーザーアカウント権限 AWS DMS」を参照してください |
CDC を使用してレプリケーション用のソースデータベースを準備します。 | 「以下を使用して CDC 用の Oracle 自己管理型ソースデータベースを準備します。 AWS DMS」を参照してください | 「以下を使用して CDC 用の Oracle 自己管理型ソースデータベースを準備します。 AWS DMS」を参照してください |
CDC に必要な追加の Oracle ユーザー権限を付与します。 | 「Oracle LogMiner を使用して REDO ログにアクセスする場合に必要なアカウント権限」を参照してください | 「AWS DMS Binary Reader を使用して REDO ログにアクセスする場合に必要なアカウント権限」を参照してください |
ASM を持つ Oracle インスタンスの場合は、 CDC のために ASM へのアクセスに必要な追加のユーザーアカウント権限を付与します。 | 追加のアクションはありません。 AWS DMS 追加のアカウント権限なしで Oracle ASM をサポートします。 | Oracle ASM で Binary Reader の使用時に必要なアカウント権限 を参照してください。 |
まだ設定していない場合は、CDC 用の Binary Reader LogMiner を使用するようにタスクを設定します。 | 「CDC 用の Oracle LogMiner AWS DMS またはバイナリリーダーの使用」を参照してください | 「CDC 用の Oracle LogMiner AWS DMS またはバイナリリーダーの使用」を参照してください |
Oracle スタンバイを CDC のソースとして設定します。 | AWS DMS Oracle スタンバイをソースとしてサポートしていません。 | AWS DMSの CDC 用Binary Reader を使用したソースとしてのセルフ管理 Oracle スタンバイの使用 を参照してください。 |
以下のワークフローステップを使用して、 AWS管理対象の Oracle ソースデータベースインスタンスを設定します。
このワークフロー ステップの場合 | を使用して CDC を実行する場合は LogMiner、これを実行してください。 | Binary Reader を使用して CDC を実行する場合は、これを行います |
---|---|---|
Oracle アカウントの特権を付与します。 | 詳細については、「AWS管理対象の Oracle ソースに必要なユーザーアカウント権限 AWS DMS」を参照してください。 | 詳細については、「AWS管理対象の Oracle ソースに必要なユーザーアカウント権限 AWS DMS」を参照してください。 |
CDC を使用してレプリケーション用のソースデータベースを準備します。 | 詳細については、「AWS管理対象の Oracle ソースを次のように設定します。 AWS DMS」を参照してください。 | 詳細については、「AWS管理対象の Oracle ソースを次のように設定します。 AWS DMS」を参照してください。 |
CDC に必要な追加の Oracle ユーザー権限を付与します。 | 追加のアカウント権限は必要ありません。 | 詳細については、「 RDS for Oracle ソースでバイナリリーダーを使用するように CDC タスクを設定する AWS DMS」を参照してください。 |
まだ行っていない場合は、CDC LogMiner 用バイナリリーダーを使用するようにタスクを設定します。 | 詳細については、「CDC 用の Oracle LogMiner AWS DMS またはバイナリリーダーの使用」を参照してください。 | 詳細については、「CDC 用の Oracle LogMiner AWS DMS またはバイナリリーダーの使用」を参照してください。 |
Oracle スタンバイを CDC のソースとして設定します。 | AWS DMS Oracle スタンバイをソースとしてサポートしていません。 | 詳細については、「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
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
;
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
に設定します。
サプリメンタル ロギングの設定
AWS DMS 進行中の変更をキャプチャするには、Oracle ソースデータベースで最小限の補足ロギングを有効にする必要があります。さらに、データベース内のレプリケーションされた各テーブルでサプリメンタル ロギングを有効にする必要があります。
デフォルトでは、 AWS DMS PRIMARY KEY
レプリケートされたすべてのテーブルに補足ロギングが追加されます。 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 LogMiner を使用して REDO ログにアクセスする場合に必要なアカウント権限
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
前述の権限を付与してください。 AWS DMS DMS_
プレフィックスを付けたディレクトリ名を作成します。CREATE ANY DIRECTORY
権限を付与しない場合は、対応するディレクトリを手動で作成します。このような場合、Oracle ディレクトリを手動で作成すると、Oracle ソースエンドポイントで指定された Oracle ユーザーがこれらのディレクトリを作成したユーザーではない場合があります。このような場合は、READ
on DIRECTORY
権限も付与します。
Oracle ソースエンドポイントがアクティブデータガードスタンバイ (ADG) になっている場合は、データベースブログの「ADG でバイナリリーダーを使用する方法
注記
AWS DMS CDC は、自動 REDO 転送サービスを使用するように構成されていないアクティブデータガードスタンバイをサポートしていません。
このような場合、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 アクティブ・データガード・スタンバイのみをサポートしています。
-
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 などのアマゾンサービス上にあるデータベースです。以下に、 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
AWS管理対象の Oracle ソースを次のように設定します。 AWS DMS
AWS管理対象の Oracle データベースをのソースとして使用する前に AWS DMS、Oracle データベースに対して次のタスクを実行してください。
-
自動バックアップを有効化します。自動バックアップの有効化の詳細については、Amazon RDS ユーザーガイド の「自動バックアップの有効化」をご参照ください。
-
サプリメンタルロギングをセットアップします。
-
アーカイブを設定します。Amazon RDS for Oracle DB インスタンスの REDO ログをアーカイブすると、Oracle LogMiner またはバイナリリーダーを使用してログ情報を取得できます AWS DMS 。
アーカイブを設定するには
-
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 ソースでバイナリリーダーを使用するように CDC タスクを設定する AWS DMS
CDC 用バイナリリーダーを使用して、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 を設定します。
-
AWS DMS 現在 Oracle Active Data Guard Standby の使用のみをサポートしていることを確認してください。
その後、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 DMS 管理コンソールまたは AWS Command Line Interface (AWS CLI) を使用して Oracle スタンバイのソースエンドポイントを作成します。エンドポイントの作成時に、次の追加の接続属性を指定します。
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 ソースデータベースについては、「サプリメンタル ロギングの設定」をご参照ください。
-
AWSマネージド Oracle ソースデータベースについては、を参照してください。AWS管理対象の Oracle ソースを次のように設定します。 AWS DMS
-
-
AWS DMS マルチテナントコンテナールートデータベース (CDB$ROOT) はサポートしていません。しかし、Binary Reader を使用した PDB をサポートしています。
-
AWS DMS ディファード制約はサポートされていません。
-
完全 LOB モードでのセキュア LOB は、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 ターゲットでテーブル構造を再作成して、該当テーブルをもう一度ロードします。バージョン 3.4.7 より前: AWS DMS
DMS は、パーティション操作またはサブパーティション操作 (
ADD
、DROP
、EXCHANGE
、TRUNCATE
) によるデータ変更をレプリケートしません。このような更新により、レプリケーション中に次のエラーが発生する可能性があります:-
ADD
オペレーションの場合、追加されたデータの更新と削除により、「影響を受ける行は 0 です」という警告が表示されることがあります。 -
DROP
およびTRUNCATE
オペレーションの場合、新しい挿入によって「重複」エラーが発生する可能性があります。 -
EXCHANGE
オペレーションは、「影響を受ける行は 0 です」警告と「重複」エラーの両方が発生する可能性があります。
パーティションオペレーションまたはサブパーティションオペレーションによる変更をレプリケートするには、対象のテーブルをリロードします。新しい空のパーティションを追加した後、新しく追加されたテーブルに対するオペレーションは、通常どおりターゲットへのレプリケーションとなります。
-
-
AWS DMS 3.4 より前のバージョンでは、
CREATE TABLE AS
ソース上でステートメントを実行した結果生じるターゲットでのデータ変更はサポートされていません。ただし、新しいテーブルがターゲットで作成されます。 -
AWS DMS Oracle
DBMS_REDEFINITION
パッケージによる変更 (OBJECT_ID
テーブルのメタデータやフィールドなど) はキャプチャされません。 -
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 AWS DMS を超える LONG 列または LONG RAW 列に設定したデータを 64 KB に切り捨てます。
-
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 set to
Drop Partition
を使用して参照によって分割されたテーブルの操作はサポートされていません。enableHomogenousPartitionOps
true
-
Oracle LogMiner を使用して REDO ログにアクセスする場合、 AWS DMS 以下の制限があります。
-
Oracle 12 の場合のみ、LOB AWS DMS 列への変更はレプリケートされません。
-
Oracle のすべてのバージョンで、および LOB AWS DMS
UPDATE
XMLTYPE
列に対する操作の結果は複製されません。 -
AWS DMS Oracle を使用している間は、レプリケーション中の XA トランザクションはサポートされません。 LogMiner
-
Oracle LogMiner はプラガブルデータベース (PDB) への接続をサポートしていません。PDB に接続するには、Binary Reader を使用して REDO ログにアクセスします。
-
SHRINK SPACE 操作はサポートされていません。
-
-
バイナリリーダーを使用する場合、 AWS DMS 次の制限があります。
-
テーブルクラスターはサポートされていません。
-
テーブルレベルでの
SHRINK SPACE
オペレーションのみがサポートされます。このレベルには、テーブル全体、パーティション、サブパーティションが含まれます。 -
キー圧縮によるインデックス構成表への変更はサポートされません。
-
RAW デバイスでのオンライン REDO ログの実装はサポートされていません。
-
RDS for Oracle では、TDE 暗号化キーのウォレットパスワードの取得がサポートされていないため、Binary Reader は、セルフマネージド型 Oracle データベースに対してのみ TDE をサポートします。
-
-
AWS DMS は、Oracle 自動ストレージ管理 (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 以降では、Oracle Express Edition (Oracle Database XE) からの変更データキャプチャ (CDC) AWS DMS はサポートされていません。
-
CHAR 列からデータを移行する場合、DMS は末尾のスペースをすべて切り捨てます。
-
AWS DMS アプリケーションコンテナからのレプリケーションはサポートされていません。
-
AWS DMS Oracle フラッシュバックデータベースと復元ポイントの実行はサポートされていません。これらの操作は Oracle REDO ログファイルの一貫性に影響するためです。
-
並列実行オプションを使用したダイレクトロードの
INSERT
プロシージャは、次の場合にはサポートされません。-
255 列を超える非圧縮テーブル
-
行サイズが 8K 以上
-
Exadata HCC テーブル
-
ビッグエンディアンプラットフォーム上で稼働するデータベース
-
-
プライマリキーも一意キーもないソーステーブルでは、ALL COLUMN サプリメンタルロギングを有効にする必要があります。これにより、さらに多くの REDO ログアクティビティが作成され、DMS CDC のレイテンシーが増加する可能性があります。
-
AWS DMS ソースデータベースの非表示列からデータを移行しません。このような列を移行の範囲に含めるには、
ALTER TABLE
ステートメントを使用して列を表示します。
Oracle エンドポイントでの SSL のサポート
AWS DMS Oracle エンドポイントは、および SSL モードで none
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
-
使用する Oracle AWS DMS クライアントウォレットを新規作成します。
orapki wallet create -wallet ./ -auto_login_only
-
Oracle ウォレットに自己署名証明書を追加します。
orapki wallet add -wallet ./ -trusted_cert -cert self-rootCA.pem -auto_login_only
-
使用する Oracle ウォレットの内容を一覧表示します。 AWS DMS リストには自己署名証明書が含まれます。
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 列 |
---|---|---|
オラクル LogMiner | はい | Yes |
Binary Reader | はい | Yes |
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 ログにアクセスするように設定されているかどうかによって異なります。
バージョン | Basic (ベーシック) | OLTP |
HCC (Oracle 11g R2 より) |
その他 |
---|---|---|---|---|
Oracle 10 | No | 該当なし | 該当なし | No |
Oracle 11 以降 — オラクル LogMiner | はい | はい | Yes | はい — Oracle がサポートしているすべての圧縮方法 LogMiner。 |
オラクル 11 以降 — Binary Reader | はい | Yes | [Yes](はい) - 詳細については、次の注をご参照ください。 | 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 をソースとして使用しているときに REDO を Oracle ASM に保存する 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 DMS コンソールを使用するか、--oracle-settings '{"
JSON EndpointSetting"
:
"value"
, ...
}'create-endpoint
AWS CLI構文のコマンドを使用して設定を指定します。
次の表は、Oracle をソースとして使用できるエンドポイント設定を説明しています。
名前 | 説明 |
---|---|
AccessAlternateDirectly |
ソースとして Amazon RDS for Oracle の変更データを Binary Reader でキャプチャするには、この属性を false に設定します。この設定は、DMS インスタンスに対して、指定されたパスプレフィックス置換を使用してファイルへの直接アクセスで REDO ログにアクセスしないように指示します。詳細については、「 RDS for Oracle ソースでバイナリリーダーを使用するように CDC タスクを設定する AWS DMS」を参照してください。 デフォルト値: true 有効な値: true/false 例: |
|
この属性を、プライマリ スタンバイ セットアップで Oracle AWS DMS 有効値: アーカイブ先 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.4.7 で導入されたことに注意してください。 AWS DMS デフォルト値: false 有効な値: true/false 例: |
|
同種のテーブルスペースのレプリケーションを有効にし、ターゲットの同じテーブルスペースで既存のテーブルまたはインデックスを作成するには、この属性を設定します。 デフォルト値: false 有効な値: true/false 例: |
|
この属性はエスケープ文字に設定する。このエスケープ文字を使うと、単一のワイルドカード文字をテーブルマッピング式で通常の文字のように動作させることができる。詳細については、「テーブルマッピングのワイルドカード」を参照してください。 デフォルト値: Null 有効値: ワイルドカード文字以外の任意の文字 例: 注記
|
|
この属性を使ってビューからデータを 1 回プルできます。これを継続的なレプリケーションに使用することはできません。ビューからデータを抽出すると、そのビューはターゲットスキーマのテーブルとして表示されます。 デフォルト値: false 有効な値: true/false 例: |
|
1 つ以上のアーカイブされた REDO ログに対する 1 つ以上の送信先の ID を指定します。このような ID は、v$archived_log ビューの dest_id 列の値である。この設定は、 ArchivedLogDestId primary-to-single セットアップまたはセットアップで追加の接続属性と一緒に使用してください。 primary-to-multiple-standby この属性は、Oracle Data Guard データベースをソースとして使用するときの切り替えに役立ちます。この場合、変更内容を読み取るためにアーカイブ REDO AWS DMS ログを取得する宛先に関する情報が必要です。 AWS DMS 切り替え後は前のプライマリがスタンバイインスタンスになるため、これが必要です。 有効値:アーカイブ先 ID 例: |
|
タスクが制限付き LOB モードに設定され、このオプションが デフォルト値: false 有効な値: ブール値 例: |
|
この追加接続属性 (ECA) を使用すると、DMS は Oracle からデータを複製する際に、特定のユーザーからのトランザクションを無視できます。 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 ソースでバイナリリーダーを使用するように 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 ソースでバイナリリーダーを使用するように 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 ソースでバイナリリーダーを使用するように CDC タスクを設定する AWS DMS」を参照してください。 デフォルト値: false 有効な値: true/false 例: |
UseBfile |
Binary Reader ユーティリティを使用して変更データをキャプチャするには、この属性を Y に設定します。この属性を Y に設定するため、 注: この値を追加の接続属性 (ECA) として設定する場合の有効な値は「Y」と「N」となる。この値をエンドポイント設定として設定する場合、有効な値は デフォルト値: N 有効値: Y または N (この値を ECA として設定する場合)、true または false (この値をエンドポイント設定として設定する場合) 例: |
|
この属性を Y に設定すると、 LogMiner ユーティリティ (デフォルト) を使用して変更データをキャプチャできます。 AWS DMS がバイナリファイルとして REDO ログにアクセスするようにする場合は、このオプションを N に設定します。このオプションを N に設定すると、useBfile=Y という設定も追加されます。この設定および Oracle 自動ストレージ管理 (ASM) の使用の詳細については、「CDC 用の Oracle LogMiner AWS DMS またはバイナリリーダーの使用」をご参照ください。 注: この値を追加の接続属性 (ECA) として設定する場合の有効な値は「Y」と「N」となる。この値をエンドポイント設定として設定する場合、有効な値は デフォルト値: Y 有効値: Y または N (この値を ECA として設定する場合)、true または false (この値をエンドポイント設定として設定する場合) 例: |
UsePathPrefix |
Amazon RDS for Oracle をソースとして Binary Reader で変更データをキャプチャするには、この文字列属性を必要な値に設定します。この値は、デフォルトの Oracle ルートを置換して REDO ログにアクセスするために使用されるパスプレフィックスを指定します。詳細については、「 RDS for Oracle ソースでバイナリリーダーを使用するように 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 |
STRING |
NCHAR |
WSTRING |
NVARCHAR2 |
WSTRING |
RAW |
BYTES |
REAL |
REAL8 |
BLOB |
BLOB このデータ型をと共に使用するには AWS DMS、特定のタスクで BLOB データ型の使用を有効にする必要があります。 AWS DMS 主キーを含むテーブルでのみ BLOB データ型をサポートします。 |
CLOB |
CLOB このデータ型をと共に使用するには AWS DMS、特定のタスクで CLOB データ型の使用を有効にする必要があります。CDC では、 AWS DMS 主キーを含むテーブルでのみ CLOB データ型をサポートします。 |
NCLOB |
NCLOB このデータ型をと共に使用するには AWS DMS、特定のタスクで NCLOB データ型の使用を有効にする必要があります。CDC 中は、 AWS DMS 主キーを含むテーブルでのみ NCLOB データ型をサポートします。 |
LONG |
CLOB LONG データ型はバッチ最適化適用モード (CDC モード) ではサポートされません。TurboStream このデータ型を使用するには AWS DMS、特定のタスクで LOB の使用を有効にしてください。 CDC または全ロード中は、 AWS DMS 主キーを持つテーブルの LOB データ型のみをサポートします。 また、LONG AWS DMS 列のロードではフル LOB モードはサポートされていません。この代わりに、制限付き LOB モードを使用して LONG 列を Oracle ターゲットに移行できる。制限付き LOB モードでは、64 KB AWS DMS を超える LONG 列に設定したデータを 64 KB に切り捨てます。での LOB サポートの詳細については、を参照してください。 AWS DMSタスク内のソースデータベースの LOB サポートの設定 AWS DMS |
LONG RAW |
BLOB LONG RAW データ型はバッチ最適化適用モード (TurboStream CDC モード) ではサポートされていません。 このデータ型を使用するには AWS DMS、特定のタスクで LOB の使用を有効にしてください。 CDC または全ロード中は、 AWS DMS 主キーを持つテーブルの LOB データ型のみをサポートします。 また、LONG RAW AWS DMS 列のロードではフル LOB モードはサポートされていません。この代わりに、制限付き LOB モードを使用して LONG RAW 列を Oracle ターゲットに移行できる。制限付き LOB モードでは、64 KB AWS DMS を超える LONG RAW 列に設定したデータを 64 KB に切り捨てます。での LOB サポートの詳細については、を参照してください。 AWS DMSタスク内のソースデータベースの LOB サポートの設定 AWS DMS |
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 タイプ SDO_GEOMETRY を Oracle ソースから Oracle ターゲットまたは PostgreSQL ターゲットのいずれかに移行することをサポートします。
を使用して 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 空間列の移行をサポートします。 AWS DMS 制限付き LOB モードまたはインライン LOB モードはサポートしていません。LOB モードの詳細については、「タスク内のソースデータベースの LOB サポートの設定 AWS DMS」を参照。
Oracle Spatial Columns の移行ではフル LOB AWS DMS モードのみをサポートしているため、列のテーブルには主キーとユニークキーが必要です。プライマリキーと一意のキーがないテーブルは移行でスキップされる。