Oracle

Version 25.3.9414


Oracle


CData Sync アプリケーションからOracle コネクタを使用して、Oracle からデータを取得してサポートされている任意の同期先に移動できます。これを行うには、コネクタを追加し、コネクタへの認証を行い、接続を完了する必要があります。

Oracle コネクタを追加

Sync でOracle のデータを使用できるようにするには、まず以下の手順でコネクタを追加する必要があります。

  1. Sync のダッシュボードから接続ページを開きます。

  2. 接続を追加をクリックしてコネクタを選択ページを開きます。

  3. データソースタブをクリックしてOracle 行に移動します。

  4. 行末にある接続を設定アイコンをクリックして、新しい接続ページを開きます。接続を設定アイコンが利用できない場合は、コネクタをダウンロードアイコンをクリックしてOracle コネクタをインストールします。新規コネクタのインストールについて詳しくは、接続を参照してください。

Oracle への認証

コネクタを追加したら、必須プロパティを設定する必要があります。

新しい接続ページで任意の接続名を入力します。

CData Sync は、さまざまな接続の種類でOracle への認証をサポートしています。以下から接続の種類を選択し、認証の詳細を含む該当セクションに進みます。

Oracle Server

Oracle サーバー経由で認証するには、次のプロパティを指定します:

  • Connection Type - Server を選択。

  • Server - Oracle データベースをホストしているサーバーのホスト名またはIP アドレスを入力。

  • Service Name - Oracle データベースのサービス名を入力。この値は、Oracle SQL*PLUS コマンドラインから次のクエリを送信することで取得できます:

    SELECT * FROM global_name;

    Note:このクエリの結果は、グローバルデータベース名を返します。これは、Oracle リスナーで定義されているサービス名と必ずしも一致しない場合があります。不明な点がある場合は、DBA に結果を確認するか、tnsnames.ora ファイルを参照して正しいサービス名であることを確認してください。

  • User - Oracle アカウントへの認証に使用するユーザー名を入力。

  • Password - Oracle アカウントへの認証に使用するパスワードを入力。

  • Port - Oracle データベースをホストするサーバーに接続するために使用するポートを入力。

  • Wallet(オプション)- クライアントのOracle Wallet の場所を入力。

Oracle Transport Network Substrate

Oracle Transport Network Substrate(TNS)経由で認証するには、次のプロパティを指定します:

  • Connection Type - OracleTNS を選択。

  • User - Oracle アカウントへの認証に使用するユーザー名を入力。

  • Password - Oracle アカウントへの認証に使用するパスワードを入力。

  • Data Source - 接続先のデータベースを識別するOracle Net Services 名、接続記述子(TNS 接続文字列とも呼ばれる)、または接続名を入力します。これらの値は、tnsnames.ora ファイルで確認できます。

    例:DataSource='(DESCRIPTION=(ADDRESS=(ProtocolAddressInformation))(CONNECT_DATA= (SERVICE_NAME=ServiceName)))'

LDAP

