Oracle から Hologres にデータをリアルタイムで同期する前に、このトピックで説明されている操作を参照してデータソースを設定できます。データソースの設定には、ネットワーク環境、ホワイトリスト、権限が含まれます。ソース Oracle データソースとデスティネーション Hologres データソースを設定する必要があります。
前提条件
データソースを設定する前に、次の操作が実行されていることを確認してください。
データソースを準備する: ソース Oracle データソースとデスティネーション Hologres データソースが作成されています。
リソースを計画および準備する: Data Integration 専用のリソースグループが購入および設定されています。詳細については、「ネットワーク接続ソリューション」をご参照ください。
ネットワーク環境を評価および計画する: データ統合を実行する前に、ビジネス要件に基づいてネットワーク接続方法を選択し、その方法を使用してデータソースを Data Integration 専用のリソースグループに接続する必要があります。データソースと Data Integration 専用のリソースグループが接続された後、このトピックで説明されている操作を参照して、vSwitch やホワイトリストなどのアクセス設定を行うことができます。
データソースと Data Integration 専用のリソースグループが同じリージョンと仮想プライベートクラウド (VPC) に存在する場合、それらは自動的に接続されます。
データソースと Data Integration 専用のリソースグループが異なるネットワーク環境に存在する場合は、VPN ゲートウェイなどの方法を使用して、データソースとリソースグループを接続する必要があります。
背景情報
ソースからデスティネーションにデータを同期する場合は、データソースと Data Integration 専用のリソースグループが接続されていることを確認してください。また、Data Integration 専用のリソースグループを使用してデータソースにアクセスできることを確認する必要があります。さらに、Oracle データソースには、Data Integration でサポートされているデータベースバージョン、文字エンコード形式、およびデータ型のみが含まれている必要があります。
データソースのホワイトリストを設定する
データソースと Data Integration 専用のリソースグループが同じ VPC に存在する場合は、Data Integration 専用のリソースグループの CIDR ブロックをデータソースのホワイトリストに追加する必要があります。これにより、Data Integration 専用のリソースグループを使用してデータソースにアクセスできるようになります。

