Chat now with support
Chat with Support

SharePlex 8.6.6 - 管理ガイド

このガイドについて このガイドで使用されている表記規則 SharePlex の概要 SharePlex の実行 複数の SharePlex インスタンスの実行 sp_ctrl でのコマンドの実行 SharePlex パラメータ 複製のための Oracle 環境の準備 設定ファイルの作成 オープンターゲットのターゲットへの複製の設定 複製方法の設定 分割レプリケーションの設定 名前付きキューの設定 変更履歴ターゲットを維持するための SharePlex の設定 Oracle DDL の複製 エラー処理のセットアップ データの変換 SharePlex セキュリティ機能の設定 実稼動環境での複製のアクティベート SharePlex の監視 複製上の問題の防止および解決方法 非同期データの修復 Oracle の高可用性を維持するための手順 アクティブな複製環境の変更 Oracle アプリケーションのパッチまたはアップグレードの適用 ソースまたはターゲット上の Oracle データのバックアップ Capture プロセスのチューニング Post プロセスのチューニング 付録 A:ピアトゥピアの説明図 付録 B:SharePlex 環境変数

DDL 複製の有効化

Oracle DDL の複製 > DDL 複製の有効化

SharePlex はデフォルトで、(明示的にまたはワイルドカードによって)アクティブな設定にリストされているオブジェクトの Oracle DDL を複製しますが、パラメータ設定を使用してこのサポートを拡張できます。

重要!

  • サポートされている DDL と要件または制限に関する最新情報については、このリリースに付属する『SharePlex リリースノート』を参照してください。ここに記載されている情報よりも、リリースノートの情報の方が優先されます。
  • すべての SharePlex ターゲットでサポートされる ALTER TABLE による ADD COLUMN または DROP COLUMN を除き、DDL 複製は Oracle ターゲットに対してのみサポートされます。

SharePlex では、設定ファイル内のオブジェクトに対して、DDL がデフォルトでサポートされます。このサポートは、パラメータ設定によって拡張できます。

SharePlex でサポートされている DDL の詳細については、『SharePlex リリースノート』を参照してください。

Oracle DDL のデフォルトのサポート

SharePlex では、デフォルトでいくつかの基本的な DDL がサポートされています。

既存のオブジェクトの DDL

SharePlex は、次の場合に、デフォルトで TRUNCATE TABLE コマンドと ALTER TABLE コマンドによる ADD または DROP columns を複製します。

  • 影響を受けるオブジェクトがアクティベーション時にソースとターゲットに存在する。および、
  • その名前が(明示的にまたはワイルドカードによって)設定ファイルにリストされている。

この機能は、SP_OCT_REPLICATE_DDL パラメータで制御されます。1 に設定した場合、ALTER が複製され、TRUNCATE は複製されません。2 に設定した場合、TRUNCATE が複製され、ALTER は複製されません。3(デフォルト設定)の場合、ALTER と TRUNCATE が複製されます。

アクティベーション後に追加されたオブジェクトの DDL

デフォルトでは SharePlex の Auto-Add 機能も有効であり、アクティベーション後に作成されたテーブルおよびインデックスで DDL がサポートされます。SharePlex がこれらのいずれかのオブジェクトの CREATE 文を検出し、その名前が設定ファイル内のワイルドカードを満たす場合、SharePlex は以下の操作を実行します。

  • CREATE を複製してオブジェクトをターゲットに追加します。
  • オブジェクトを複製に追加します。
  • それ以降の DDL および DML の変更でこのオブジェクトを維持します。

Auto-Add 機能は、SP_OCT_AUTOADD_ENABLE パラメータによって制御されます。このパラメータは、デフォルトで 1(有効)に設定されます。

このパラメータの詳細については、『 SharePlex リファレンスガイド』を参照してください。

複製内のオブジェクトのオプションの DDL 

設定ファイル内のオブジェクトに対して発行された以下の DDL の複製を有効にすることができます。DDL コマンドの複製を有効にするには、関連するパラメータを 1 に設定します。

DDL コマンド 1 に設定するパラメータ
CREATE / DROP TRIGGER SP_OCT_REPLICATE_TRIGGER
CREATE / DROP SYNONYM SP_OCT_REPLICATE_SYNONYM
GRANT SP_OCT_REPLICATE_GRANT

これらのパラメータの詳細については、『 SharePlex リファレンスガイド』を参照してください。

Oracle DDL のオプションの Auto-Add のサポート

Auto-Add のサポートを拡張して、以下のテーブルにリストされているすべてのオブジェクトタイプを含めることができます。オブジェクトは、その名前がアクティブな設定ファイル内のワイルドカード指定を満たすと、複製に追加されます。

