すべてのプロダクト
Search
ドキュメントセンター

Dataphin:Oracle データソースを構成する

最終更新日:Feb 06, 2025

Oracle データを Kafka に同期するリアルタイム同期タスクを作成する前に、このトピックを参照して、Oracle アカウントの権限を構成し、プライマリまたはセカンダリ Oracle データベースで補足ログを有効にしてください。

制限事項

  • Oracle では、プライマリデータベース内のプライマリまたはセカンダリデータベースでのみ補足ログを有効にすることがサポートされています。

  • Data Integration は現在、データ同期に UTF8、AL32UTF8、AL16UTF16、および ZHS16GBK エンコード形式のみをサポートしています。

  • Data Integration は、リアルタイム同期中に LONG、BFILE、LONG RAW、および NCLOB データ型をサポートしていません。

  • Oracle データのリアルタイム同期は、現在、Oracle 10g、11g、12c 非 CDB、18c 非 CDB、または 19c 非 CDB データベースバージョンに制限されています。 Oracle 12c CDB、18c CDB、および 19c CDB バージョンはサポートされていません。

    説明

    コンテナデータベース (CDB) は、Oracle 12c 以降のバージョンで導入された機能であり、複数のプラガブルデータベース (PDB) を格納するように設計されています。

手順

  1. アカウントを作成し、アカウントの権限を構成します。

    後続の操作のためにデータベースログインアカウントを計画し、必要な Oracle 操作権限を持っていることを確認します。

    1. アカウントを作成します。

      次のコマンドを使用して、データベースアカウントを作成します。

      create user test identified by example;
    2. 権限を構成します。

      次のコマンドを使用して、必要な権限をアカウントに割り当てます。'sync account' は、前に作成したアカウント名に置き換えます。

      grant create session to 'sync account';  // 同期アカウントがデータベースにログインできるようにします。
      grant connect to 'sync account';  // 同期アカウントがデータベースに接続できるようにします。
      grant select on nls_database_parameters to 'sync account';  // 同期アカウントが nls_database_parameters システム構成をクエリできるようにします。
      grant select on all_users to 'sync account';  // 同期アカウントがデータベース内のすべてのユーザーをクエリできるようにします。
      grant select on all_objects to 'sync account';  // 同期アカウントがデータベース内のすべてのオブジェクトをクエリできるようにします。
      grant select on DBA_MVIEWS to 'sync account';  // 同期アカウントがデータベースのマテリアライズドビューを表示できるようにします。
      grant select on DBA_MVIEW_LOGS to 'sync account';  // 同期アカウントがマテリアライズドビューログを表示できるようにします。
      grant select on DBA_CONSTRAINTS to 'sync account';  // 同期アカウントがすべてのテーブルの制約情報を表示できるようにします。
      grant select on DBA_CONS_COLUMNS to 'sync account';  // 同期アカウントが制約関連の列情報を表示できるようにします。
      grant select on all_tab_cols to 'sync account';  // 同期アカウントがテーブル、ビュー、およびクラスタの列情報を表示できるようにします。
      grant select on sys.obj$ to 'sync account';  // 同期アカウントが sys.obj$ テーブル内のオブジェクトを表示できるようにします。これはすべての Oracle オブジェクトを格納します。
      grant select on SYS.COL$ to 'sync account';  // 同期アカウントが SYS.COL$ の列定義を表示できるようにします。
      grant select on sys.USER$ to 'sync account';  // 同期アカウントが sys.USER$ システムテーブルを表示できるようにします。これはユーザセッションのデフォルトサービスです。
      grant select on sys.cdef$ to 'sync account';  // 同期アカウントが sys.cdef$ システムテーブルを表示できるようにします。
      grant select on sys.con$ to 'sync account';  // 同期アカウントが sys.con$ の制約情報を表示できるようにします。
      grant select on all_indexes to 'sync account';  // 同期アカウントがすべてのデータベースインデックスを表示できるようにします。
      grant select on v_$database to 'sync account';  // 同期アカウントが v_$database ビューを表示できるようにします。
      grant select on V_$ARCHIVE_DEST to 'sync account';  // 同期アカウントが V_$ARCHIVE_DEST ビューを表示できるようにします。
      grant select on v_$log to 'sync account';  // 同期アカウントが v_$log ビューを表示できるようにします。ログファイル情報が表示されます。
      grant select on v_$logfile to 'sync account';  // 同期アカウントが v_$logfile ビューを表示できるようにします。REDO ログファイル情報が含まれています。
      grant select on v_$archived_log to 'sync account';  // 同期アカウントが v$archived_log ビューを表示できるようにします。アーカイブログ情報が含まれています。
      grant select on V_$LOGMNR_CONTENTS to 'sync account';  // 同期アカウントが V_$LOGMNR_CONTENTS ビューを表示できるようにします。
      grant select on DUAL to 'sync account';  // 同期アカウントが DUAL テーブルを表示できるようにします。これは select 構文で使用される仮想テーブルです。
      grant select on v_$parameter to 'sync account';  // 同期アカウントが v_$parameter ビューを表示できるようにします。これは動的ディクショナリテーブルです。
      grant select any transaction to 'sync account';  // 同期アカウントがデータベース内の任意のトランザクションを表示できるようにします。
      grant execute on SYS.DBMS_LOGMNR to 'sync account';  // 同期アカウントがトランザクション分析およびデータリカバリのために Logmnr ツールを使用できるようにします。
      grant alter session to 'sync account';  // 同期アカウントがデータベース接続を変更できるようにします。
      grant select on dba_objects to 'sync account';  // 同期アカウントがすべてのデータベースオブジェクトを表示できるようにします。
      grant select on v_$standby_log to 'sync account';  // 同期アカウントが v_$standby_log ビューを表示できるようにします。スタンバイデータベースログが含まれています。
      grant select on v_$ARCHIVE_GAP to 'sync account';  // 同期アカウントが欠落しているアーカイブログをクエリできるようにします。
  2. アーカイブログ、補足ログを有効にし、REDO ログファイルを切り替えます。

    プライマリデータベースで次の操作を実行します。

    1. アーカイブログを有効にします。 次の SQL 文を使用します。

      shutdown immediate;
      startup mount;
      alter database archivelog;
      alter database open;
    2. 補足ログを有効にします。

      次の SQL 文を使用して、有効にする適切な補足ログを選択します。

      alter database add supplemental log data(primary key) columns; // プライマリキー列の補足ログを有効にします。
      alter database add supplemental log data(unique) columns; // 一意なインデックス列の補足ログを有効にします。
    3. REDO ログファイルを切り替えます。

      補足ログを有効にした後、次のコマンドを使用して REDO ログファイルを複数回 (通常は 5 回) 切り替えます。

      alter system switch logfile;
      説明

      REDO ログファイルを複数回切り替えることで、現在のログファイルがいっぱいになり、次のログファイルに遷移することが保証され、操作レコードの損失を防ぎ、データリカバリに役立ちます。

  3. データベースの文字エンコーディングを確認します。

    次のコマンドを実行して、データベースの文字エンコーディングを確認します。 データ同期前に、UTF8、AL32UTF8、AL16UTF16、または ZHS16GBK ではないエンコーディングを変更します。

    select * from v$nls_parameters where PARAMETER IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
    • v$nls_parameters は、データベースパラメータ設定を格納します。

    • NLS_CHARACTERSET および NLS_NCHAR_CHARACTERSET は、それぞれ文字セットと国別文字セットを表し、Oracle の 2 つの主要な文字データストレージタイプを示します。

  4. データベーステーブルのデータ型を確認します。

    LONG、BFILE、LONG RAW、および NCLOB データ型フィールドを持つテーブルをリアルタイム同期タスクリストから除外するか、同期前にフィールド型を変更します。 SQL 文 (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'; を実行して、指定されたテーブルのすべての情報を表示し、データ型を判断します。