Professional Documents
Culture Documents
Oracle Qlik Replicate
Oracle Qlik Replicate
ソース・ターゲットエンドポイント
としての利用
クリックテック・ジャパン株式会社
• Qlik Replicate側での基本セットアップ
• Qlik Replicateからデータベースへアクセスするユーザーの追加
• Oracle側での基本セットアップ
• Qlik Replicateでのエンドポイント定義
• Oracle on Oracle Cloudの追加情報
• Amazon RDS for Oracleの追加情報
• 詳細情報
• 制限事項など
• Oracleのターゲットとしての利用
• Qlik Replicate側での基本セットアップ
• Qlik Replicateからデータベースへアクセスするユーザーの追加
• Oracle側での基本セットアップ
• Qlik Replicateでのエンドポイント定義
• データ型
• 制限事項など
2
© 2019 QlikTech International AB. All rights reserved.
サポートされているエディション
Qlik レプリケートは、次のOracleデータベースエディションをサポートします。
Qlik ReplicateでサポートされるOracleバージョンの詳細についてはは、「サポートされるプラットフォームとエンドポイント」を参照してください。
3
Oracleのソースとしての利用
4
© 2019 QlikTech International AB. All rights reserved.
変更データキャプチャー (CDC) の方式の選択
Oracle の変更データをキャプチャーは、OracleのREDO ログ(およびArchiveログ)を読み取って行われます。このREDOログを読み取る方式とし
て、 Replicate Log ReaderとLogMiner の 2 つの方法が提供されており、いずれかを選択します。以下それぞれの特長をご説明します。
LogMiner
• OracleのユーティリティであるLogMinerの仕組みを利用した変更データキャプチャー方式です。
• Oracleデータベース側でレプリケーションの対象となる変更のみが選別され、Qlik Replicate側にSQLステートメントとして転送されます。
• そのため、Replicate Log Readerの方式と比較して、変更データ転送のためのネットワーク帯域の利用は少なくなりますが、Oracle データベースをホ
ストするサーバーの CPU/メモリ 消費は多くなる傾向があります。
• LogMiner では、暗号化オプションや圧縮オプションなど、ほとんどの Oracle オプションがサポートされています。(Replicate Log Reader ではサ
ポートが限定的です。)
• Oracle Automatic Storage Management (ASM)を使ってREDOログファイルを管理している場合には、Replicate Log Readerと比較してよ
りシンプルな設定方法を提供します。
5
Redoログファイル – 方式選択のガイドライン
6
Qlik Replicate側での
基本セットアップ
7
WindowsでのOracle Instant Clientの設定
1. プラットフォームに適したインスタントクライアントパッケージをダウンロードします。(Basic Packageおよび、SQL*Plusを使っ
てOracleへの接続の確認を行う場合にはSQL*Plus Packageを導入します。)
Oracle Instant Client Downloads
2. 単一のディレクトリ(C:\oracle\instantclient_19_12)にZIPファイルの内容を展開します。
3. このディレクトリを PATH環境変数に追加します。
4. Qlik Replicate Serverサービスを再起動します。
8
LinuxでのOracle Instant Clientの設定
• Windowsシステムでは、Oracle Instant Client for Linux (x86-64) Version 11.2.0.3.0以降をインストールします。
最新のサポート情報については、Client prerequisites ‒ Qlik Replicateのサイトをご確認ください。
• 以下はインストール手順の例を示します。手順詳細については、下記Oracle Instant Clientダウンロードサイトに記載の手順をご確認ください。
1. プラットフォームに適したインスタントクライアントパッケージをダウンロードします。(Basic Packageおよび、SQL*Plusを使ってOracleへの接続
の確認を行う場合にはSQL*Plus Packageを導入します。)
Oracle Instant Client Downloads
2. 単一のディレクトリ(/opt/oracle/instantclient_19_12)にZIPファイルの内容を展開します。
3. このディレクトリを LD_LIBRARY_PATH環境変数に設定するための以下の行を/opt/attunity/replicate/bin/site_arep_login.shファ
イルに追加します。
export LD_LIBRARY_PATH=/opt/oracle/instantclient_19_12:$LD_LIBRARY_PATH
4. Qlik Replicate Serverサービスを再起動します。
/opt/attunity/replicate/bin/areplicate restart
9
Qlik Replicateからデータ
ベースへアクセスする
ユーザーの追加
10
Replicateユーザーへの必要なOracleアクセス権限の付与
• 以下をOracle上で実行して、Qlik ReplicateからOracleへのアクセスに利用されるユーザー作成・権限付与を行います。
• 以下は「replicate_user」という名称のユーザーを作成し、網羅的な権限を付与する例となります。必要なレプリケーション方式や環境などにより必要
となる権限が異なりますので、権限を絞り込む場合などの詳細は次項以降をご確認ください。
/* Qlik Replicate用のユーザー作成 */ GRANT SELECT on SYS.ENC$ TO replicate_user;
CREATE USER replicate_user GRANT SELECT on DBA_TABLESPACES TO replicate_user;
IDENTIFIED BY "replicate_password" GRANT SELECT on ALL_TAB_PARTITIONS TO replicate_user;
DEFAULT TABLESPACE users GRANT SELECT on ALL_ENCRYPTED_COLUMNS TO replicate_user;
TEMPORARY TABLESPACE temp; GRANT SELECT on ALL_VIEWS TO replicate_user /*Viewが利用される場合に必要*/ ;
GRANT SELECT ANY TABLE TO replicate_user /*テーブルリストのパターンを使用する場合に追加。特定のテーブ
/* Qlik Replicate Reader、LogMinerの両方に必要な権限付与 */ ルを対象とする場合にはSELECT on <any-replicated-table>;でも可*/ ;
GRANT SELECT ANY TRANSACTION TO replicate_user; GRANT ALTER ANY TABLE TO replicate_user /*Qlik ReplicateがSupplemental loggingを自動的に追加
GRANT SELECT on V_$ARCHIVED_LOG TO replicate_user; する場合に必要。 特定のテーブルを対象とする場合にALTER on <any-replicated-table>;でも可*/ ;
GRANT SELECT on V_$LOG TO replicate_user; GRANT SELECT on V_$STANDBY_LOG TO replicate_user /*Oracleスタンバイデータベースにアクセスする場合
GRANT SELECT on V_$LOGFILE TO replicate_user; に必要*/ ;
GRANT SELECT on V_$DATABASE TO replicate_user; GRANT SELECT on all_nested_tables TO replicate_user /*Oracleのネスト表にアクセスする場合に必要*/ ;
GRANT SELECT on V_$THREAD TO replicate_user; GRANT SELECT on all_nested_table_cols TO replicate_user /*Oracleのネスト表にアクセスする場合に必要
GRANT SELECT on V_$PARAMETER TO replicate_user; */ ;
GRANT SELECT on V_$NLS_PARAMETERS TO replicate_user;
GRANT SELECT on V_$TIMEZONE_NAMES TO replicate_user; /* Qlik Replicate Readerを利用する場合に必要な権限*/
GRANT SELECT on V_$TRANSACTION TO replicate_user; GRANT CREATE SESSION TO replicate_user;
GRANT SELECT on V_$CONTAINERS TO replicate_user; GRANT SELECT on V_$TRANSPORTABLE_PLATFORM TO replicate_user;
GRANT SELECT on ALL_INDEXES TO replicate_user; GRANT SELECT on V_$DATABASE_INCARNATION TO replicate_user;
GRANT SELECT on ALL_OBJECTS TO replicate_user; GRANT CREATE ANY DIRECTORY TO replicate_user;
GRANT SELECT on DBA_OBJECTS TO replicate_user /*Oracleのバージョンが11.2.0.3より前の場合に必要 GRANT EXECUTE on DBMS_FILE_TRANSFER TO replicate_user;
*/ ; GRANT EXECUTE on DBMS_FILE_GROUP TO replicate_user;
GRANT SELECT on ALL_TABLES TO replicate_user;
GRANT SELECT on ALL_USERS TO replicate_user; /* LogMinerを利用する場合に必要な権限 */
GRANT SELECT on ALL_CATALOG TO replicate_user; GRANT CREATE SESSION TO replicate_user;
GRANT SELECT on ALL_CONSTRAINTS TO replicate_user; GRANT EXECUTE on DBMS_LOGMNR TO replicate_user;
GRANT SELECT on ALL_CONS_COLUMNS TO replicate_user; GRANT SELECT on V_$LOGMNR_LOGS TO replicate_user;
GRANT SELECT on ALL_TAB_COLS TO replicate_user; GRANT SELECT on V_$LOGMNR_CONTENTS TO replicate_user;
GRANT SELECT on ALL_IND_COLUMNS TO replicate_user; GRANT LOGMINING TO replicate_user /*Oracleのバージョンが12c以降の場合に必要*/ ;
GRANT SELECT on ALL_LOG_GROUPS TO replicate_user;
GRANT SELECT on SYS.DBA_REGISTRY TO replicate_user;
11
GRANT SELECT on SYS.OBJ$ TO replicate_user;
アクセス権限の詳細解説
一般的なアクセス許可
12
アクセス権限の詳細解説
一般的なアクセス許可
特定のテーブルリストを使用する場合は、(レプリケートするテーブルごとに) 次の追加の特権を付与します。
• SELECT on <any-replicated-table>;
テーブルリストのパターンを使用する場合は、以下の追加特権を付与します。
• SELECT ANY TABLE;
Oracle スタンバイ・データベースにアクセスする場合は、以下の特権を付与する必要があります。
• SELECT on V$STANDBY_LOG
ネスト表にアクセスする場合は、次の権限を付与する必要があります。
• SELECT on all_nested_tables
• SELECT on all_nested_table_cols
13
アクセス権限の詳細解説
Replicate Log Readerを使用して再実行ログにアクセスする場合のアクセス特権
Replicate Log Readerを使用して Redoログにアクセスする場合は、Oracle エンドポイント設定で指定されたユーザーに次の権限を付与する必要があります。
• CREATE SESSION
• SELECT on V_$TRANSPORTABLE_PLATFORM
REDO ログが ASM に格納され、ASM からのレプリケートによってアクセスされる場合
• SELECT ON V_$DATABASE_INCARNATION
14
アクセス権限の詳細解説
Replicate Log Readerを使用して再実行ログにアクセスする場合のアクセス特権
• 参照 :接続の詳細プロパティの設定も参照してください。
15
アクセス権限の詳細解説
Oracle LogMiner を使用して再実行ログにアクセスする場合のアクセス権限
• CREATE SESSION
• EXECUTE on DBMS_LOGMNR
• SELECT on V_$LOGMNR_LOGS
• SELECT on V_$LOGMNR_CONTENTS
• LOGMINING
16
アクセス権限の詳細解説
必要なASMの権限
17
Oracleデータベース
側での基本セットアップ
18
Archive Logの設定
• Qlik ReplicateでOracleデータベースの変更データキャプチャーを行うには、OracleでArchive LogモードがONになっている必要があります。
データベースの現在のArchive Logモードを確認するには以下のコマンドを実行します。
• 上記の様にNOARCHIVELOGのモードとなっている場合には以下の手順でARCHIVELOGのモードへ変更する必要があります。
/* データベース停止 */
shutdown immediate
/* データベースをMOUNT状態で起動 */
startup mount
/* Archive Logモード切替 */
alter database archivelog;
/* データベースをMOUNT状態で起動 */
alter database open;
/* Archive Logモード確認 */
select log_mode from v$database;
19
Archive Logの設定
Archive Logのログの状況は以下のコマンドでも確認することができます。
Archive Logのファイル一覧は以下で確認することができます。
NAME
--------------------------------------------------------------------------------
SEQUENCE#
----------
C:\APP\ORACLE\PRODUCT\19.3.0\DBHOME_1\RDBMS\ARC0000000001_1081858333.0001
/* Supplemental Loggingの設定の確認 */
select SUPPLEMENTAL_LOG_DATA_MIN from v$database;
SUPPLEME
--------
NO
上記の様に無効となっている場合には以下の手順でSupplemental Loggingが有効化する必要があります。
/* Supplemental Loggingの有効化 */
alter database add supplemental log data;
21
Supplemental Loggingの設定
Qlik Replicate上のOracleエンドポイント設定で[Automatically add supplemental logging]をオンにして自動的にSupplemental
Loggingの追加を行わない場合、手順2・3の手順で手動でSupplemental Loggingの設定を行う必要があります。
手順 2: 各テーブルに必要なSupplemental Loggingが追加されていることを確認する
• 主キーが存在する場合:主キーのSupplemental Loggingを追加する必要があります。
ALTER TABLE <テーブル名> ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
• 主キーが存在しないが、一意インデックスが1つある場合:一意インデックスのすべての列をSupplemental Loggingに追加する必要があります。
SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS を使用しても、一意のインデックス列はログに追加されません。
ALTER TABLE <テーブル名> ADD SUPPLEMENTAL LOG GROUP <Log Group名> (<一意インデックス列名1>[, <一意インデックス列名2>] ...) ALWAYS;
• 主キーが存在しないが、テーブルに複数の一意インデックスがある場合:最初の一意インデックスにSupplemental Loggingを追加します。Qlik
Replicateは、アルファベット順の昇順リストの最初のインデックスを使用します。 SUPPLEMENTAL LOG DATA (UNIQUE INDEX)
COLUMNS を使用しても、一意のインデックス列はログに追加されません。
22
Supplemental Loggingの設定
手順 2: 各テーブルに必要な補足ログが追加されていることを確認する(続き)
• 主キーがなく、一意インデックスがない場合:すべての列にSupplemental Loggingを追加する必要があります。
※ ターゲットテーブルの主キー/一意インデックスがソーステーブルの主キー/一意インデックスと異なる場合、ユーザはターゲットテーブルの主キー/一意イ
ンデックスを構成するソーステーブルの列に手動でSupplemental Loggingを追加する必要があります。
※ ターゲット表の主キーを変更する場合:元の主キー/ユニーク索引の列ではなく、選択したインデックスの列にSupplemental Loggingを追加す
る必要があります。
23
Supplemental Loggingの設定
手順 3: テーブルに対してフィルタまたは変換が定義されている場合、追加のログが必要になる場合があります。
※ ALL COLUMNS の補足ログがテーブルに追加されている場合は、追加のロギングを追加する必要はありません。
• テーブルに一意インデックスまたは主キーがある場合は、フィルタまたは変換に関連する各列に追加のsupplemental logging を追加する必要があ
ります (列が主キー列または一意インデックス列と異なる場合)。
※ 変換で使用される列が1つのみの場合、この列はsupplemental loggingグループに追加されない場合があります。たとえば、“A+B” は両
方の列を追加する必要がありますが、substring(A, 10) は“A”を追加する必要はありません。
• 主キー/一意インデックスのsupplemental loggingと、特定の列のsupplemental loggingの両方を設定する方法の1つは、主キー/一意イン
デックス列と、フィルタまたは変換された列に対してのみ、USER_LOG_GROUPのsupplemental loggingを追加することです。
※ たとえば、主キーのID列で、NAME列でフィルタを使用するEXAMPLE という名前のテーブルをレプリケートする場合、次のようなコマンドを実行
して、ロググループのsupplemental loggingを作成できます。
ALTER TABLE EXAMPLE.TABLE ADD SUPPLEMENTAL LOG GROUP example_log_group (ID,NAME) ALWAYS;
24
Qlik Replicateでの
エンドポイント定義
25
一般的な接続プロパティの設定
//host:port/service name
※ マルチテナント環境で作業する場合、接続文字列は特定のPDBを指定する必要
があります。
26
一般的な接続プロパティの設定
異なる RAC インスタンスに対する個別の接続文字列の指定
• Oracle エンドポイントがReplicate Log Reader使用するように構成されており、レプリケートが接続されているノードが他のクラスタノードによって作成
されたログにアクセスできない場合は、RAC インスタンスごとに個別の接続文字列を指定する必要があります。REDO ログが ASM に格納されている場
合、接続文字列の構文は次のとおりです。
[<common ASM connection string>,] <thread id> <thread ASM connection string>, <thread id> <thread ASM
connection string>...
<Oracle connection string>[, <thread id>, <thread BFILE connection string>, <thread id>, <thread BFILE
connection string> ...]
27
高度な接続プロパティの設定(Replicate Log Reader)
このセクションでは、レプリケーション ログ リーダーを使用して REDO ログにアクセスするときに、[Advanced]タブで使用できるプロパティについて説明します。
• ASM Parameters (if redo logs are stored in ASM) - 使用している Oracle
Redoログが自動ストレージ管理 (ASM) を使用して保存されている場合は、指定された
フィールドに必要なアクセス情報を入力します。
※ ASMのRedoログにアクセスするには追加の権限を付与する必要があります。
28
高度な接続プロパティの設定(Replicate Log Reader)
[Using the path as it appears in the database]を選択した場合:
• Replicate has file-level access to the redo log files: Qlik Replicateがインストー
ルされているローカル コンピューターのファイル システムから直接 Redo ログにアクセスして読み取る場
合に選択します。
29
高度な接続プロパティの設定(Replicate Log Reader)
※ このオプションを構成する場合、フォルダー内の各再実行ログの名前は、 current
sequence、thread、destination IDがv$archived_logビューによって返される名
前と同じである必要があります。 v$archived_logビューは、ログの状態が ACTIVE (
つまり、ログが存在する) の場合にのみ、Redoログ名を返すため、Replicateは、ステータ
スが ACTIVE でないときにアクセスするRedoログを判断できません。
30
高度な接続プロパティの設定(Replicate Log Reader)
• Retry interval : カウンタを使用するか、システムがクエリを再送信するまでの待ち時間を
秒数で入力します。
31
高度な接続プロパティの設定(Replicate Log Reader)
• Use archived redo logs only: このオプションを選択すると、Qlik Replicateは
アーカイブされたRED ログにのみアクセスします。アーカイブされた REDO ログが ASMの
みに保存されている場合、Qlik ReplicateユーザーにはASM 特権を付与する必要が
あります。
32
高度な接続プロパティの設定(Replicate Log Reader)
[Replacing the path prefix]を選択した場合:
• Replace path prefix: 相対パスを変更せずに、別のルートの場所から REDO ログを読み取るかどうかを指定できます。Redoログの現在の場所へのパスの最初の部分を
入力します。このフィールドには、1 つのフォルダまたはディレクトリ レベル、または複数のフォルダまたはディレクトリを含めることができます。例) C:¥OldFolder
例1:
RedoログがC:¥OldFolder¥archive¥logsにあり、[Replace path prefix]フィールドにC:¥OldFolderを指定し、[With] フィールドにC:¥NewFolder を指定
した場合、Redoログは次の場所から読み取られます。
C:\NewFolder\archive\logs
例2:
RedoログがC:¥temp¥oracle¥logs¥archive¥RedoLogsにあり、 [Replace path prefix]フィールドにC:¥temp¥oracle¥logsを指定し、 [With]フィールド
にC:¥companyNameを指定すると、Redo ログは次の場所から読み取られます。
C:\companyName\archive\RedoLogs
33
高度な接続プロパティの設定(Replicate Log Reader)
• Apply prefix replacement to online and archived redo logs : オンライン
およびアーカイブされた REDOログにプレフィックスの置換を適用する場合に選択します。
• Replicate has file-level access to the new location : Qlik
Replicateがインストールされているローカル コンピューターのファイル システムから直接
オンラインおよびアーカイブされたREDOログファイルにアクセスして読み取る場合に選択
34
高度な接続プロパティの設定(Replicate Log Reader)
• Retry interval : カウンタを使用するか、システムがクエリを再送信するまでの待ち時間を
秒数で入力します。
35
高度な接続プロパティの設定(Replicate Log Reader)
• Use archived redo logs only: このオプションを選択すると、Qlik Replicateは
アーカイブされたRED ログにのみアクセスします。アーカイブされた REDO ログが ASMの
みに保存されている場合、Qlik ReplicateユーザーにはASM 特権を付与する必要が
あります。
36
高度な接続プロパティの設定(Oracle LogMiner)
このセクションでは、Oracle LogMiner を使用して REDO ログにアクセスする場合に、[Advanced] タブで使用できるプロパティについて説明します。
37
高度な接続プロパティの設定(Oracle LogMiner)
• Expose NUMBER as: 次のいずれかを選択します。
A precision-scale combination
FLOAT
VARCHAR
38
高度な接続プロパティの設定(Oracle LogMiner)
特定のテーブルで TDE 列の暗号化に使用されるウォレット エントリを検索する
Oracle ウォレットエントリを見つけるには、次の手順を実行します。
2. 次のクエリで取得したobject_idを使用して、関連するマスター キーを返します。
select mkeyid from sys.enc$ where obj#=OBJECT_ID;
3. 次のように、Oracle ウォレットからキー値を選択します。
mkstore –wrl <full_wallet_name> -viewEntry <entry_name>
4. マスターキーエントリとその値をそれぞれ[Names]フィールドと[Values]フィールドにコピーします。
39
Oracle on Oracle
Cloudの追加情報
40
Oracle on Oracle Cloud
Oracleクラウド上のOracleからレプリケーションを行う場合、以下の制限が適用されます。
• Oracle LogMiner を使用したRedoログファイルへのアクセスはサポートされていません。
• アクセス許可が不十分なため、エンドポイント設定の[Advanced] タブの次のオプションはサポートされていません。
Replicateが、REDO ログ ファイルへのファイル レベルのアクセスを持つ。
PathのPrefixを置き換える
41
Amazon RDS for
Oracleの追加情報
42
Amazon RDS for Oracleの考慮事項と制限事項
43
Amazon RDS for Oracleに必要なアクセス権限
このトピックでは、Oracle 用 Amazon RDS からレプリケートするときに必要なアクセス許可について説明します。次の特権を付与します。
44
Amazon RDS for Oracleに必要なアクセス権限
次のステートメントを実行します。
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_VIEWS', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_PARTITIONS', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_INDEXES', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_OBJECTS', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TABLES', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_USERS', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CATALOG', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONSTRAINTS', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONS_COLUMNS', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_COLS', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_IND_COLUMNS', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_LOG_GROUPS', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOG', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGFILE', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$THREAD', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$NLS_PARAMETERS', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TIMEZONE_NAMES', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSACTION', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$CONTAINERS', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_REGISTRY', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('OBJ$', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_ENCRYPTED_COLUMNS', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS', 'REPLICATE_USER', 'SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','REPLICATE_USER','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR', 'REPLICATE_USER', 'EXECUTE');
-- (as of AWS DMS versions 3.3.1 and later and as of Oracle versions 12.1 and later)
exec rdsadmin.rdsadmin_util.grant_sys_object('REGISTRY$SQLPATCH', 'REPLICATE_USER', 'SELECT');
45
Supplemental Loggingの設定
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD’);
• Supplemental Logging属性を変更するために実行できる追加コマンドの例を次に示します。
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','ALL');
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('DROP','PRIMARY KEY');
46
自動バックアップの有効化
• AWS Management Consoleにサインインして、https://console.aws.amazon.com/rds/で Amazon RDS コンソールを開きます。
• Amazon RDS for Oracleのデータベースインスタンスの設定画面を開き、[メンテナンスとバックアップ]タブから自動バックアップオプションが有効
化されていることを確認します。
47
アーカイブログの設定
48
Replicate Load Readerを使ったRedoログへのアクセス
次の手順は、Replicate Log Readerを使用して再実行ログにアクセスする場合にのみ関連します。
オンラインログとアーカイブログ用のディレクトリを作成する
• [ログ リーダーのレプリケート] を使用するには、オンラインログとアーカイブ ログのディレクトリを作成する必要があります。
• ディレクトリを作成するには、次のコマンドを実行します。
exec rdsadmin.rdsadmin_master_util.create_archivelog_dir;
exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
※ 以下のクエリで作成したディレクトリの結果の参照が可能です。(もしくはdba_directoriesを参照)
select directory_path from all_directories where directory_name in ('ONLINELOG_DIR','ARCHIVELOG_DIR’);
置換パスプレフィックスパラメータの設定
• Replicate Log Readerを使用するには、[Advanced] タブの [Replace path prefix] オプションを次の値で設定する必要があります。
• パスプレフィックスを /rdsdbdata/db/ORCL_A/ から /rdsdbdata/log/ の値に置き換えます。
制限事項と考慮事項
以下の Oracle 機能は、Amazon RDS for Oracle でのレプリケーションログリーダーの使用時にはサポートされません。
• ASM
• TDE
49
詳細情報
50
サポートされている暗号化方法
以下の表は、Oracle ソース データベースを操作する際に Qlik Replicateがサポートする暗号化方法を示しています。
51
TDE暗号化に使用されるWalletエントリの検索
TDE テーブルスペース暗号化または TDE 列暗号化に使用される正しい暗号化キーを指定するには、まず、暗号化キーを含む Oracle Walletの関連
エントリ (複数のキーの場合は複数のキーの場合はエントリ) を検索する必要があります。関連するエントリが見つかったら、エントリとその値 (または複数の
場合はエントリと値) をそれぞれ[Names]フィールドと[Values ]フィールドにコピーします。
Oracle ウォレットエントリを見つけるには、次の手順を実行します。
1. ENCRYPTION_WALLET_LOCATIONパラメータが sqlnet.ora ファイルで定義されている場合は、このパラメータで定義されたディレクトリからウォレ
ットを使用します。
2. WALLET_LOCATIONパラメータが sqlnet.ora ファイルで定義されている場合は、このパラメータで定義されたディレクトリからウォレットを使用します。
3. それ以外の場合は、デフォルトのデータベースの場所でウォレットを使用します。
ウォレットの名前はewallet.p12です。
4. Oracle mkstoreユーティリティの「list」オプションを使用して、ORACLE.SECURITY.DB/TS.ENCRYPTION.<SUFFIX>エントリ名を判別します。
mkstore –wrl <full wallet name> -list
5. Redo ログの暗号化にどのエントリ/エントリが使用されているかがわかっている場合は、エントリ名を選択し、Oracle mkstore ユーティリティの
“viewEntry” オプションを使用してエントリ値を次のように判別します。
mkstore –wrl <full wallet name> -viewEntry <entry name>
52
サポートされている圧縮方法
53
サポートされるスタンバイ構成
次の表に、サポートされる Oracle スタンバイ構成を示します。
スタンバイ構成 サポート 備考
スナップショットスタンバイ はい -
物理スタンバイ はい • 物理スタンバイ・データベースでは、Active Data Guardが有効になっている必要があります
(Oracle 11g 以降から使用可能)。
• Oracle LOG_ARCHIVE_DEST_n初期化パラメータが DELAY オプションで構成されてい
る場合、Oracle 物理スタンバイインスタンスでFull Loadおよび変更の適用タスクを実行すると、
ターゲット データベース内のデータが欠落または誤った結果になる可能性があります。これは、レ
プリケートが Redo ログの変更のタイムスタンプを、Full Loadを実行した Oracle インスタンス
のタイムスタンプとして解釈するのに対し、実際には変更が発生したOracle インスタンス (プライ
マリ Oracle インスタンス) のタイムスタンプであるためです。結果として生じるタイムスタンプの不
一致は、Redo ログの変更の一部が「古い」と解釈され、複製されないことを意味します。この
問題は、内部パラメータを使用して解決できます。このパラメータについては、Qlikサポートにお
問い合わせください。
論理スタンバイ いいえ -
ホットスタンバイ いいえ -
54
Shrink Spaceの操作の扱い
監視に関する考慮事項
• REPLICATEが SHRINK SPACE 操作の結果生じた変更をキャプチャする場合、タスクの受信変更バーには、
異常に多くの変更が表示されます。ただし、これらの変更は、適用された変更の円グラフまたは適用された変更
の詳細テーブルには反映されません。
• ログ リーダーと LogMiner のレプリケーション モードでの SHRINK SPACE 操作に関連する制限事項について
は、「制限事項と考慮事項」のセクションも参照してください。
55
ネストした表のレプリケート
56
ネストした表のレプリケート
前提 条件
すべてのレプリケートされるネストテーブルの親テーブルもレプリケートすることを確認します。親テーブル (ネストされたテーブル列を含むテーブル) と子テー
ブル (つまり、ネストされた) テーブルの両方が、Replicateで選択できます。
サポートされている入れ子になったテーブルの型
次のネストした表の種類がサポートされています。
• データ型
• ユーザー定義オブジェクト
制限
• 1 レベルのネストのみがサポートされます。
• レプリケートでは、親テーブルと子テーブルの両方がレプリケーション用に選択されていることを確認しません。つまり、子なしの親テーブルを選択するこ
とも、親テーブルも選択できます。
57
ネストテーブルのレプリケート
ネストテーブルがレプリケートされる方法
親テーブルとネストされたテーブルは、次のようにターゲットにレプリケートされます。
• 親テーブルは、ソースと同様に作成されます。ネストされた列は RAW(16) として定義され、NESTED_TABLE_ID列にネストされたテーブ
ルへの参照が含まれます。
• 子テーブルはソースと同様に作成されますが、親の入れ子になった列と同じ型で、同じ意味を持つNESTED_TABLE_IDという名前の列が
追加されます。
JOIN ステートメントの例
親テーブルをフラット化するには、次の例に示すように、DBA は親テーブルと子テーブルの間で JOIN ステートメントを実行する必要があります。
タイプ テーブルを作成:
CREATE OR REPLACE TYPE my_tab_t AS TABLE OF VARCHAR2(30);
上記で定義した型my_tab_tの列を持つ親テーブルを作成:
CREATE TABLE my_parent_table (id NUMBER PRIMARY KEY, col1 my_tab_t) NESTED TABLE col1 STORE AS
col1_tab;
my_parent_tableを平坦化:
Select … from my_parent_table parent, col1_tab child where child.nested_table_id = parent.col1
58
データ型
• Qlik レプリケート用の Oracle データベースは、ほとんどの Oracle データ型をサポートします。次の表は、Qlik レプリケートを使用する場合にサポートされる
Oracle ソース データ型と、Qlik レプリケートデータ型への既定のマッピングを示しています。
59
データ型
Oracleデータ型 Qlik Replicateデータ型
長さ<= 4000 バイト:
WSTRING
NVARCHAR2
長さ> 4000 バイト:
NCLOB
長さ<= 2000 バイト:
BYTES
RAW
2000 バイト>長さ:
BLOB
REAL REAL8
BLOB
このデータ型をQlik Replicateで使用するには、特定のタスクに対してBLOBの使用を有効にする必要があります。
BLOB
CDC 中または [Allow unlimited LOB size] オプションが有効になっている場合のフル ロード中は、LOB データ型
は主キーを持つテーブルでのみサポートされます。
CLOB
Qlik Replicateでこのデータ型を使用するには、特定のタスクに対してCLOBを使用できるようにする必要があります。
CLOB
CDC 中または [Allow unlimited LOB size] オプションが有効になっている場合のフル ロード中は、LOB データ型
は主キーを持つテーブルでのみサポートされます。
NCLOB
このデータ型をQlik レプリケートで使用するには、特定のタスクに対してNLOBの使用を有効にする必要があります。
NCLOB
CDC 中または[Allow unlimited LOB size] オプションが有効になっている場合のフル ロード中は、LOB データ型
は主キーを持つテーブルでのみサポートされます。
60
データ型
Oracleデータ型 Qlik Replicateデータ型
LONG
LONG RAW
XMLTYPE
61
サポートされていないデータ型
次のデータ型の列はサポートされておらず、レプリケートされません。
• BFILE
• ROWID
• REF
• UROWID
• ANYDATA
• SDO_GEOMETRY
• User-defined data types
※ 仮想列はサポートされていません。
※ ROWID データ・タイプはサポートされていないので、ROWID 列に基づくマテリアライズド・ビューもサポートされていません。
62
同種レプリケーション
Oracle ソースから Oracle ターゲットにレプリケートする場合、次の表に示すデータ型を除き、すべてのソースデータ型とターゲット データ型は同一になります。
• Oracle 9.0 以降では、LONG および LONG RAW データ型は Oracle ではサポートされなくなりました。
• プライマリ/一意のインデックス名は、同種レプリケーション時に保持されます。
• 同種レプリケーションでは、ソース データは最初にQlik Replicateデータ型を通過するため、その種類の制限が適用されます。
• データ型のレプリケートとその制限 (関連する場合) については、「データ型のレプリケート」を参照してください。
• Oracle からレプリケートするときにソース データが通過するレプリケートデータ型については、前述の Oracle to Qlik レプリケートデータ型マッピング テーブルを参照してください。
LONG CLOB
LONG RAW データ・タイプは、Batch Optimized Applyモードではサポートされていません。
63
制限事項など
64
制限事項と考慮事項
• CHAR 列から複製する場合、末尾のスペースは切り捨てられます。
• 関数ベースのインデックスはサポートされていません。
• supplemental loggingを管理していて、いずれかの列に対して変換を実行する場合は、すべてのフィールドと列に対してsupplemental loggingが有効になっていることを
確認する必要があります。
• AR_H_USERヘッダー列は、Oracle データベース バージョン 11.2.0.3 以降でのみサポートされます。Oracle データベース バージョン 10 では、この列の値が正しくない可能
性があります。ヘッダー列の使用については、「 Headers 」を参照してください。
• CDB への接続はサポートされていません。
• 仮想プライベート データベース (VPD) はサポートされていません。
• 遅延制約(Deferred Constraints)はサポートされていません。
• Oracle バージョン 11 以降を使用する場合、 rename table <table name> to <new table name>のシンタックスは、Qlik Replicateによってサポートされます。
• パーティション/サブパーティション操作 (追加、DROP、EXCHANGE、および TRUNCATE) の結果として生じるデータの変更はレプリケートされません d はレプリケートされず、
次のエラーが発生する可能性があります。
ADD 操作の場合、追加されたデータの更新および削除は、" 0 rows affected " 警告を返す場合があります。
DROP および TRUNCATE 操作の場合、新しい挿入は”duplicate”エラーを発生する可能性があります。
EXCHANGE 操作では、" 0 rows affected " 警告と " duplicate " エラーの両方が発生する可能性があります。
• パーティション/サブパーティション操作の結果として生じる変更を複製するには、対象のテーブルを再ロードする必要があります。新しい空のパーティションを追加すると、新しく追加
されたパーティションに対する操作は、通常どおりターゲットにレプリケートされます。
• 制限付き LOB モードが有効になっている場合、Oracle ソース上の空の LOB は NULL 値としてレプリケートされます。制限付き LOB モードの詳細については、「Task
Settings Metadata 」を参照してください。
• Oracle DBMS_REDEFINITIONパッケージ(テーブルメタデータやOBJECT_IDなど)による変更は、Qlik Replicateによってキャプチャされません。
• 空の BLOB/CLOB 列は、ターゲット上の NULL にマップされます。
• 変更処理中に、supplemental logging(LOB 列など) がなく更新されない列は、変更テーブルに NULL として挿入されます。
• 変更処理中に、主キーとして定義された数値列のバッチ更新はサポートされません。サポートされないUPDATEコマンドは以下の通り:
UPDATE tableX set ID=ID+1;
ここでtableXはテーブル名で、IDは主キーとして定義された数値列です。
65
制限事項と考慮事項
• LONG および LONGRAW 列を Oracle ターゲットにロードする場合は、[Allow unlimited LOB size]オプションはサポートされません。
回避策: 代わりに[Limit LOB size to (KB) ]オプションを使用します。
• アポストロフィが含まれる名前のテーブルは複製できません。
• 変更データ キャプチャ (CDC) は、動的ビュー(dynamic views)ではサポートされていません。
• オーバーフロー・セグメントを持つ索引構成表(Index-organized tables)は、変更処理 (CDC) タスクではサポートされません。
• [Allow unlimited LOB size] オプションが有効になっている場合のCDC 中またはフル ロード中は、LOB データ型は主キーを持つテーブルでのみサポートされます。
• キー圧縮を使用した索引構成表(Index-organized tables)の変更はサポートされていません。
• BIN$ または DR$ タイプのテーブルまたはビューのレプリケーションはサポートされていません。
• Oracle LogMiner を使用して再実行ログにアクセスする場合、次の制限が適用されます。
XMLTYPE 列および LOB 列への UPDATE はサポートされません。
SHRINK SPACE操作はサポートされていません
Oracle LogMiner を使用した PDB への接続はサポートされていません。
予測できない動作のため、RAC環境から複製する場合は Oracle LogMinerを使用しないことをお勧めします。
•Replicate Log Readerを使用して REDO ログにアクセスする場合、次の制限が適用されます。
テーブル クラスタはサポートされていません。
テーブルレベルの SHRINK SPACE 操作のみがサポートされます。これには、完全なテーブル、パーティション、およびサブパーティションが含まれます。
オンライン REDO ログを RAW デバイスに実装することはサポートされていません。
以下の Oracle 機能は、Amazon RDS for Oracle を使用する場合はサポートされません。
ASM
TDE
66
制限事項と考慮事項
• エスケープ文字 '\' を使用してテーブルの選択ウィンドウ内のテーブルを検索する場合は、 '\' (円記号 1) ではなく '\\' (2 つの円記号) を記述する必要があります。たとえば、
'_ 'を含むすべてのテーブルを検索するには、%\\_% を入力する必要があります。
※ includeまたはexcludeのパターンを追加する場合、2 つの円記号は必要ありません (たとえば、*%\_%)。
※ エスケープ文字に '$' を使用する場合、制限はありません。
• Oracle 19.0 をソースとして使用する場合、以下の Oracle 機能はサポートされません。
Data-guard DML リダイレクト
パーティション化されたハイブリッド テーブル
スキーマのみの Oracle アカウント
• Oracle 18.x からは、Oracle Express Editionからの変更キャプチャはサポートされていません。
• Oracleデータベースでは FULL after-imageが生成されないため、次の制限が適用されます:
Batch optimized applyモードで UPDATE を適用する場合、 INSERT the missing target recordのエラー処理オプションを、 Apply Changes using SQL MERGEオプショ
ンもサポートされません。これらのオプションのいずれかを選択すると、変更されていないすべてのユーザー定義データのターゲット列に NULL が挿入されます。
• 主キーを含まないレコードをフィルタする場合、フィルタ条件に含まれる列に対する完全なsupplemental loggingを持たないレコードに対する DELETE 操作のキャプチャはサポー
トされません。
• オブジェクト名が 30 文字を超える場合は、サポートされていません。したがって、名前が 30文字を超えるテーブル、または30文字を超える列名を含むテーブルはレプリケートされ
ません。
67
Oracleのターゲットとしての利用
68
Qlik Replicate側での
基本セットアップ
69
WindowsでのOracle Instant Clientの設定
1. プラットフォームに適したインスタントクライアントパッケージをダウンロードします。(Basic Packageおよび、SQL*Plusを使っ
てOracleへの接続の確認を行う場合にはSQL*Plus Packageを導入します。)
Oracle Instant Client Downloads
2. 単一のディレクトリ(C:\oracle\instantclient_19_12)にZIPファイルの内容を展開します。
3. このディレクトリを PATH環境変数に追加します。
4. Qlik Replicate Serverサービスを再起動します。
70
LinuxでのOracle Instant Clientの設定
• Windowsシステムでは、Oracle Instant Client for Linux (x86-64) Version 11.2.0.3.0以降をインストールします。
最新のサポート情報については、Client prerequisites ‒ Qlik Replicateのサイトをご確認ください。
• 以下はインストール手順の例を示します。手順詳細については、下記Oracle Instant Clientダウンロードサイトに記載の手順をご確認ください。
1. プラットフォームに適したインスタントクライアントパッケージをダウンロードします。(Basic Packageおよび、SQL*Plusを使ってOracleへの接続
の確認を行う場合にはSQL*Plus Packageを導入します。)
Oracle Instant Client Downloads
2. 単一のディレクトリ(/opt/oracle/instantclient_19_12)にZIPファイルの内容を展開します。
3. このディレクトリを LD_LIBRARY_PATH環境変数に設定するための以下の行を/opt/attunity/replicate/bin/site_arep_login.shファ
イルに追加します。
export LD_LIBRARY_PATH=/opt/oracle/instantclient_19_12:$LD_LIBRARY_PATH
4. Qlik Replicate Serverサービスを再起動します。
/opt/attunity/replicate/bin/areplicate restart
71
Qlik Replicateからデータ
ベースへアクセスする
ユーザーの追加
72
Replicateユーザーへの必要なOracleアクセス権限の付与
• Qlik ReplicateからOracleターゲットへのアクセスに利用されるユーザーに以下の権限付与を行います。
73
Qlik Replicateでの
エンドポイント定義
74
一般的な接続プロパティの設定
//host:port/service name
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)
(HOST=dlsun242) (PORT=5521))
(CONNECT_DATA=(SERVICE_NAME=bjava21)))
※ マルチテナント環境で作業する場合、接続文字列は特定のPDBを指定する必要
があります。
75
高度な接続プロパティの設定
追加のプロパティは、Oracle データベース接続設定の [Advanced] タブで設定できます。
76
データ型
77
データ型
• Qlik Replicateでは、ほとんどの Oracle データ型をサポートします。次の表は、Qlik Replicateを使用する場合にサポートされる Oracle ターゲット デー
タ型と、Qlik Replicate データ型からの既定のマッピングを示しています。
80
制限事項
次の制限事項が適用されます。
• [Use direct path full load] オプションでは、次の機能はサポートされていません。
INDEXTYPE CONTEXTを持つテーブル
回避策: Array Loadを使用します。
双方向レプリケーション
トリガー
• Qlik Replicateは、Oracle データベースに新しいスキーマを作成できません。新しいスキーマにレプリケートするには、Oracle ターゲットに新しいス
キーマ名が存在している必要があります。その後、[Task Settings] の[Target metadata] タブと [Control tables] タブで必要に応じて、新し
いスキーマ名を指定できます。
81
www.qlik.com/sap