個々のオブジェクトタイプの Auto-Add を有効にするには

  1. SP_OCT_AUTOADD_ENABLE パラメータが 1 に設定されていることを確認します。
  2. 以下のテーブルを参考にして、適切なパラメータを 1 に設定します。

    Auto-Add の対象となる DDL 1 に設定するパラメータ 追加要件
    CREATE / DROP SEQUENCE SP_OCT_AUTOADD_SEQ

    SP_OCT_TARGET_COMPATIBILITY パラメータを 8.6.3 以上に設定します。

    CREATE /DROP MATERIALIZED VIEW* SP_OCT_AUTOADD_MV

    SP_OCT_TARGET_COMPATIBILITY パラメータを 8.6.2 以上に設定します。

* :SharePlex は、マテリアライズドビューからマテリアライズドビューへの複製を行いません。SharePlex は、CREATE MATERIALIZED VIEW を CREATE TABLE に変換し、CREATE TABLE をターゲットに適用した後、ビューを設定する DML を複製します。SharePlex は、DROP MATERIALIZED VIEW を複製しますが、ALTER MATERIALIZED VIEW は複製しません。

これらのパラメータの詳細については、『 SharePlex リファレンスガイド』を参照してください。

複製外のオブジェクトの拡張 DDL のサポート

設定ファイルにリストされていない特定のオブジェクトの DDL を複製するように SharePlex を設定できます。SharePlex は DDL 文を複製しますが、オブジェクトに対して実行されたデータ変更操作を複製しません。これらの変更がアクティブな複製の一部ではないためです。したがって、SharePlex は、ターゲット上のこれらのオブジェクトの同期を維持しません。オブジェクトは、設定のアクティベーション前にソースとターゲットに存在する必要があります。

注:拡張 DDL の複製では、テーブルとシーケンスだけでなく、プロシージャ、関数、ユーザー、ビューなど、複製の一部ではない広範囲のオブジェクトがサポートされます。これらのオブジェクトの中には、複製に含まれる基礎オブジェクトを持つものがあります。その場合、拡張 DDL の複製は、複製設定外のオブジェクトのほか、複製に含まれる基礎オブジェクトにも適用されます。

複製設定外のオブジェクトの DDL を複製するには

SP_OCT_REPLICATE_ALL_DDL パラメータを 1 に設定します。

このパラメータの詳細については、『 SharePlex リファレンスガイド』を参照してください。

設定ファイルに含まれないオブジェクトでサポートされる DDL の詳細については、『SharePlex リリースノート』を参照してください。

DDL 複製のフィルタ

Oracle DDL の複製 > DDL 複製のフィルタ

SP_OCT_REPLICATE_ALL_DDL パラメータが有効な場合に DDL が複製されるオブジェクトをフィルタできます。これは、複製設定に含まれていない DDL です。

注: DDL フィルタリングは、複製設定外のオブジェクトに対してのみ使用できます。DML が成功するためには、複製設定内のオブジェクトで実行されるすべての DDL を複製して、ソースとターゲットのメタデータの一貫性を保つ必要があります。

DDL フィルタリングは、SharePlex スキーマにインストールされる SHAREPLEX_DDL_CONTROL テーブルで制御されます。

Name

Type

-------------

------------

DDL_PARAMETER

NUMBER

DDL_CODE

NUMBER

SCHEMA_FILTER

VARCHAR2(32)

OBJECT_FILTER

VARCHAR2(32)

SHAREPLEX_DDL_CONTROL テーブルの各行は、以下の各列で指定される値に基づいてフィルタを定義します。

  • SCHEMA_FILTER は、スキーマ名に基づいて DDL をフィルタします。

  • OBJECT_FILTER は、オブジェクト名に基づいて DDL をフィルタします。
  • DDL_CODE は、DDL タイプのコード番号に基づいて DDL をフィルタします。「DDL コード」を参照してください。

DDL_CODE 列の NULL 値は、フィルタがすべての DDL タイプに適用されることを意味します。SCHEMA_FILTER 列または OBJECT_FILTER 列の NULL は、フィルタが任意のスキーマ名またはオブジェクト名に適用されることを意味します。

注: DDL_PARAMETER 列は、SharePlex のこのリリース時点でアクティブな列ではありません。

DDL をフィルタするには

アクティブな列に目的の値が含まれる行をテーブルに挿入します。

以下の例では、ALTER TABLE について、DDL の複製をフィルタで除外しています。

INSERT INTO SPLEX.SHAREPLEX_DDL_CONTROL (DDL_CODE, SCHEMA_FILTER, OBJECT_FILTER) values (‘0x0F’,null,null);

