この付録では、Oracle Streamsの制限事項について説明します。
内容は次のとおりです。
この項では、取得プロセスの制限事項について説明します。
この項の内容は次のとおりです。
取得プロセスは、次のデータ型の列に対するDML変更の結果は取得しません。
SecureFile CLOB、NCLOBおよびBLOB
BFILE
ROWID
ユーザー定義型(オブジェクト型、REF、VARRAY、ネストした表など)
オブジェクト・リレーショナルまたはバイナリXMLとして格納されているXMLType
Oracle提供のAny型、URI型、空間型、メディア型
取得プロセスで、サポートされていないデータ型の列へのDML変更に関して行LCRを作成しようとすると、エラーが発生します。エラーが発生すると、取得プロセスはエラーの原因となったLCRをトレース・ファイルに書き込み、ORA-26744エラーを生成した後で無効になります。この場合は、エラーを回避するように、取得プロセスで使用されるルールを変更してから、取得プロセスを再起動します。
|
注意: 取得プロセスのネガティブ・ルール・セットに、サポートされていないデータ型の列を含む表への変更を廃棄するように取得プロセスに指示するルールを追加できます。ただし、これらのルールが単純なルールではない場合、取得プロセスは変更に対する行LCRを作成して、処理を続行することがあります。この場合、変更が取得プロセスで使用されるルール・セットの条件を満たさなくても、サポートされないデータ型を含む変更のために、取得プロセスでエラーが発生することがあります。DBMS_STREAMS_ADMパッケージでは単純なルールのみを作成できます。 |
この項では、取得プロセスでサポートされていない変更について説明します。
この項の内容は次のとおりです。
取得プロセスでは、次のスキーマに対して行われた変更は取得されません。
CTXSYS
DBSNMP
DMSYS
DVSYS
EXFSYS
LBACSYS
MDDATA
MDSYS
OLAPSYS
ORDPLUGINS
ORDSYS
OUTLN
SI_INFORMTN_SCHEMA
SYS
SYSMAN
SYSTEM
WMSYS
XDB
取得プロセスでは、次のタイプのDML変更を除き、ルール・セットを満たすDML変更の結果が取得されます。
索引構成表に次のデータ型の列が含まれている場合は、取得プロセスで、索引構成表に対して行われた変更を取得できません。
ROWID
ユーザー定義型(オブジェクト型、REF、VARRAY、ネストした表など)
オブジェクト・リレーショナルまたはバイナリXMLとして格納されているXMLType(CLOBとして格納されているXMLTypeはサポートされています)
Oracle提供のAny型、URI型、空間型、メディア型
索引構成表にこれらのいずれかのデータ型の列が含まれている場合、ユーザーが索引構成表に対して変更を行い、その変更が取得プロセスのルール・セットを満たしていると、取得プロセスでエラーが発生します。
索引構成表にこれらのいずれかのデータ型の列が含まれていない場合、取得プロセスでは索引構成表に対する変更を取得できます。
取得プロセスでは、一時表、オブジェクト表、またはセグメント圧縮が有効な状態で格納されている表に対して行われたDML変更は取得できません。このような変更を取得しようとすると、エラーが発生します。
また、複数のデータベースで順序を共有すると、これらのデータベースの個別の行で使用される順序値が異なる場合があります。また、実際の順序値に対する変更も取得されません。たとえば、ユーザーがNEXTVALを参照するか、または順序を設定した場合、取得プロセスでは、これらの操作による変更は取得されません。
|
関連項目:
|
取得プロセスでは、次のタイプのDDL変更を除き、ルール・セットを満たすDDL変更が取得されます。
ALTER DATABASE
CREATE CONTROLFILE
CREATE DATABASE
CREATE PFILE
CREATE SPFILE
取得プロセスではDDL文を取得できますが、DDL文がCREATE TABLE AS SELECT文である場合を除き、DDL文の結果は取得できません。たとえば、取得プロセスでANALYZE文が取得される場合でも、ANALYZE文によって生成された統計は取得されません。ただし、取得プロセスでCREATE TABLE AS SELECT文が取得される場合は、この文自体と(INSERTの行LCRとして)選択されたすべての行が取得されます。
取得プロセスによって取得される一部のタイプのDDL変更は、適用プロセスでは適用できません。適用プロセスでは、適用できない操作を指定するDDL LCRを受信した場合、そのDDL LCRは無視され、そのDDL LCRに関する情報が適用プロセスのトレース・ファイルに記録されます。
構文にタイムスタンプまたはシステム変更番号(SCN)値が指定されたDDL変更が取得プロセスによって取得された場合は、この変更をデキューする適用プロセスのDDLハンドラを構成します。DDLハンドラは、タイムスタンプまたはSCN値を適切に処理する必要があります。たとえば、特定の表に対するDDL変更を取得するようにルール・セットで指定されている場合はFLASHBACK TABLE文が取得されます。FLASHBACK TABLE文の構文には、タイムスタンプまたはSCN値が指定されます。
|
関連項目:
|
取得プロセスでは、次のタイプの変更が無視されます。
セッション制御文ALTER SESSIONおよびSET ROLE。
システム制御文ALTER SYSTEM。
CALL、EXPLAIN PLANおよびLOCK TABLE文。
ビューに対するGRANT文。
DBMS_REDEFINITIONパッケージを使用して、オンラインでの再定義によって表またはスキーマに対して行われた変更。取得プロセスが変更を取得する表では、オンラインで表を再定義できますが、表の論理構造は、オンライン再定義前とオンライン再定義後とで同一の構造である必要があります。
PL/SQLプロシージャの起動。これは、PL/SQLプロシージャのコールが取得されないことを意味します。ただし、PL/SQLプロシージャのコールによってデータベース・オブジェクトが変更された場合は、それらの変更が取得プロセスのルール・セットを満たせば、取得プロセスでそれらの変更を取得できます。
|
注意: XMLに関連するOracle提供パッケージによってデータベース・オブジェクトが変更された場合、これらの変更は、取得プロセスによっては取得されません。XMLに関連するパッケージの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照してください。 |
SQL操作にNOLOGGINGまたはUNRECOVERABLEキーワードを使用した場合、取得プロセスではSQL操作によって発生する変更は取得できません。したがって、SQL操作によって発生する変更を取得する場合は、これらのキーワードを使用しないでください。
ロギング属性を指定しているオブジェクトがFORCE LOGGINGモードのデータベースまたは表領域に存在する場合、Oracle Databaseでは、そのデータベースまたは表領域がFORCE LOGGINGモードでなくなるまでNOLOGGINGまたはUNRECOVERABLE設定は無視されます。データベースの現行のロギング・モードを判別するには、V$DATABASE動的パフォーマンス・ビューのFORCE_LOGGING列を問い合せます。表領域の現在のロギング・モードを判別するには、DBA_TABLESPACES静的データ・ディクショナリ・ビューのFORCE_LOGGING列を問い合せます。
|
注意: UNRECOVERABLEキーワードは非推奨のため、logging_clauseではNOLOGGINGキーワードに置き換えられています。UNRECOVERABLEは下位互換性用にサポートされていますが、可能な場合はNOLOGGINGキーワードを使用することを強くお薦めします。 |
|
関連項目: NOLOGGINGキーワード、UNRECOVERABLEキーワード、FORCE LOGGINGモードおよびlogging_clauseの詳細は、Oracle Database SQL言語リファレンスを参照 |
ダイレクト・パス・ロードでSQL*Loader制御ファイルにUNRECOVERABLE句を使用した場合、ダイレクト・パス・ロードによって発生する変更を取得プロセスでは取得できません。したがって、ダイレクト・パス・ロードによって発生する変更を取得プロセスで取得する必要がある場合は、UNRECOVERABLE句を使用しないでください。
ソース・データベースで変更を記録せずにダイレクト・パス・ロードを実行し、ソース・データベースの宛先データベースで同様のダイレクト・パス・ロードを実行しない場合、ソース・データベースのロード済オブジェクトに対して変更が行われると、これらの宛先データベースで適用エラーが発生することがあります。この場合、ソース・データベースの取得プロセスによってこれらのオブジェクトに対する変更を取得し、1つ以上の伝播によってそれらの変更を宛先データベースに伝播できます。適用プロセスによってこれらの変更の適用が試行された場合、変更されたオブジェクトとそのオブジェクト内の変更された行が宛先データベースに存在していないと、エラーが発生します。
したがって、ダイレクト・パス・ロードでUNRECOVERABLE句を使用し、ロード済オブジェクトに対する変更を取得するように取得プロセスが構成されている場合は、適用エラーを回避するために、すべての宛先データベースにロード済オブジェクトとロード済データが含まれていることを確認してください。宛先データベースにこれらのオブジェクトが存在するかどうかを確認する方法の1つとして、ソース・データベースで実行したダイレクト・パス・ロードと同様のダイレクト・パス・ロードを、これらの宛先データベースそれぞれで実行する方法があります。
FORCE LOGGINGモードのデータベースまたは表領域にオブジェクトをロードする場合、Oracle Databaseでは、ダイレクト・パス・ロード時にすべてのUNRECOVERABLE句が無視され、ロードされた変更が記録されます。データベースの現行のロギング・モードを判別するには、V$DATABASE動的パフォーマンス・ビューのFORCE_LOGGING列を問い合せます。表領域の現行のロギング・モードを判別するには、DBA_TABLESPACES静的データ・ディクショナリ・ビューのFORCE_LOGGING列を問い合せます。
|
関連項目: ダイレクト・パス・ロードおよびSQL*Loaderの詳細は、Oracle Databaseユーティリティを参照 |
LOB列、LONG列、LONG RAW列、ユーザー定義型の列およびOracle提供型の列は、サプリメンタル・ログ・グループに含めることはできません。
|
関連項目: Oracle Streamsレプリケーション管理者ガイド |
取得プロセスでは、Oracle Label Security(OLS)を使用するデータベース・オブジェクトはサポートされません。
|
関連項目: Oracle Label Security管理者ガイド |
この項では、同期取得の制限事項について説明します。
この項の内容は次のとおりです。
同期取得は、DBMS_STREAMS_ADMパッケージ内のプロシージャで作成された表ルールのみを使用します。同期取得は、スキーマ・ルール、グローバル・ルール、およびDBMS_RULE_ADMパッケージ内のプロシージャで作成されたルールを無視します。
同期取得は、次のデータ型の列に対するDML変更の結果は取得しません。
LONG
LONG RAW
CLOB
NCLOB
BLOB
BFILE
ROWID
ユーザー定義型(オブジェクト型、REF、VARRAY、ネストした表など)
Oracle提供の型(Any型、XML型、空間型、メディア型など)
同期取得では、サポートされていないデータ型の列が含まれている表に対するDML変更に対して行LCRを作成しようとすると、エラーが発生します。ユーザーにORA-25341エラーが戻され、DML変更は行われません。エラーが発生しないようにするには、同期取得で使用されるルールを変更します。
|
注意:
|
|
関連項目:
|
この項では、同期取得でサポートされていない変更について説明します。
この項の内容は次のとおりです。
同期取得では、次のスキーマに対して行われた変更は取得されません。
CTXSYS
DBSNMP
DMSYS
DVSYS
EXFSYS
LBACSYS
MDDATA
MDSYS
OLAPSYS
ORDPLUGINS
ORDSYS
OUTLN
SI_INFORMTN_SCHEMA
SYS
SYSMAN
SYSTEM
WMSYS
XDB
同期取得では、次のタイプのDML変更を除き、ルール・セットを満たすDML変更の結果が取得されます。
索引構成表に次のデータ型の列が含まれている場合は、同期取得で、索引構成表に対して行われた変更を取得できません。
LONG
LONG RAW
CLOB
NCLOB
BLOB
BFILE
ROWID
ユーザー定義型(オブジェクト型、REF、VARRAY、ネストした表など)
Oracle提供の型(Any型、XML型、空間型、メディア型など)
索引構成表にこれらのいずれかのデータ型の列が含まれている場合、ユーザーが索引構成表に対して変更を加え、その変更が同期取得のルール・セットを満たしていると、同期取得でエラーが発生します。
索引構成表にこれらのいずれかのデータ型の列が含まれていない場合、同期取得では索引構成表に対する変更を取得できます。
同期取得では、一時表またはオブジェクト表に対して行われたDML変更は取得できません。このような変更を取得しようとすると、エラーが発生します。
また、複数のデータベースで順序を共有すると、これらのデータベースの個別の行で使用される順序値が異なる場合があります。また、実際の順序値に対する変更も同期取得では取得されません。たとえば、ユーザーがNEXTVALを参照するか、または順序を設定した場合、同期取得では、これらの操作による変更は取得されません。
|
関連項目:
|
同期取得によって無視される変更のタイプは次のとおりです。
DDL変更。
セッション制御文ALTER SESSIONおよびSET ROLE。
システム制御文ALTER SYSTEM。
同期取得では、CALL、EXPLAIN PLANまたはLOCK TABLE文は無視されます。
ダイレクト・パス・ロードによって行われた変更。
DBMS_REDEFINITIONパッケージを使用して、オンライン再定義によって表またはスキーマに対して行われた変更。同期取得が変更を取得する表では、オンラインで表を再定義できますが、表の論理構造は、オンライン再定義前とオンライン再定義後とで同一の構造である必要があります。
PL/SQLプロシージャの起動。これは、PL/SQLプロシージャのコールが取得されないことを意味します。ただし、PL/SQLプロシージャのコールによってデータベース・オブジェクトが変更された場合は、それらの変更が同期取得のルール・セットを満たせば、同期取得でそれらの変更を取得できます。
|
注意: XMLに関連するOracle提供パッケージによって、データベース・オブジェクトが変更された場合、これらの変更は、同期取得によっては取得されません。XMLに関連するパッケージの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照してください。 |
DBMS_RULE_ADMパッケージを使用して同期取得のルール・セットを作成できますが、同期取得の動作はDBMS_STREAMS_ADMパッケージを使用して作成されたルールのみによって決定されます。同期取得ではDBMS_RULE_ADMパッケージによって作成されたルールは無視されます。
この項では、キューの制限事項について説明します。
この項の内容は次のとおりです。
次の型のペイロードを含むANYDATAペイロードはANYDATAキューに明示的にエンキューできません。
CLOB
NCLOB
BLOB
LOB属性を含むオブジェクト型
型進化または型継承を使用するオブジェクト型
|
注意: ROWIDデータ型のペイロードはANYDATAラッパーでラップできません。この制約はUROWIDデータ型のペイロードには適用されません。 |
|
関連項目:
|
バッファ・メッセージ機能を使用するには、Oracle Databaseの互換性レベルが10.2.0以上である必要があります。
DBMS_STREAMS_MESSAGINGパッケージを使用して、バッファ・キューへのメッセージのエンキューおよびバッファ・キューからのメッセージのデキューを行うことはできません。ただし、DBMS_AQパッケージでは、バッファ・メッセージのエンキューおよびデキューがサポートされています。
パフォーマンスに悪影響を与える可能性があるので、キュー表でのトリガーの使用はお薦めしません。索引構成キュー表でのトリガーもサポートされていません。
この項では、伝播の制限事項について説明します。
この項の内容は次のとおりです。
Oracle Streams伝播で使用されるデータベース・リンクに接続修飾子を指定することはできません。
伝播によって、オブジェクト型、VARRAYまたはネストした表のペイロードをカプセル化したANYDATAメッセージをデータベース間で伝播できるのは、それらのデータベースで同じキャラクタ・セットを使用している場合のみです。
伝播では、同じキャラクタ・セットまたは異なるキャラクタ・セットのデータベース間で論理変更レコード(LCR)を伝播できます。
キュー・ツー・キュー伝播を使用するには、伝播が行われるキューを含む各データベースの互換レベルが10.2.0以上であることが必要です。
この項では、適用プロセスの制限事項について説明します。
この項の内容は次のとおりです。
適用プロセスは、次のデータ型の列にはDML変更の結果を含む行LCRを適用しません。
SecureFile CLOB、NCLOBおよびBLOB
BFILE
ROWID
ユーザー定義型(オブジェクト型、REF、VARRAY、ネストした表など)
Oracle提供のAny型、URI型、空間型、メディア型
サポートされていないデータ型の列に関する情報を含む行LCRを適用しようとすると、適用プロセスにエラーが発生します。また、適用プロセスでは、一時表またはオブジェクト表に対するDML変更を適用できません。このような変更を適用しようとすると、適用プロセスにエラーが発生します。適用プロセスでは、LCRのエラーが発生すると、LCRを含むトランザクションがエラー・キューに移動されます。
これらのデータ型の制限事項は、通常の(ヒープ構成)表および索引構成表の両方に適用されます。
LCRのLONG、LONG RAW、またはアセンブルされていないLOB列のデータは、DMLハンドラまたはエラー・ハンドラで変更しないでください。DMLハンドラおよびエラー・ハンドラでは、LOBアセンブリで構築された行LCRのLOB列を変更できます。
次のタイプのDDL変更は、適用プロセスでサポートされていません。これらのタイプのDDL変更は、適用されません。
ALTER MATERIALIZED VIEW
ALTER MATERIALIZED VIEW LOG
CREATE DATABASE LINK
CREATE SCHEMA AUTHORIZATION
CREATE MATERIALIZED VIEW
CREATE MATERIALIZED VIEW LOG
DROP DATABASE LINK
DROP MATERIALIZED VIEW
DROP MATERIALIZED VIEW LOG
FLASHBACK DATABASE
RENAME
適用プロセスでは、適用できない操作を指定するDDL LCRを受信した場合、そのDDL LCRは無視され、無視されたDDLテキストの後に次のメッセージが適用プロセスのトレース・ファイルに記録されます。
Apply process ignored the following DDL:
適用プロセスのルール・セットに従って、変更を含むDDL LCRが適用される必要がある場合、適用プロセスは、その他のすべてのタイプのDDL変更を適用します。
|
注意:
|
取得されたDDL変更が宛先データベースで適切に適用されるためには、宛先データベースの構造がソース・データベースと同じであるか、DDL文に指定されているデータベース構造情報が同じである必要があります。データベース構造には、データファイル、表領域、ロールバック・セグメントと、データベース・オブジェクトをサポートするその他の物理構造および論理構造が含まれます。
たとえば、表に対して取得されたDDL変更が宛先データベースで適切に適用されるためには、次の条件を満たす必要があります。
CREATE TABLE文には、ソース・データベースおよび宛先データベースで同じ記憶域パラメータを指定する必要があります。
DDL文が特定の表領域またはロールバック・セグメントを参照する場合、その表領域またはロールバック・セグメントには、ソース・データベースおよび宛先データベースで同じ名前および同じ互換性の指定が必要です。
ただし、表領域およびロールバック・セグメントがDDL文に指定されていない場合は、デフォルトの表領域およびロールバック・セグメントが使用されます。この場合、表領域およびロールバック・セグメントは、ソース・データベースと宛先データベースで異なることがあります。
ソース・データベースおよび宛先データベースで同じパーティションの指定が使用される必要があります。
DDL LCRが宛先データベースで正常に適用されるためには、DDL LCRのcurrent_schemaとして指定されるユーザーは、宛先データベースに存在する必要があります。現行スキーマは、DDLテキストでオブジェクトにスキーマが指定されていない場合に使用されるスキーマです。
|
関連項目:
|
適用プロセスでは、Oracle Label Security(OLS)を使用するデータベース・オブジェクトはサポートされません。
|
関連項目: Oracle Label Security管理者ガイド |
この項では、メッセージ・クライアントの制限事項について説明します。
この項の内容は次のとおりです。
メッセージ・クライアントはバッファ・メッセージをデキューできません。ただし、DBMS_AQパッケージではバッファ・メッセージのエンキューとデキューがサポートされています。
|
関連項目: DBMS_AQパッケージの詳細は、Oracle Streamsアドバンスト・キューイング・ユーザーズ・ガイドを参照 |
この項では、ルールの制限事項について説明します。
この項の内容は次のとおりです。
サブセット・ルールには次の制限が適用されます。
サブセット・ルールで参照される表名の表が、サブセット・ルールと同じデータベースに存在する必要があります。また、この表は、サブセット・ルールで表に関して参照されるスキーマと同じスキーマに存在する必要があります。
サブセット・ルールが取得プロセスまたは同期取得のポジティブ・ルール・セットに含まれる場合、表には、サブセット条件で指定した列が含まれている必要があります。これらの各列のデータ型はソース・データベースの対応する列のデータ型と一致する必要があります。
サブセット・ルールが伝播または適用プロセスのポジティブ・ルール・セットに含まれる場合、表には、サブセット条件で指定した列が含まれている必要があります。各列のデータ型は、サブセット・ルールでTRUEと評価された行LCRの対応する列のデータ型と一致する必要があります。
1つ以上のLOB列、LONG列、LONG RAW列またはユーザー定義型の列を含む表に対するサブセット・ルールの作成は、サポートされていません。
この項では、ルールベースの変換の制限事項について説明します。
この項の内容は次のとおりです。