アカウントを作成し、アカウントに権限を付与する
データ同期プロセス中に、データソースへのアクセス、ソースからのデータの読み取り、およびデスティネーションへのデータの書き込みに使用できるアカウントを作成する必要があります。
DataWorks で Data Integration のリアルタイムデータ同期ノードを作成するために Oracle データソースのバージョンが使用可能かどうかを確認する
Oracle データソースからのリアルタイムのデータ同期は、ログファイルを分析するために使用される Oracle LogMiner ユーティリティに基づいて実装されます。 DataWorks のリアルタイムデータ同期ノードでは、Oracle
10g、11g、12c non-CDB、18c non-CDB、および19c non-CDBデータベースのみがサポートされています。 Oracle12c CDB、18c CDB、および19c CDBデータベースはサポートされていません。 Oracle 12c 以降のバージョンの Oracle データベースは、複数の PDB をホストする CDB として機能できます。次のいずれかのステートメントを実行して、Oracle データベースのバージョンを表示できます。
ステートメント 1:
select * from v$version;ステートメント 2:
select version from v$instance;
Oracle データベースのバージョンが
12c、18c、または19cの場合は、次のステートメントを実行して、データベースがCDBとして機能できるかどうかを確認する必要があります。 Oracle データベースがCDBとして機能できる場合、この Oracle データベースは DataWorks の Data Integration のリアルタイムデータ同期ノードではサポートされていません。select name,cdb,open_mode,con_id from v$database;
説明DataWorks の Data Integration のリアルタイムデータ同期ノードでサポートされていない Oracle データベースのバージョンを変更する必要があります。変更しない場合、Data Integration を使用して Oracle からデータをリアルタイムで同期することはできません。
データベースレベルのアーカイブログファイルと REDO ログファイルの生成を有効にし、データベースレベルの補足ロギングを有効にする
ソースデータソースとして設定する Oracle データベースについて、データベースレベルのアーカイブログファイルと REDO ログファイルの生成を有効にし、データベースレベルの補足ロギングを有効にする必要があります。
アーカイブログファイル: Oracle はすべての REDO ログファイルをアーカイブログファイルとしてアーカイブし、障害発生時にデータベースを復元するために使用します。
REDO ログファイル: Oracle は REDO ログファイルを使用して、データベーストランザクションを再実行できるようにします。これにより、停電などの障害発生時にデータを回復できます。
補足ロギング: 補足ロギングは、REDO ログファイルに記録された情報を補足するために使用されます。 Oracle では、REDO ログファイルを使用して、変更されたフィールドの値が記録されます。補足ロギングは、REDO ログファイルの変更履歴を補足するために使用されます。これにより、REDO ログファイルにデータの変更を記述する完全な情報が含まれるようになります。データの回復やデータの同期などの操作を実行する場合、完全なステートメントとデータの更新を表示できます。補足ロギングを有効にすると、Oracle データベースの一部の機能をより適切に実装できます。したがって、データベースの補足ロギングを有効にする必要があります。
たとえば、補足ロギングを有効にしないと、UPDATE ステートメントを実行した後、REDO ログファイルには、UPDATE ステートメントの実行時に変更されたフィールドの値のみが記録されます。補足ロギングを有効にすると、REDO ログファイルには、変更前と変更後のフィールドの値が記録されます。デスティネーションフィールドの変更に使用される条件も記録されます。データベースで停電などの例外が発生した場合、変更の詳細に基づいてデータを回復できます。
プライマリキー列または一意のインデックス列の補足ロギングを有効にすることをお勧めします。
プライマリキー列の補足ロギングを有効にすると、データベースが更新された場合、プライマリキーを構成する列がログに記録されます。
一意のインデックス列の補足ロギングを有効にすると、列が変更された場合、一意のキーまたはビットマップインデックスを構成する列がログに記録されます。
DataWorks の Data Integration を使用して Oracle データベースからデータをリアルタイムで同期する前に、Oracle データベースでデータベースレベルのアーカイブログファイルの生成と補足ロギングが有効になっていることを確認してください。 Oracle データベースでデータベースレベルのアーカイブログファイルの生成と補足ロギングが有効になっているかどうかを確認するには、次の SQL ステートメントを実行します。
select log_mode, supplemental_log_data_pk, supplemental_log_data_ui from v$database;アーカイブログ
log_modeパラメーターの戻り値 ARCHIVELOGデータベースレベルのアーカイブログファイルの生成を有効にする は、Oracle データベースでデータベースレベルのアーカイブログファイルの生成が有効になっていることを示します。値 が返されない場合は、Oracle データベースで 必要があります。はい
supplemental_log_data_pkパラメーターとsupplemental_log_data_uiパラメーターの戻り値 YES は、Oracle データベースで補足ロギングが有効になっていることを示します。戻り値が FALSE の場合は、Oracle データベースで 補足ロギングを有効にする 必要があります。
文字エンコード形式を確認する
データ同期の失敗を防ぐために、Oracle データベースに Data Integration でサポートされている文字エンコード形式のみが含まれていることを確認する必要があります。データ同期では、UTF-8、AL32UTF8、AL16UTF16、および ZHS16GBK のエンコード形式がサポートされています。
データ型を確認する
データ同期の失敗を防ぐために、Oracle データベースに Data Integration でサポートされているデータ型のみが含まれていることを確認する必要があります。リアルタイムデータ同期では、LONG、BFILE、LONG RAW、および NCLOB のデータ型はサポートされていません。
制限事項
補足ロギング機能は、プライマリ Oracle データベースでのみ設定できます。補足ロギングは、プライマリまたはセカンダリデータベースで有効にできます。
Oracle インスタンスからリアルタイムで同期できる増分データは、1 日あたり最大 500 GB です。
DataWorks のリアルタイムデータ同期ノードでは、Oracle
10g、11g、12c non-CDB、18c non-CDB、および19c non-CDBデータベースのみがサポートされています。 Oracle12c CDB、18c CDB、および19c CDBデータベースはサポートされていません。 Oracle 12c 以降のバージョンの Oracle データベースは、複数の PDB をホストする CDB として機能できます。
注意事項
Data Integration のリアルタイムデータ同期ノードの場合、プライマリ Oracle データベースでのみオンライン REDO ログファイルをサブスクライブできます。セカンダリ Oracle データベースでは、アーカイブログファイルのみをサブスクライブできます。リアルタイムデータ同期ノードの適時性に高い要件がある場合は、プライマリ Oracle データベースのリアルタイムの増分変更ログをサブスクライブすることをお勧めします。セカンダリ Oracle データベースのアーカイブログファイルをサブスクライブする場合、アーカイブログの生成と受信の間の最小レイテンシは、Oracle が 2 つのアーカイブログファイルを自動的に切り替える間隔によって決まります。この場合、リアルタイムデータ同期ノードの適時性を確保できません。
Oracle データベースのアーカイブログファイルは 3 日間保持することをお勧めします。大量のデータが Oracle データベースに書き込まれると、リアルタイムデータ同期の速度がログ生成の速度よりも遅くなる可能性があります。これにより、データ同期中に問題が発生した場合にデータを追跡するのに十分な時間が得られます。アーカイブログファイルを分析して問題のトラブルシューティングを行い、データを回復できます。
Data Integration のリアルタイムデータ同期ノードは、Oracle データベースのプライマリキーのないテーブルで
truncate操作を実行できません。リアルタイムデータ同期ノードは、logminer操作を実行することで、プライマリキーのないテーブルのログを分析します。このプロセスでは、リアルタイムデータ同期ノードはrowidを使用して行を見つけます。truncate操作が実行されると、テーブルのrowid値が変更されます。これにより、リアルタイムデータ同期ノードの実行でエラーが発生します。24 vCPU および 192 GiB メモリの構成で DataWorks サーバーでリアルタイムデータ同期ノードを実行する場合、Oracle データベースサーバーの単一 CPU コアの使用率は、データベースのログの状態によって異なります。ほとんどのログがupdateログではなく、同期ノードが毎秒約 30 ~ 50,000 件のデータレコードを処理できる場合、単一 CPU コアの使用率は 25% ~ 35% になります。ほとんどのログがupdateログの場合、DataWorks サーバーはリアルタイムデータ同期中にパフォーマンスのボトルネックに遭遇する可能性があり、Oracle データベースサーバーの単一 CPU コアの使用率は 1% ~ 5% のみです。
手順
Oracle データベースのホワイトリストを設定します。
排他的リソースグループが存在する VPC の CIDR ブロックを Oracle データベースのホワイトリストに追加します。
Data Integration 専用のリソースグループの Elastic IP アドレス (EIP) と CIDR ブロックを表示して記録します。
DataWorks コンソール にログインします。
左側のナビゲーションペインで、[リソースグループ] をクリックします。
[専用リソースグループ] タブで、Data Integration 専用のリソースグループを見つけ、[アクション] 列の [情報を表示] をクリックします。
[専用リソースグループ] ダイアログボックスで、[eipaddress] パラメーターと [CIDR ブロック] パラメーターの値を表示して記録します。
[専用リソースグループ] タブで、Data Integration 専用のリソースグループを見つけ、[アクション] 列の [ネットワーク設定] をクリックします。
表示されるページの [VPC バインディング] タブで、Data Integration 専用のリソースグループが関連付けられている [vswitch の CIDR ブロック] を表示して記録します。
排他的リソースグループの Elastic IP アドレス (EIP) と CIDR ブロックを Oracle データベースのホワイトリストに追加します。
アカウントを作成し、必要な権限をアカウントに付与します。
データベースにログインするためのアカウントを作成する必要があります。アカウントには、Oracle データベースに対する必要な権限が必要です。
アカウントを作成します。
詳細については、「Oracle データベースアカウントの作成」をご参照ください。
アカウントに権限を付与します。
次のステートメントを実行して、アカウントに権限を付与できます。特定のステートメントを実行するときは、
データ同期用アカウントを作成したアカウントに置き換えます。grant create session to 'データ同期用アカウント'; // 同期アカウントにデータベースへのアクセスを承認します。 grant connect to 'データ同期用アカウント'; // 同期アカウントにデータベースへの接続を承認します。 grant select on nls_database_parameters to 'データ同期用アカウント'; // 同期アカウントに nls_database_parameters の設定のクエリを承認します。 grant select on all_users to 'データ同期用アカウント'; // 同期アカウントにデータベース内のすべてのユーザーのクエリを承認します。 grant select on all_objects to 'データ同期用アカウント'; // 同期アカウントにデータベース内のすべてのオブジェクトのクエリを承認します。 grant select on DBA_MVIEWS to 'データ同期用アカウント'; // 同期アカウントにデータベースのマテリアライズドビューの確認を承認します。 grant select on DBA_MVIEW_LOGS to 'データ同期用アカウント'; // 同期アカウントにデータベースのマテリアライズドビューログの表示を承認します。 grant select on DBA_CONSTRAINTS to 'データ同期用アカウント'; // 同期アカウントにデータベースのすべてのテーブルの制約の表示を承認します。 grant select on DBA_CONS_COLUMNS to 'データ同期用アカウント'; // 同期アカウントにデータベースのすべてのテーブルの指定された制約下にあるすべての列に関する情報の表示を承認します。 grant select on all_tab_cols to 'データ同期用アカウント'; // 同期アカウントにデータベースのテーブル、ビュー、およびクラスターの列に関する情報の表示を承認します。 grant select on sys.obj$ to 'データ同期用アカウント'; // 同期アカウントにデータベース内のオブジェクトの表示を承認します。 sys.obj$ は、データディクショナリテーブルに含まれるオブジェクトテーブルを示します。オブジェクトテーブルにはすべてのオブジェクトが含まれます。 grant select on SYS.COL$ to 'データ同期用アカウント'; // 同期アカウントにデータベースのテーブルの列の定義の表示を承認します。 SYS.COL$ は、テーブルの列の定義を格納します。 grant select on sys.USER$ to 'データ同期用アカウント'; // 同期アカウントにデータベースのシステムテーブルの表示を承認します。 sys.USER$ は、デフォルトのユーザーセッションサービスを示します。 grant select on sys.cdef$ to 'データ同期用アカウント'; // 同期アカウントにデータベースのシステムテーブルの表示を承認します。 grant select on sys.con$ to 'データ同期用アカウント'; // 同期アカウントにデータベースの制約の表示を承認します。 sys.con$ は制約を記録します。 grant select on all_indexes to 'データ同期用アカウント'; // 同期アカウントにデータベースのすべてのインデックスの表示を承認します。 grant select on v_$database to 'データ同期用アカウント'; // 同期アカウントにデータベースの v_$database ビューの確認を承認します。 grant select on V_$ARCHIVE_DEST to 'データ同期用アカウント'; // 同期アカウントにデータベースの V_$ARCHIVE_DEST ビューの確認を承認します。 grant select on v_$log to 'データ同期用アカウント'; // 同期アカウントにデータベースの v_$log ビューの確認を承認します。 v_$log は、制御ファイルに関するログインフォメーションを表示します。 grant select on v_$logfile to 'データ同期用アカウント'; // 同期アカウントにデータベースの v_$logfile ビューの確認を承認します。 v_$logfile には、REDO ログファイルに関する情報が含まれています。 grant select on v_$archived_log to 'データ同期用アカウント'; // 同期アカウントにデータベースの v$archived_log ビューの確認を承認します。 v$archived_log には、アーカイブログに関する情報が含まれています。 grant select on V_$LOGMNR_CONTENTS to 'データ同期用アカウント'; // 同期アカウントにデータベースの V_$LOGMNR_CONTENTS ビューの確認を承認します。 grant select on DUAL to 'データ同期用アカウント'; // 同期アカウントにデータベースの DUAL テーブルの表示を承認します。 DUAL は、SELECT 構文規則を含む仮想テーブルです。 Oracle では、DUAL テーブルには 1 つのレコードのみが保持されます。 grant select on v_$parameter to 'データ同期用アカウント'; // 同期アカウントにデータベースの v_$parameter ビューの確認を承認します。 v$parameter は、データベースのパラメーターの値を格納する動的ディクショナリテーブルです。 grant select any transaction to 'データ同期用アカウント'; // 同期アカウントにデータベースのトランザクションの表示を承認します。 grant execute on SYS.DBMS_LOGMNR to 'データ同期用アカウント'; // 同期アカウントに LOGMNR ツールの使用を承認します。 LOGMNR ツールは、トランザクションの分析と失われたデータの取得に役立ちます。 grant alter session to 'データ同期用アカウント'; // 同期アカウントにデータベースの接続構成の変更を承認します。 grant select on dba_objects to 'データ同期用アカウント'; // 同期アカウントにデータベースのすべてのオブジェクトの表示を承認します。 grant select on v_$standby_log to 'データ同期用アカウント'; // 同期アカウントにデータベースの v_$standby_log ビューの確認を承認します。 v_$standby_log には、セカンダリデータベースのアーカイブログが含まれています。 grant select on v_$ARCHIVE_GAP to 'データ同期用アカウント'; // 同期アカウントに不足しているアーカイブログのクエリを承認します。完全なオフラインデータを同期するには、次のステートメントを実行して、すべてのテーブルのクエリ権限を同期アカウントに付与する必要もあります。
grant select any table to 'データ同期用アカウント';Oracle 12c 以降では、次のステートメントを実行して、ログマイニング権限を同期アカウントに付与する必要があります。ログマイニング機能は、12c より前の Oracle バージョンに組み込まれています。これらのバージョンでは、ステートメントを実行する必要はありません。
grant LOGMINING TO 'データ同期用アカウント';
アーカイブログファイルの生成と補足ロギングを有効にし、REDO ログファイルをきりかえます。
プライマリデータベースにログインし、次の手順を実行します。
次の SQL ステートメントを実行して、アーカイブログファイルの生成を有効にします。
shutdown immediate; startup mount; alter database archivelog; alter database open;補足ロギングを有効にします。
SQL ステートメント:
alter database add supplemental log data(primary key) columns; // プライマリキー列の補足ロギングを有効にします。 alter database add supplemental log data(unique) columns; // 一意のインデックス列の補足ロギングを有効にします。REDO ログファイルをきりかえます。
補足ロギングを有効にした後、次のステートメントを複数回実行して REDO ログファイルをきりかえる必要があります。次のステートメントを 5 回実行することをお勧めします。
alter system switch logfile;説明これにより、現在のログファイルがいっぱいになった後、データが次のログファイルに書き込まれるようになります。履歴操作に関するデータは失われません。これはデータの回復に役立ちます。
データベースの文字エンコード形式を確認します。
次のステートメントを実行して、データベースの文字エンコード形式を確認します。
select * from v$nls_parameters where PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');v$nls_parameters は、データベースのパラメーターの値を格納します。
NLS_CHARACTERSET はデータベース文字セットを示します。NLS_NCHAR_CHARACTERSET は各国語文字セットを示します。これらの 2 つのセットは、文字型のデータを格納するために使用されます。
データベースにデータ同期でサポートされていない文字エンコード形式が含まれている場合は、データを同期する前に形式を変更してください。
データベースのテーブルのデータ型を確認します。
SELECT ステートメントを実行して、データベースのテーブルのデータ型をクエリできます。'tablename' テーブルのデータ型をクエリするために実行されるステートメントの例:
select COLUMN_NAME,DATA_TYPE from all_tab_columns where TABLE_NAME='tablename';COLUMN_NAME: 列の名前。
DATA_TYPE: 列のデータ型。
all_tab_columns: データベースのテーブルのすべての列に関する情報を格納するビュー。
TABLE_NAME: クエリのテーブルの名前。前のステートメントを実行するときは、'tablename' をクエリのテーブルの名前に置き換えます。
select * from 'tablename';ステートメントを実行して、目的のテーブルに関する情報をクエリし、データ型を取得することもできます。テーブルにこれらのデータ型のいずれかが含まれている場合は、リアルタイム同期ソリューションリストからテーブルを削除するか、データを同期する前にデータ型を変更してください。
次のステップ
データソースが設定されると、ソース、デスティネーション、および Data Integration 専用のリソースグループが接続されます。その後、Data Integration 専用のリソースグループを使用してデータソースにアクセスできます。ソリューションを作成するときに、ソースとデスティネーションを DataWorks に追加し、データ同期ソリューションに関連付けることができます。
データソースを追加する方法の詳細については、「データソースの追加」をご参照ください。