以下の例では、任意のスキーマ内の名前が TEST_ で始まるすべてのオブジェクトについて、すべての DDL の複製をフィルタで除外しています。

INSERT INTO SPLEX.SHAREPLEX_DDL_CONTROL (DDL_CODE, SCHEMA_FILTER, OBJECT_FILTER) values (null,null,'TEST_%');

以下の例では、「Sales」スキーマと名前が「TEST_」で始まるオブジェクトについて、CREATE TABLE の DDL の複製をフィルタで除外しています。

INSERT INTO SPLEX.SHAREPLEX_DDL_CONTROL (DDL_CODE, SCHEMA_FILTER, OBJECT_FILTER) values (‘0x01’,'Sales','TEST_%');

DDL コード

DDL タイプ DDL_CODE
CREATE TABLE 1
ALTER TABLE 15
DROP TABLE 12
ASSOCIATE STATISTICS 168
DISASSOCIATE STATISTICS 169
COMMENT TABLE, COMMENT ON COLUMNS 29
TRUNCATE 85
   
CREATE INDEX 9
ALTER INDEX 11
DROP INDEX 10
   
CREATE SEQUENCE 13
ALTER SEQUENCE 14
DROP SEQUENCE 16
   
CREATE CLUSTER 4
DROP CLUSTER 8
   
CREATE USER 51
ALTER USER 43
DROP USER 53
   
CREATE_ROLE 52
ALTER_ROLE 79
DROP_ROLE 54
GRANT 17
REVOKE 18
   
CREATE SYNONYM 19
DROP SYNONYM 20
   
CREATE VIEW 21
ALTER VIEW 88
DROP VIEW 22
   
   
CREATE TYPE 77
ALTER TYPE 80
DROP TYPE 78
CREATE TYPE BODY 81
DROP TYPE BODY 83
   
CREATE FUNCTION 91
ALTER FUNCTION 92
DROP FUNCTION 93
   
CREATE PROCEDURE 24
ALTER PROCEDURE 25
DROP PROCEDURE 68
   
CREATE PACKAGE 94
ALTER PACKAGE 95
DROP PACKAGE 96
CREATE PACKAGE BODY 97
ALTER PACKAGE BODY 98
DROP PACKAGE BODY 99
   
CREATE DIRECTORY 157
DROP DIRECTORY 158

ALTER TABLE DDL に関するベストプラクティス

Oracle DDL の複製 > ALTER TABLE DDL に関するベストプラクティス

Oracle ALTER TABLE 操作の複製に関するベストプラクティスを以下に示します。

VARRAY または ABSTRACT 型のテーブル

その後間もなく列をドロップするか列を未使用に設定するために ALTER TABLE を発行するつもりである場合は、VARRAY 列または抽象データタイプ列を追加しないでください。SharePlex は、データベースをクエリして、このデータ型に関する情報を取得する必要があります。SharePlex が 1 番目の DDL を処理できる前に 2 番目の DDL が実行された場合、メタデータがすでに変更されているため、クエリは失敗します。

システムに固有のメタデータを持つテーブル

一部のメタデータがシステムに固有である場合(たとえば、データベースオブジェクトのストレージパラメータ)、そのメタデータの DDL が複製されたときに予期しない結果が生じる可能性があります。たとえば、SharePlex は、ソース Oracle オブジェクトのストレージパラメータを、ALTER TABLE コマンドで変更されたのがその中の一部であっても、すべて複製します。ソースおよびターゲットのオブジェクトが同じストレージパラメータで作成されていない場合は、ターゲットテーブルがソーステーブルのストレージを引き受けるか、その DDL をターゲットがサポートしていない場合はエラーが生成される可能性があります。

例:MAXEXTENTS 525 および MINEXTENTS 20 のソーステーブルと MAXEXTENTS 505 および MINEXTENTS 4 のターゲットテーブルを考えてみます。source オブジェクトの MAXEXTENTS が unlimited に変更された場合は、SharePlex は変更された MAXEXTENTS と 20 から変更されていない MINEXTENTS の両方を複製します。MINEXTENTS は現在割り当てられている範囲よりも大きくできないため、これで Oracle エラーの 01570 が発生します。また、ソースで MINEXTENTS が 1 に変更されたが、MAXEXTENTS が変更されない場合は、SharePlex が両方を複製し、ターゲットパラメータが MAXEXTENTS 525 と MINEXTENTS 1 になります。

名前が変更されるテーブル