LDAP サーバー経由で認証するには、次のプロパティを指定します:

  • Connection Type - LDAP を選択。

  • User - Oracle アカウントへの認証に使用するユーザー名を入力。

  • Password - Oracle アカウントへの認証に使用するパスワードを入力。

  • LDAP Uri - LDAP サーバーに接続するために使用するLDAP URI を入力。

    例: `LDAPUri=ldap://myldap.com:389/SERVICE_EXMPL,cn=OracleContext,dc=example,dc=com; User=OracleUser; Password=OracleUserPassword;

接続を完了する

接続を完了するには:

  1. 高度な設定タブで接続の高度な設定を定義します。(ただし、ほとんどの場合これらの設定は必要ありません。)

  2. 作成およびテストをクリックして接続を作成します。

Oracle LogMiner とOracle Flashback Query の設定

Oracle は、ソースデータベースからの変更を追跡する2つの方法を提供しています。

  • Oracle LogMiner(ログマイナー)

  • Oracle Flashback Query(フラッシュバッククエリ)

Note:これらのメソッドの両方がテーブルで有効になっている場合、Sync はOracle LogMiner を使用します。

次のセクションでは、これら2つの方法と、それらを有効にする方法について説明します。

Oracle LogMiner vs. Flashback Query

Oracle LogMiner はREDO ログの変更を追跡し、それによりSync はそのログを読んで特定のテーブルへの変更を判断することができます。Orcale LogMiner とFlahsback の主な違いは、LogMiner ではSync がソーステーブルを操作しないことです。その代わりにSync はログを直接読み込みます。これにより、ソースデータベースに対する要求が低くなりパフォーマンスにプラスの影響を与えます。

Oracle Flashback Query は、CData Sync に効率的な追跡メカニズムを提供する軽量ソリューションです。テーブルでFlashback Query 設定を行うと、Sync はソーステーブルに対してFlashback Query を実行し、前回の実行以降にテーブルにどのような変更が加えられたかを判断することができます。

CData Sync のOracle LogMiner を有効化

  1. データベースでARCHIVELOG モードを有効化します。ARCHIVELOG モードがすでに有効になっているかどうかを確認するには、次のステートメントを送信します。

    SELECT LOG_MODE FROM V$DATABASE
    

    このステートメントの出力でログモードにARCHIVELOG が表示されない場合は、以下のステートメントを送信してARCHIVELOG モードを有効化します。

    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;
    ALTER DATABASE ARCHIVELOG;
    ALTER DATABASE OPEN;
    
  2. データベースがバックアップとアーカイブログを少なくとも24時間保持するようにします。なお、CData では、この例に示すようにバックアップとログを7日間保持することを推奨しています。

    RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
    
  3. 以下の適切なステートメントを送信して、データベースまたはテーブルレベルのいずれかで補助ログを有効にします。補助ログは、これらのレベルのうち1つのレベルでのみ必要です。

    データベースレベル

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS
    

    テーブルレベル

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA   
    ALTER TABLE SchemaName.TableName ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS
    

    Notes:

    • LogMiner を正しく動作させるには、テーブルレベルでデータベースの補助ログを追加する必要があります。補助ログは特定のテーブルまたはデータベース全体に対して有効にできますが、大量のログが生成されるため、CData ではデータベースで直接有効にすることは推奨していません。この動作は、ログの処理に必要な時間を大幅に増加させるため、パフォーマンスに影響します。

    • Oracle LogMiner を使用するには、各テーブルに少なくとも1つの主キーが必要です。

  4. 特定のデータベースの種類に応じて、以下の手順に従って、LogMiner を実行する権限をユーザーに付与します。

    スタンドアロンデータベース

    次のコマンドを送信して、LogMiner の実行権限を付与します。

    GRANT SELECT ON SYS.V_$DATABASE TO <Username>;
    GRANT SELECT ON SYS.V_$PARAMETER TO <Username>;
    GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO <Username>;
    GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO <Username>;
    GRANT EXECUTE ON DBMS_LOGMNR TO <Username>;
    GRANT EXECUTE ON DBMS_LOGMNR_D TO <Username>;
    GRANT SELECT ANY TRANSACTION TO <Username>;
    GRANT EXECUTE_CATALOG_ROLE TO <Username>;
       
    

    マルチテナントコンテナデータベース

    1. LogMiner の実行権限を付与する前に、次のコマンドを実行します。

      ALTER SESSION SET CONTAINER=CDB$ROOT;

    2. 次のコマンドを送信して、LogMiner の実行権限を付与します。

      GRANT SELECT ON SYS.V_$DATABASE TO <Username>;
      GRANT SELECT ON SYS.V_$PARAMETER TO <Username>;
      GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO <Username>;
      GRANT SELECT ON SYS.V_$ARCHIVE_DEST TO <Username>;
      GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO <Username>;
      GRANT EXECUTE ON DBMS_LOGMNR TO <Username>;
      GRANT EXECUTE ON DBMS_LOGMNR_D TO <Username>;
      GRANT SELECT ANY TRANSACTION TO <Username>;
      GRANT EXECUTE_CATALOG_ROLE TO <Username>;
      
  5. (Oracle 12 以降の場合)次のコマンドを送信して、ユーザーにログマイニング権限を付与します。

    GRANT LOGMINING TO <Username>;
    
  6. データベースを再起動します。

  7. Sync でOracle データソースでジョブを作成し、変更データキャプチャオプションを選択します。

CData Sync のOracle Flashback Query を有効化

  1. 次のステートメントを送信してtablespace を設定します。Note:System ユーザーとして接続する必要があります。

    CREATE TABLESPACE TablespaceName DATAFILE 'YourLocalFilepath' SIZE 100M AUTOEXTEND ON MAXSIZE 200M;
    

    上記のステートメントでは、YourLocalFilepath は、データファイルを作成するローカルマシン上の場所を指定します。次の例に示すように、パス内のファイル名には.dbf 拡張子が必要です。

    CREATE TABLESPACE UserData DATAFILE 'C:\Oracle19c\oradata\YourDataFile.dbf' SIZE 100M AUTOEXTEND ON MAXSIZE 200M;
    
  2. 次のステートメントを送信してアーカイブを作成します。

    CREATE FLASHBACK ARCHIVE ArchiveName TABLESPACE TablespaceName RETENTION 7 DAY;
    

    このステートメントでは、RETENTION は、アーカイブ情報がデータベースに保持される期間を指定します。ベストプラクティスとして、Sync がコンフリクトやエラーを解決する時間を確保できるように、保持期間を長く設定します。最後に正常に実行されたジョブが保持期間外であった場合(例:RETENTION が7日に設定されているが、最後に同期が成功したのが8日前であった場合)、Sync は自動的にテーブル全体を複製し、変更漏れがないことを確認します。

  3. 次のステートメントを送信して、各テーブルでFlashback Query を有効にします。(Flashback Query を有効にするテーブルごとに個別のステートメントが必要です。)

    ALTER TABLE TableName FLASHBACK ARCHIVE ArchiveName;
    

    Note:Flashback Query を使用するには、各テーブルに少なくとも1つの主キーが必要です。

  4. データベースを再起動します。

  5. Sync でOracle データソースでジョブを作成し、変更データキャプチャオプションを選択します。

差分レプリケーションのサポート

Oracle データソースは差分レプリケーションをサポートしています。差分レプリケーションによりワークロードが大幅に軽減され、帯域幅の使用と同期の遅延が最小限に抑えられます。データを差分ごとに移動させることで、遅いAPI や毎日のクオータに対処する際、非常に高い柔軟性を発揮します。

Oracle データソースのカラムに基づいて差分チェックカラムを構成する必要があります。

差分レプリケーションの設定方法の詳細は、差分レプリケーションを参照してください。

リバースETL 用のOracle を設定

Oracle をリバースETL のデータソースとして使用するには、まず新しいユーザーを作成し、CDATA_SYNC_DELTA_SNAPSHOT ユーザーとスキーマを事前に作成して、いくつかの権限を追加する必要があります。代わりに、既存のユーザーに権限を付与することもできます。これらの方法については、次のセクションで説明します。

新しいユーザーとスキーマを作成する

ステップ1:スキーマの作成

CDATA_SYNC_DELTA_SNAPSHOT という名前の新しいOracle ユーザーを作成します。このアクションにより、同じ名前のスキーマが自動的に作成されます。

ステップ2:必要なロールの付与

新しいユーザーに次のロールを付与します:

  • CONNECT - ユーザーがデータベースに接続できるようにします。

  • RESOURCE - オブジェクトの作成やスキーマ内でのDDL 操作の実行などを含む、一般的な権限を付与します。

ステップ3:データソーステーブルへの読み取りアクセス権の付与

新しいユーザーがデータソーステーブルから読み取りできるようにするには、SELECT 権限を付与します。これには2つの方法があります:

テーブルごと

GRANT SELECT on <LocalUser>.<TableName> TO CDATA_SYNC_DELTA_SNAPSHOT

テーブルスペース内のすべてのテーブルを対象

BEGIN FOR t IN (SELECT table_name FROM user_tables where TABLESPACE_NAME=<TBS_Name>) LOOP EXECUTE IMMEDIATE 'GRANT SELECT ON <LocalUser>.' || t.table_name || ' TO CDATA_SYNC_DELTA_SNAPSHOT'; END LOOP; END; / 

既存のユーザーに権限を付与する

別の方法として、既存のユーザーにCDATA_SYNC_DELTA_SNAPSHOT スキーマ内のテーブルの作成、変更、削除の権限を付与することもできます。付与後、Sync を設定して、そのユーザーでOracle に接続することができます。ただし、この方法では、ユーザーが任意のスキーマでテーブルを作成できるCREATE ANY TABLE システム権限を持っている必要があります。

詳細情報

CData Sync とOracle の連携について、詳しくはOracle Connector for CData Sync を参照してください。