この章では、TimesTenとOracle間の互換性の問題を示します。リストは完全なものではなく、特に注意が必要な領域を示すものです。内容は次のとおりです。
TimesTenとOracle間の次の相違について考慮します。
TimesTenとOracleのデータベース・メタデータは別々に保存されます。 詳細は、「APIの互換性」を参照してください。
TimesTenとOracleには異なるトランザクションの分離モデルがあります。 詳細は、「トランザクション・セマンティクス」を参照してください。
TimesTenとOracleには異なる接続および文のプロパティがあります。 たとえば、TimesTenでは、カタログ名、スクロール可能なカーソル、更新可能なカーソルはサポートされていません。
順序は、キャッシュされず、TimesTenデータベースと対応するOracle Database間で同期化されません。 詳細は、「SQL式」を参照してください。
Oracleトリガーおよびストアド・プロシージャの副作用は、自動リフレッシュ処理または手動リフレッシュ処理が完了して初めてTimesTenデータベースに反映されます。
TimesTenとOracleのトランザクション・セマンティクスの相違は、次のとおりです。
Oracleシリアライズ可能トランザクションは、トランザクションをシリアライズできないため、コミット時に失敗する可能性があります。 TimesTenはロックを使用してシリアライズ可能性を実現します。
Oracleユーザーは、SQLによって表を明示的にロックできます。このロック機能は、TimesTenではサポートされていません。
Oracleではセーブポイントがサポートされていますが、TimesTenではサポートされていません。
Oracleでは、トランザクションを読取り専用または読取り/書込み両用に設定できます。これはTimesTenではサポートされていません。
TimesTenの分離レベルおよびトランザクション・セマンティクスの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のトランザクションの管理およびリカバリに関する説明を参照してください。
TimesTenでサポートされているJDBC APIクラスおよびインタフェースの完全なリストおよびメソッドの互換性の問題に関する注意事項については、『Oracle TimesTen In-Memory Database Java開発者ガイド』の重要なJDBCクラスおよびインタフェースに関する説明を参照してください。
TimesTenでサポートされているODBC API関数の完全なリストおよび関数の互換性の問題に関する注意事項については、『Oracle TimesTen In-Memory Database C開発者ガイド』のTimesTen ODBC関数およびオプションに関する説明を参照してください。
TimesTenでサポートされているOracle Databaseリリース11.1.0.7用のOCI関数の完全なリストおよび関数の互換性の問題に関する注意事項については、『Oracle TimesTen In-Memory Database C開発者ガイド』のTimesTenによるOracle Call Interfaceのサポートに関する説明を参照してください。
この項では、TimesTenとOracleのSQL実装を比較します。 TimesTenでサポートされていないか、または別のセマンティクスでサポートされているOracle SQL機能のリストを提供することが目的です。
TimesTenでは、Oracleでサポートされているスキーマ・オブジェクトの一部が認識されません。文でこれらのオブジェクトが処理または使用されると、TimesTenは構文エラーを返し、Oracleにその文を渡します。サポートされていないオブジェクトは、次のとおりです。
TimesTenでは、ビューおよびマテリアライズド・ビューがサポートされていますが、Oracleビューをキャッシュすることはできません。
次のOracleデータ型は、TimesTenではサポートされていません。
次のTimesTenデータ型は、Oracleではサポートされていません。
注意: TimesTen NCHAR/NVARCHAR2データ型はUTF-16としてエンコードされます。Oracle NCHAR/NVARCHAR2データ型はUTF-16またはUTF-8のいずれかとしてエンコードされます。Oracle NCHAR列またはNVARCHAR2列をキャッシュするには、Oracle NLS_NCHAR_CHARACTERSETエンコーディングがAL32UTF8ではなくAL16UTF16である必要があります。 |
TimesTenでは、Oracleでサポートされている次の演算子および条件がサポートされています。
TimesTenでは、Oracleでサポートされている次の関数がサポートされています。
TimesTenでは、Oracleでサポートされている次の式がサポートされています。
TimesTenでは、Oracleでサポートされている次の副問合せがサポートされています。
注意: 検証不能スカラー副問合せとは、実行時までその単一行結果セット・プロパティを決定できないスカラー副問合せのことです。 TimesTenでは、問合せ全体で1つ以下の検証不能スカラー副問合せを許容できますが、この副問合せはOR式には指定できません。 |
TimesTenでは、Oracleでサポートされている次の問合せがサポートされています。
FOR UPDATE
ORDER BY
GROUP BY
表の別名
列の別名
Oracleでは、フラッシュバック問合せがサポートされています。フラッシュバック問合せは、前の状態のデータベースに対する問合せ(昨日の時点の表に対する問合せなど)です。TimesTenでは、フラッシュバック問合せはサポートされていません。
この項では、OracleではサポートされていないTimesTenのSQL文および組込みプロシージャを示します。 PassThrough
= 3を設定すると、次の文はOracleに渡されて実行され、エラーが発生します。
すべてのTimesTenキャッシュ・グループのDDLおよびDML文(CREATE CACHE GROUP、DROP CACHE GROUP、ALTER CACHE GROUP、LOAD CACHE GROUP、UNLOAD CACHE GROUP、REFRESH CACHE GROUPおよびFLUSH CACHE GROUPを含む)
すべてのTimesTenレプリケーション管理DDL文(CREATE REPLICATION、DROP REPLICATION、ALTER REPLICATION、CREATE ACTIVE STANDBY PAIR、ALTER ACTIVE STANDBY PAIRおよびDROP ACTIVE STANDBY PAIRを含む)
すべてのTimesTen組込みプロシージャ。 『Oracle TimesTen In-Memory Databaseリファレンス』の組込みプロシージャに関する説明を参照してください。
TimesTenキャッシュ・グループ表の列に対してデータ型を選択する場合は、Oracle表の列のデータ型を考慮し、キャッシュ表の列に対して同等または互換性のあるデータ型を選択してください。
主キーおよび外部キーの列は、キー以外の列と区別されます。 キャッシュ表のキー列で使用可能なデータ型マッピングを表11-1に示します。
Oracleデータ型 | TimesTenデータ型 |
---|---|
NUMBER( |
NUMBER( 注意: DECIMAL( |
NUMBER( INTEGER |
TT_TINYINT TT_SMALLINT TT_INTEGER TT_BIGINT NUMBER( |
NUMBER |
TT_TINYINT TT_SMALLINT TT_INTEGER TT_BIGINT NUMBER |
CHAR( |
CHAR( |
VARCHAR2( |
VARCHAR2( |
RAW( |
VARBINARY( |
DATE |
DATE |
TIMESTAMP( |
TIMESTAMP( |
NCHAR( |
NCHAR( |
NVARCHAR2( |
NVARCHAR2( |
表11-2に、キャッシュ表のキー以外の列のデータ型マッピングを示します。
Oracleデータ型 | TimesTenデータ型 |
---|---|
NUMBER( |
NUMBER( REAL FLOAT BINARY_FLOAT DOUBLE BINARY_DOUBLE |
NUMBER( INTEGER |
TT_TINYINT TT_SMALLINT TT_INTEGER TT_BIGINT NUMBER( FLOAT BINARY_FLOAT DOUBLE BINARY_DOUBLE |
NUMBER |
TT_TINYINT TT_SMALLINT TT_INTEGER TT_BIGINT NUMBER REAL FLOAT BINARY_FLOAT DOUBLE BINARY_DOUBLE |
CHAR( |
CHAR( |
VARCHAR2( |
VARCHAR2( |
RAW( |
VARBINARY( |
LONG |
VARCHAR2( 注意: |
LONG RAW |
VARBINARY( 注意: |
DATE |
DATE TIMESTAMP(0) |
TIMESTAMP( |
TIMESTAMP( |
FLOAT(n) 注意: DOUBLEおよびFLOATが含まれます。いずれもFLOAT(126)に相当します。REALも含まれます。これはFLOAT(63)に相当します。 |
FLOAT( BINARY_DOUBLE 注意: FLOAT(126)は、DOUBLEとして宣言できます。FLOAT(63)は、REALとして宣言できます。 |
BINARY_FLOAT |
BINARY_FLOAT |
BINARY_DOUBLE |
BINARY_DOUBLE |
NCHAR( |
NCHAR( |
NVARCHAR2( |
NVARCHAR2( |