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) を格納するように設計されています。
手順
-
アカウントを作成し、アカウントの権限を構成します。
後続の操作のためにデータベースログインアカウントを計画し、必要な Oracle 操作権限を持っていることを確認します。
-
アカウントを作成します。
次のコマンドを使用して、データベースアカウントを作成します。
create user test identified by example; -
権限を構成します。
次のコマンドを使用して、必要な権限をアカウントに割り当てます。
'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'; // 同期アカウントが欠落しているアーカイブログをクエリできるようにします。
-
-
アーカイブログ、補足ログを有効にし、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;説明REDO ログファイルを複数回切り替えることで、現在のログファイルがいっぱいになり、次のログファイルに遷移することが保証され、操作レコードの損失を防ぎ、データリカバリに役立ちます。
-
-
データベースの文字エンコーディングを確認します。
次のコマンドを実行して、データベースの文字エンコーディングを確認します。 データ同期前に、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 つの主要な文字データストレージタイプを示します。
-
データベーステーブルのデータ型を確認します。
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';を実行して、指定されたテーブルのすべての情報を表示し、データ型を判断します。