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;ARCHIVELOG モード
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 データベースでのみ設定できます。 補足ログは、プライマリまたはセカンダリデータベースで有効にできます。
データ同期では、UTF-8、AL32UTF8、AL16UTF16、および ZHS16GBK のエンコーディング形式がサポートされています。
リアルタイムデータ同期では、LONG、BFILE、LONG RAW、および NCLOB のデータ型はサポートされていません。 1 日に最大 500 GB の増分データを Oracle インスタンスからリアルタイムで同期できます。
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 データベースアカウントの作成」をご参照ください。
アカウントに権限を付与します。
次のステートメントを実行して、アカウントに権限を付与できます。 特定のステートメントを実行するときは、
Account for data synchronizationを作成したアカウントに置き換えます。grant create session to 'Account for data synchronization'; // 同期アカウントにデータベースへのアクセスを許可します。 grant connect to 'Account for data synchronization'; // 同期アカウントにデータベースへの接続を許可します。 grant select on nls_database_parameters to 'Account for data synchronization'; // 同期アカウントに nls_database_parameters の設定のクエリを許可します。 grant select on all_users to 'Account for data synchronization'; // 同期アカウントにデータベース内のすべてのユーザーのクエリを許可します。 grant select on all_objects to 'Account for data synchronization'; // 同期アカウントにデータベース内のすべてのオブジェクトのクエリを許可します。 grant select on DBA_MVIEWS to 'Account for data synchronization'; // 同期アカウントにデータベースのマテリアライズドビューの確認を許可します。 grant select on DBA_MVIEW_LOGS to 'Account for data synchronization'; // 同期アカウントにデータベースのマテリアライズドビューログの表示を許可します。 grant select on DBA_CONSTRAINTS to 'Account for data synchronization'; // 同期アカウントにデータベースのすべてのテーブルの制約の表示を許可します。 grant select on DBA_CONS_COLUMNS to 'Account for data synchronization'; // 同期アカウントにデータベースのすべてのテーブルの指定された制約下にあるすべての列に関する情報の表示を許可します。 grant select on all_tab_cols to 'Account for data synchronization'; // 同期アカウントにデータベースのテーブル、ビュー、およびクラスターの列に関する情報の表示を許可します。 grant select on sys.obj$ to 'Account for data synchronization'; // 同期アカウントにデータベース内のオブジェクトの表示を許可します。 sys.obj$ は、データディクショナリテーブルに含まれるオブジェクトテーブルを示します。 オブジェクトテーブルにはすべてのオブジェクトが含まれます。 grant select on SYS.COL$ to 'Account for data synchronization'; // 同期アカウントにデータベースのテーブルの列の定義の表示を許可します。 SYS.COL$ は、テーブルの列の定義を格納します。 grant select on sys.USER$ to 'Account for data synchronization'; // 同期アカウントにデータベースのシステムテーブルの表示を許可します。 sys.USER$ は、デフォルトのユーザーセッションサービスを示します。 grant select on sys.cdef$ to 'Account for data synchronization'; // 同期アカウントにデータベースのシステムテーブルの表示を許可します。 grant select on sys.con$ to 'Account for data synchronization'; // 同期アカウントにデータベースの制約の表示を許可します。 sys.con$ は制約を記録します。 grant select on all_indexes to 'Account for data synchronization'; // 同期アカウントにデータベースのすべてのインデックスの表示を許可します。 grant select on v_$database to 'Account for data synchronization'; // 同期アカウントにデータベースの v_$database ビューの確認を許可します。 grant select on V_$ARCHIVE_DEST to 'Account for data synchronization'; // 同期アカウントにデータベースの V_$ARCHIVE_DEST ビューの確認を許可します。 grant select on v_$log to 'Account for data synchronization'; // 同期アカウントにデータベースの v_$log ビューの確認を許可します。 v_$log は、制御ファイルに関するログイン情報を表示します。 grant select on v_$logfile to 'Account for data synchronization'; // 同期アカウントにデータベースの v_$logfile ビューの確認を許可します。 v_$logfile には、REDO ログファイルに関する情報が含まれています。 grant select on v_$archived_log to 'Account for data synchronization'; // 同期アカウントにデータベースの v$archived_log ビューの確認を許可します。 v$archived_log には、アーカイブログに関する情報が含まれています。 grant select on V_$LOGMNR_CONTENTS to 'Account for data synchronization'; // 同期アカウントにデータベースの V_$LOGMNR_CONTENTS ビューの確認を許可します。 grant select on DUAL to 'Account for data synchronization'; // 同期アカウントにデータベースの DUAL テーブルの表示を許可します。 DUAL は、SELECT 構文規則を含む仮想テーブルです。 Oracle では、DUAL テーブルには 1 つのレコードのみが保持されます。 grant select on v_$parameter to 'Account for data synchronization'; // 同期アカウントにデータベースの v_$parameter ビューの確認を許可します。 v$parameter は、データベースのパラメータの値を格納する動的ディクショナリテーブルです。 grant select any transaction to 'Account for data synchronization'; // 同期アカウントにデータベースのトランザクションの表示を許可します。 grant execute on SYS.DBMS_LOGMNR to 'Account for data synchronization'; // 同期アカウントに LOGMNR ツールの使用を許可します。 LOGMNR ツールは、トランザクションを分析し、失われたデータを取得するのに役立ちます。 grant alter session to 'Account for data synchronization'; // 同期アカウントにデータベースの接続構成の変更を許可します。 grant select on dba_objects to 'Account for data synchronization'; // 同期アカウントにデータベースのすべてのオブジェクトの表示を許可します。 grant select on v_$standby_log to 'Account for data synchronization'; // 同期アカウントにデータベースの v_$standby_log ビューの確認を許可します。 v_$standby_log には、セカンダリデータベースのアーカイブログが含まれています。 grant select on v_$ARCHIVE_GAP to 'Account for data synchronization'; // 同期アカウントに不足しているアーカイブログのクエリを許可します。完全なオフラインデータを同期するには、次のステートメントを実行して、すべてのテーブルに対するクエリ権限を同期アカウントに付与する必要もあります。
grant select any table to 'Account for data synchronization';Oracle 12c 以降では、次のステートメントを実行して、ログマイニング権限を同期アカウントに付与する必要があります。 ログマイニング機能は、12c より前の Oracle バージョンに組み込まれています。 これらのバージョンでは、ステートメントを実行する必要はありません。
grant LOGMINING TO 'Account for data synchronization';
アーカイブログファイルの生成と補足ログを有効にし、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 つのセットは、文字型のデータを格納するために使用されます。
データ同期では、UTF-8、AL32UTF8、AL16UTF16、および ZHS16GBK のエンコーディング形式がサポートされています。 データベースにデータ同期でサポートされていない文字エンコーディング形式が含まれている場合は、データを同期する前に形式を変更してください。
データベース内のテーブルのデータ型を確認します。
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';ステートメントを実行して、目的のテーブルに関する情報をクエリし、データ型を取得することもできます。リアルタイムデータ同期では、LONG、BFILE、LONG RAW、および NCLOB のデータ型はサポートされていません。 テーブルにこれらのデータ型のいずれかが含まれている場合は、リアルタイム同期ソリューションリストからテーブルを削除するか、データを同期する前にデータ型を変更してください。
次のステップ
データソースが設定されると、ソース、デスティネーション、および Data Integration 専用のリソースグループが接続されます。 その後、Data Integration 専用のリソースグループを使用してデータソースにアクセスできます。 ソリューションを作成するときに、ソースとデスティネーションを DataWorks に追加し、データ同期ソリューションに関連付けることができます。
データソースを追加する方法の詳細については、「データソースの追加」をご参照ください。
[No text provided to translate. Please provide the text you would like me to translate.]