現在複製中のソーステーブルで ALTER TABLE RENAME を発行すると、SharePlex は、古い設定行をコメントアウトし、設定ファイルの末尾に新しい行を追加して、アクティブな設定ファイル内のテーブル名を変更します。ソーステーブルとターゲットテーブルの名前が同じ場合、どちらも新しい名前に変更されます。それ以外の場合は、ソース名のみが変更されます。たとえば、現在複製中のソーステーブルで ALTER TABLE RENAME を発行すると、SharePlex は、古い設定行をコメントアウトし、設定ファイルの末尾に新しい行を追加して、アクティブな設定ファイル内のテーブル名を変更します。ソーステーブルとターゲットテーブルの名前が同じ場合、どちらも新しい名前に変更されます。それ以外の場合は、ソース名のみが変更されます。以下に例を示します。

# Table scott.table1 renamed to scott.table2 August 5, 2003 10:14

scott.table2 scott.table2 sysA@o.ora555

Post プロセスが RENAME 操作で停止するかどうかは SP_OPO_STOP_ON_DDL_ERR パラメータの設定によって決まります。

システムによって生成される間隔パーティションまたはサブパーティションを持つテーブル

システムによって生成される間隔パーティションまたはサブパーティションの名前はデータベースによって生成されるため、ソース上のこれらのパーティションの名前はターゲット上の対応するパーティションの名前と一致しません。SharePlex が ALTER TABLE を複製してシステムによって生成される間隔パーティションを TRUNCATE するときに正しいパーティションが切り捨てられるようにするには、SP_OCT_TRUNC_PARTITION_BY_ID パラメータを 1 に設定します。この設定は、元の ALTER TABLE コマンドに指定されたパーティション名ではなくパーティション ID を使用してパーティションを識別することを SharePlex に指示します。Post により、パーティション ID がターゲットテーブル上の正しいパーティション名にマップされます。詳細については、「SP_OCT_TRUNC_PARTITION_BY_ID 」を参照してください。SP_OCT_TRUNC_PARTITION_BY_ID

システムが名前付けした間隔パーティションまたはサブパーティションの複製をサポートするには、ソースとターゲットの両方が SharePlex バージョン 8.6.4 以降である必要があります。

SharePlex では、システムによって生成されるサブパーティションが空の場合にサブパーティションの TRUNCATE はサポートされず、Post はエラー SP-OPO01002 で停止します。このエラーを無視するように Post を設定するには、Post を再起動する前に、SP_OPO_CONT_ON_ERR パラメータを 1 に設定し、エラー番号 SP-OPO01002 を oramsglist ファイルの先頭に追加します。

ALTER TABLE...MOVE

テーブルの rowid を変更する ALTER TABLE DDL コマンドは、複製中のテーブルのプライマリキーまたは一意キーがログに記録されていない場合、その後の DML 操作に影響する可能性があります。キーがログに記録されていない場合、SharePlex は rowid に基づいて値をフェッチします。ALTER TABLE...MOVE などの rowid を変更する操作により、その後の DML 操作で誤ったキー値が使用される可能性があります。

DDL ロギングおよびエラー処理

Oracle DDL の複製 > DDL ロギングおよびエラー処理

Capture と Post のどちらの場合も、処理された DDL がログに記録されます。SharePlex は、複製された DDL を SharePlex イベントログにも印字します。ただし、その際にログが切り捨てられる場合があります。完全な DDL 文は、Post DDL ログにのみ格納されます。SharePlex は、ソースシステムとターゲットシステムの変数データディレクトリの log サブディレクトリに DDL ログを格納します。

Post はデフォルトで、DDL エラーで停止します。通常、エラーは DDL がソースシステムで実行されたデータベースコンポーネントがターゲットデータベースに存在しないことを示します。SP_OPO_STOP_ON_DDL_ERR パラメータのデフォルト設定では Post が DDL エラーで停止するため、そのオブジェクトに対する後続の DML は失敗しません。このため、問題を修正してデータベースの同期を維持できます。このパラメータの詳細については、『 SharePlex リファレンスガイド』を参照してください。

表 14: SharePlex DDL ログの名付け規約

DDL ログのタイプ 名付け規約 例:
Capture o.ORACLE_SID_ocap_ddl_log_number.log o.ora12_ocap_ddl_01.log
Oracle ターゲット o.ORACLE_SID_machine_name_opo_ddl_log_number.log o.ora12_server2_opo_ddl_01.log
オープンターゲットターゲット r.database_name_machine_name_xpst_ddl_log_number.log r.mssdb1_server3_xpst_ddl_01.log
Related Documents

The document was helpful.

Select Rating

I easily found the information I needed.

Select Rating