この付録では、Oracle Streamsの制限事項について説明します。
内容は次のとおりです。
この項では、取得プロセスの制限事項について説明します。
この項の内容は次のとおりです。
取得プロセスは、次のデータ型の列に対するDML変更の結果は取得しません。
BFILE
ROWID
ユーザー定義型(オブジェクト型、REF
、VARRAY、ネストした表など)
オブジェクト・リレーショナルまたはバイナリXMLとして格納されているXMLType
Oracle提供のAny
型、URI型、空間型、メディア型
4000バイトを超える、VARCHAR2
およびNVARCHAR2
の拡張データ型
2000バイトを超える、RAW
の拡張データ型
これらのデータ型の制限事項は、通常の(ヒープ構成)表および索引構成表の両方に適用されます。
取得プロセスでは、ソース・データベースの互換性レベルが11.2.0.0以上に設定されている場合のみ、SecureFiles LOB列への変更を取得できます。また、取得プロセスでは、拡張LOB重複除外を使用して格納されたSecureFiles LOB列への変更の取得、SecureFiles LOB列に対するフラグメントベースの操作によって生じた変更の取得、およびSecureFilesアーカイブ・マネージャ操作によって生じた変更の取得はサポートされていません。
取得プロセスで、サポートされていないデータ型の列へのDML変更に関して行LCRを作成しようとすると、エラーが発生します。エラーが発生すると、取得プロセスはエラーの原因となったLCRをトレース・ファイルに書き込み、ORA-26744エラーを生成した後で無効になります。この場合は、エラーを回避するように、取得プロセスで使用されるルールを変更してから、取得プロセスを再起動します。
追加のデータ型をサポートするようにOracle Streamsを構成できます。手順については、Webブラウザを使用してMy Oracle Support (旧OracleMetaLink) Webサイトを参照してください。
http://support.oracle.com/
Oracle Streamsの追加のデータ型のサポートについては、データベース掲示板556742.1で説明されています。
注意: 取得プロセスのネガティブ・ルール・セットに、サポートされていないデータ型の列を含む表への変更を廃棄するように取得プロセスに指示するルールを追加できます。ただし、これらのルールが単純なルールではない場合、取得プロセスは変更に対する行LCRを作成して、処理を続行することがあります。この場合、変更が取得プロセスで使用されるルール・セットの条件を満たさなくても、サポートされないデータ型を含む変更のために、取得プロセスでエラーが発生することがあります。DBMS_STREAMS_ADM パッケージでは単純なルールのみを作成できます。 |
関連項目:
|
この項では、取得プロセスでサポートされていない変更について説明します。
この項の内容は次のとおりです。
取得プロセスでは、次のスキーマに対して行われた変更は取得されません。
CTXSYS
DBSNMP
DMSYS
DVSYS
EXFSYS
LBACSYS
MDDATA
MDSYS
OLAPSYS
ORDDATA
ORDPLUGINS
ORDSYS
OUTLN
SI_INFORMTN_SCHEMA
SYS
SYSMAN
SYSTEM
WMSYS
XDB
取得プロセスでは、一時表またはオブジェクト表に加えられたDML変更は取得できません。
注意:
|
取得プロセスでは、次のタイプの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
パッケージを使用して、オンライン再定義によって表またはスキーマに対して行われた変更。取得プロセスが変更を取得する表では、オンラインで表を再定義できますが、表の論理構造は、オンライン再定義前とオンライン再定義後とで同一の構造である必要があります。
順序値の変更。たとえば、ユーザーがNEXTVAL
を参照するか、または順序を設定した場合、取得プロセスでは、これらの操作による変更は取得されません。また、複数のデータベースで順序を共有すると、これらのデータベースの個別の行で使用される順序値が異なる場合があります。
PL/SQLプロシージャの起動。これは、PL/SQLプロシージャのコールが取得されないことを意味します。ただし、PL/SQLプロシージャのコールによってデータベース・オブジェクトが変更された場合は、それらの変更が取得プロセスのルール・セットを満たせば、取得プロセスでそれらの変更を取得できます。
注意:
|
関連項目: 様々なデータベースの異なる2つの行で順序生成値が同一になることを回避する方針の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照 |
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
、ユーザー定義型(オブジェクト型、REF
、VARRAY、NESTED TABLEなど)およびOracleが提供する型(Any
型、XML型、空間型、メディア型など)の列は、サプリメンタル・ログ・グループに含めることはできません。
関連項目:
|
ダウンストリーム取得を使用する場合の操作要件は次のとおりです。
ソース・データベースでOracle Database 10g以上が実行されており、ダウンストリーム取得データベースで、ソース・データベースのリリース以上のOracle Databaseが実行されている必要があります。
リアルタイム・ダウンストリーム取得を構成するには、ダウンストリーム・データベースでOracle Database 10gリリース2以上が実行されている必要があります。この場合、ソース・データベースでOracle Database 10gリリース1以上が実行されている必要があります。
ソース・サイトおよびダウンストリーム取得サイトのオペレーティング・システムは同じである必要があります。ただし、オペレーティング・システムのリリースが同じである必要はありません。また、ダウンストリーム・サイトでは、ソース・サイトと異なるディレクトリ構造を使用できます。
ソース・サイトおよびダウンストリーム取得サイトのハードウェア・アーキテクチャが同じである必要があります。たとえば、ダウンストリーム取得構成では、ソース・データベースが32ビットのSunシステム上に構成されている場合、ダウンストリーム・データベースが32ビットのSunシステム上に構成されている必要があります。CPUの数、メモリー・サイズ、記憶域構成などのその他のハードウェア要素は、ソース・サイトとダウンストリーム・サイトで同じである必要はありません。
取得プロセスでは、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型、空間型、メディア型など)
4000バイトを超える、VARCHAR2
およびNVARCHAR2
の拡張データ型
2000バイトを超える、RAW
の拡張データ型
これらのデータ型の制限事項は、通常の(ヒープ構成)表および索引構成表の両方に適用されます。
同期取得では、サポートされていないデータ型の列が含まれている表に対するDML変更に対して行LCRを作成しようとすると、エラーが発生します。ユーザーにORA-25341エラーが戻され、DML変更は行われません。エラーが発生しないようにするには、同期取得で使用されるルールを変更します。
注意:
|
関連項目:
|
この項では、同期取得でサポートされていない変更について説明します。
この項の内容は次のとおりです。
同期取得では、次のスキーマに対して行われた変更は取得されません。
CTXSYS
DBSNMP
DMSYS
DVSYS
EXFSYS
LBACSYS
MDDATA
MDSYS
OLAPSYS
ORDDATA
ORDPLUGINS
ORDSYS
OUTLN
SI_INFORMTN_SCHEMA
SYS
SYSMAN
SYSTEM
WMSYS
XDB
同期取得では、一時表、オブジェクト表またはハイブリッド列圧縮によって圧縮された表に加えられたDML変更は取得できません。
注意: 基本表圧縮または高度な行圧縮によって圧縮された表に対する変更を同期取得で取得できるのは、データベースの互換性レベルが11.2.0.0.0以上に設定されている場合です。 |
同期取得によって無視される変更のタイプは次のとおりです。
DDL変更。
セッション制御文ALTER
SESSION
およびSET
ROLE
。
システム制御文ALTER
SYSTEM
。
同期取得では、CALL
、EXPLAIN
PLAN
またはLOCK
TABLE
文は無視されます。
ダイレクト・パス・ロードによって行われた変更。
DBMS_REDEFINITION
パッケージを使用して、オンライン再定義によって表またはスキーマに対して行われた変更。同期取得が変更を取得する表では、オンラインで表を再定義できますが、表の論理構造は、オンライン再定義前とオンライン再定義後とで同一の構造である必要があります。
実際の順序値の変更。たとえば、ユーザーがNEXTVAL
を参照するか、または順序を設定した場合、同期取得では、これらの操作による変更は取得されません。また、複数のデータベースで順序を共有すると、これらのデータベースの個別の行で使用される順序値が異なる場合があります。
PL/SQLプロシージャの起動。これは、PL/SQLプロシージャのコールが取得されないことを意味します。ただし、PL/SQLプロシージャのコールによってデータベース・オブジェクトが変更された場合は、それらの変更が同期取得のルール・セットを満たせば、同期取得でそれらの変更を取得できます。
注意:
|
関連項目: 様々なデータベースの異なる2つの行で順序生成値が同一になることを回避する方針の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照 |
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を適用しません。
BFILE
ROWID
ユーザー定義型(オブジェクト型、REF
、VARRAY、ネストした表など)
オブジェクト・リレーショナルまたはバイナリXMLとして格納されているXMLType
Oracle提供のAny
型、URI型、空間型、メディア型
4000バイトを超える、VARCHAR2
およびNVARCHAR2
の拡張データ型
2000バイトを超える、RAW
の拡張データ型
サポートされていないデータ型の列に関する情報を含む行LCRを適用しようとすると、適用プロセスにエラーが発生します。また、適用プロセスでは、一時表またはオブジェクト表に対するDML変更を適用できません。このような変更を適用しようとすると、適用プロセスにエラーが発生します。適用プロセスでは、LCRのエラーが発生すると、LCRを含むトランザクションがエラー・キューに移動されます。
これらのデータ型の制限事項は、通常の(ヒープ構成)表および索引構成表の両方に適用されます。
追加のデータ型をサポートするようにOracle Streamsを構成できます。手順については、Webブラウザを使用してMy Oracle Support (旧OracleMetaLink) Webサイトを参照してください。
http://support.oracle.com/
Oracle Streamsの追加のデータ型のサポートについては、データベース掲示板556742.1で説明されています。
文DMLハンドラでは、行LCRのLONG
、LONG
RAW
またはアセンブルされていないLOB列データは処理できません。ただし、文DMLハンドラでは、LOBアセンブリで構築された行LCRのLOB列データは処理できます。LOBアセンブリは、文DMLハンドラに対してデフォルトで有効になっています。
プロシージャDMLハンドラおよびエラー・ハンドラでは、行LCRのLONG
またはLONG
RAW
の列データは処理できません。ただし、プロシージャDMLハンドラおよびエラー・ハンドラでは、行LCRのアセンブルされていないLOB列データとアセンブルされたLOB列データの両方を処理できますが、アセンブルされていない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管理者ガイド』 |
Oracle Database 11g リリース2 (11.2)以上の取得プロセスで取得される変更を処理する場合、適用プロセスはOracle9i リリース2 (9.2.0.6)以上である必要があります。適用プロセスのリリースにおけるデータ型の制限事項は、適用プロセス・データベースで適用されます。
Oracle Database 11g リリース2(11.2)以上の同期取得で取得される変更を処理する場合、適用プロセスはOracle Database 11g リリース1(11.1)以上である必要があります。適用プロセスのリリースにおけるデータ型の制限事項は、適用プロセス・データベースで適用されます。
関連項目: 以前のリリースでの適用プロセスのデータ型の制限事項については、そのOracle DatabaseリリースのOracle Streamsのマニュアルを参照してください。 |
この項では、メッセージ・クライアントの制限事項について説明します。
この項の内容は次のとおりです。
メッセージ・クライアントはバッファ・メッセージをデキューできません。ただし、DBMS_AQ
パッケージではバッファ・メッセージのエンキューとデキューがサポートされています。
関連項目: DBMS_AQ パッケージに関する情報は『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』を参照 |
この項では、ルールの制限事項について説明します。
この項の内容は次のとおりです。
サブセット・ルールには次の制限が適用されます。
サブセット・ルールで参照される表名の表が、サブセット・ルールと同じデータベースに存在する必要があります。また、この表は、サブセット・ルールで表に関して参照されるスキーマと同じスキーマに存在する必要があります。
サブセット・ルールが取得プロセスまたは同期取得のポジティブ・ルール・セットに含まれる場合、表には、サブセット条件で指定した列が含まれている必要があります。これらの各列のデータ型はソース・データベースの対応する列のデータ型と一致する必要があります。
サブセット・ルールが伝播または適用プロセスのポジティブ・ルール・セットに含まれる場合、表には、サブセット条件で指定した列が含まれている必要があります。各列のデータ型は、サブセット・ルールでTRUE
と評価された行LCRの対応する列のデータ型と一致する必要があります。
LOB、LONG
、LONG
RAW
、ユーザー定義型(オブジェクト型、REF
、VARRAY、ネストした表など)およびOracle提供の型(Any
型、XML型、空間型、メディア型など)のデータ型の列が1つ以上存在する表に対してサブセット・ルールを作成することはできません。
アクション・コンテキストには、次のデータ型の情報を含めることはできません。
CLOB
NCLOB
BLOB
LONG
LONG
RAW
4000バイトを超える、VARCHAR2
およびNVARCHAR2
の拡張データ型
2000バイトを超える、RAW
の拡張データ型
また、アクション・コンテキストには、これらのデータ型の属性を持つオブジェクト型、および型進化や型継承を使用するオブジェクト型を含めることはできません。
次のデータ型の制限が適用されます。
拡張データ型VARCHAR2(32K)
の列は、ルールで参照できません。
この項では、ルールベースの変換の制限事項について説明します。
この項の内容は次のとおりです。
列の追加の変換を除き、列に対して実行される宣言ルールベースの変換では、Oracle Streamsの取得プロセスでサポートされているものと同じデータ型がサポートされています。
列の追加の変換では、BLOB
、CLOB
、NCLOB
、BFILE
、LONG
、LONG
RAW
、ROWID
、ユーザー定義型(オブジェクト型、REF
、VARRAY、ネストした表など)、Oracle提供の型(Any
型、XML型、空間型、メディア型など)、およびVARCHAR2
、NVARCHAR2
またはRAW
の拡張データ型のデータ型の列は追加できません。
LONG
、LONG
RAW
、アセンブルされていないLOB列データまたはXMLType
データは、カスタム・ルールベースの変換ファンクションでは変更しないでください。