ヘッダーをスキップ
Oracle® TimesTen Application-Tier Database Cacheユーザーズ・ガイド
11g リリース2 (11.2.2)
B66442-07
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

C TimesTenデータベースとOracle Databaseの互換性

次の各項では、TimesTenデータベースとOracle Databaseの互換性の問題を示します。リストは完全なものではなく、特に注意が必要な領域を示すものです。

互換性の問題の概要

TimesTenデータベースとOracle Database間の次の相違について考慮します。

  • TimesTenとOracleのデータベース・メタデータは別々に保存されます。詳細は、「APIの互換性」を参照してください。

  • TimesTenデータベースとOracle Databaseには異なるトランザクションの分離モデルがあります。詳細は、「トランザクション・セマンティクス」を参照してください。

  • TimesTenデータベースとOracle Databaseには異なる接続および文のプロパティがあります。たとえば、TimesTenでは、カタログ名、スクロール可能なカーソル、更新可能なカーソルはサポートされていません。

  • 順序は、キャッシュされず、TimesTenデータベースと対応するOracle Database間で同期化されません。詳細は、「SQL式」を参照してください。

  • Oracle Databaseトリガーおよびストアド・プロシージャの副作用は、自動リフレッシュ処理または手動リフレッシュ処理が完了して初めてTimesTenデータベースに反映されます。

トランザクション・セマンティクス

TimesTenとOracle Databaseのトランザクション・セマンティクスの相違は、次のとおりです。

  • Oracle Databaseシリアライズ可能トランザクションは、トランザクションをシリアライズできないため、コミット時に失敗する可能性があります。TimesTenはロックを使用してシリアライズ可能性を実現します。

  • Oracle Databaseは、マルチバージョン一貫性モデルを使用することによって、文レベルの一貫性およびトランザクション・レベルの一貫性の両方を提供できます。TimesTenは、文レベルの一貫性を提供しません。TimesTenは、シリアライズ可能な分離を使用することによって、トランザクション・レベルの一貫性を提供します。

  • Oracle Databaseユーザーは、SQLを介して明示的に表をロックできます。このロック機能は、TimesTenではサポートされていません。

  • Oracle Databaseではセーブポイントがサポートされていますが、TimesTenではサポートされていません。

  • Oracle Databaseでは、トランザクションを読取り専用または読取り/書込みに設定できます。これはTimesTenではサポートされていません。

TimesTenの分離レベルおよびトランザクション・セマンティクスの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のトランザクションの管理に関する説明を参照してください。

APIの互換性

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.2.0.2用のOCI関数の完全なリストについては、『Oracle TimesTen In-Memory Database C開発者ガイド』の「TimesTen OCIサポート」を参照してください。

TimesTenでのPro*C/C++のサポートの詳細は、『Oracle TimesTen In-Memory Database C開発者ガイド』の「TimesTenでのOracle Pro*C/C++プリコンパイラのサポート」を参照してください。

TimesTenでのODP.NETのサポートの詳細は、『Oracle Data Provider for .NET Oracle TimesTen In-Memory Databaseサポート・ユーザーズ・ガイド』を参照してください。

TimesTenでのPL/SQLのサポートの詳細は、『Oracle TimesTen In-Memory Database PL/SQL開発者ガイド』を参照してください。

TimesTen C++インタフェース・クラス(TTClasses)ライブラリでは、使いやすくパフォーマンスの高いTimesTenへのインタフェースが提供されます。このC++クラス・ライブラリでは、最も一般的なODBC機能が含まれているラッパーが提供されます。このAPIは、Oracle Databaseには使用できません。Oracle TimesTen In-Memory Database TTClassesガイドを参照してください。

SQLの互換性

この項では、TimesTenとOracle DatabaseのSQL実装を比較します。TimesTenでサポートされていないか、または別のセマンティクスでサポートされているOracle Database SQL機能のリストを提供することが目的です。

スキーマ・オブジェクト

TimesTenでは、Oracle Databaseでサポートされているスキーマ・オブジェクトの一部が認識されません。文でこれらのオブジェクトが処理または使用されると、TimesTenは構文エラーを返します。TimesTenは文をOracle Databaseに渡します。サポートされていないオブジェクトは、次のとおりです。


クラスタ
CREATE DATABASE文により作成されたオブジェクト
CREATE JAVA文により作成されたオブジェクト
データベース・リンク
データベース・トリガー
ディメンション
拡張機能
外部プロシージャ・ライブラリ
索引構成表
マイニング・モデル
パーティション
オブジェクト表、オブジェクト・タイプおよびオブジェクト・ビュー
演算子

TimesTenではビューおよびマテリアライズド・ビューがサポートされていますが、Oracle Databaseビューはキャッシュできません。TimesTenでは、AUTOREFRESHキャッシュ・グループ属性およびPROPAGATEキャッシュ表属性を使用しないユーザー管理キャッシュ・グループに、Oracle Databaseマテリアライズド・ビューをキャッシュできます。キャッシュ・グループは、手動でロードおよびフラッシュする必要があります。

Oracle Databaseパーティション表のキャッシュ

TimesTenは表レベルでOracle Databaseパーティション表をキャッシュできますが、個々のパーティションはキャッシュできません。次に、パーティション表に対する処理がキャッシュ・グループにどう影響するかを示します。

  • パーティションを持つ表に対するDDL操作は、データ・ロスがないかぎりキャッシュ・グループに影響しません。たとえば、データのあるパーティションが切り捨てられた場合、AUTOREFRESH処理は対応するキャッシュ対象の表からデータを削除しません。

  • すべてのキャッシュ・グループ操作で、WHERE句は個々のパーティションまたはサブパーティションを参照できません。表の単一パーティションを定義しようとすると、エラーが返されます。

非スキーマ・オブジェクト

TimesTenでは、Oracle Databaseでサポートされているスキーマ・オブジェクトの一部が認識されません。文でこれらのオブジェクトが処理または使用されると、TimesTenは構文エラーを返します。TimesTenは文をOracle Databaseに渡します。サポートされていないオブジェクトは、次のとおりです。


コンテキスト
ディレクトリ
エディション
リストア・ポイント
ロール
ロールバック・セグメント
表領域

Oracle DatabaseとTimesTenの表の相違

TimesTenではサポートされていないOracle Database表の機能は、次のとおりです。

  • ON DELETE SET NULL

  • チェック制約

  • 外部キー自身が定義されている表を参照する外部キー

データ型のサポート

次のOracle Databaseデータ型はTimesTenではサポートされていません。


TIMESTAMP WITH TIME ZONE
TIMESTAMP WITH LOCAL TIME ZONE
INTERVAL YEAR TO MONTH
INTERVAL DAY TO SECOND
UROWID
BFILE
Oracle Databaseが提供する型
ユーザー定義の型

次のTimesTenデータ型はOracle Databaseではサポートされていません。


TT_CHAR
TT_VARCHAR
TT_NCHAR
TT_NVARCHAR
TT_BINARY
TT_VARBINARY
TINYINTおよびTT_TINYINT
TT_SMALLINT
TT_INTEGER
TT_BIGINT
TT_DECIMAL
TT_DATE
TIMEおよびTT_TIME
TT_TIMESTAMP

注意:

TimesTen NCHARデータ型およびNVARCHAR2データ型はUTF-16としてエンコードされます。Oracle Database NCHARデータ型およびNVARCHAR2データ型は、UTF-16またはUTF-8としてエンコードされます。

Oracle Database NCHAR列またはNVARCHAR2列をキャッシュするには、Oracle Database NLS_NCHAR_CHARACTERSETエンコーディングがAL32UTF8ではなくAL16UTF16である必要があります。


SQL演算子

TimesTenでは、Oracle Databaseでサポートされている次の演算子および条件がサポートされています。


-(単項)
+, -, *, /
=, <, >, <=, >=, <>, !=
||
IS NULLIS NOT NULL
LIKE(Oracle DatabaseのLIKE演算子は後続の空白を無視しますが、TimesTenの場合は無視しません)
BETWEEN
IN
NOT IN(リスト)
AND
OR
+(外部結合)
ANYSOME
ALL(リスト)
EXISTS
UNION
MINUS
INTERSECT

2つのビット・ベクトル式のビット単位AND演算を実行する場合、TimesTenでは2つの式間にアンパサンド文字(&)が使用され、Oracle Databaseでは2つの式が引数として指定されたBITAND関数が使用されます。

SELECT文

TimesTenでは、Oracle DatabaseでサポートされているSELECT文の次の句がサポートされています。

  • FOR UPDATE

  • ORDER BY(NULLS FIRSTおよびNULLS LASTを含む)

  • GROUP BY(ROLLUPGROUPING_SETSおよびグループ化式リストを含む)

  • 表の別名

  • 列の別名

  • コンストラクタを使用する副問合せのファクタリング句

Oracle Databaseでは、過去のある時点でのデータベースに対する問合せ(昨日の時点での表に対する問合せなど)を行う、フラッシュバック問合せがサポートされています。TimesTenでは、フラッシュバック問合せをサポートしていません。

TimesTenでは、CONNECT BY句がサポートされていません。

SQL副問合せ

TimesTenでは、Oracle Databaseでサポートされている次の副問合せがサポートされています。


IN(副問合せ)
>,<,= ANY(副問合せ)
>,=,< SOME(副問合せ)
EXISTS(副問合せ)
>,=,<(スカラー副問合せ)
DELETE/UPDATEWHERE句内の副問合せ
FROM句内の副問合せ
副問合せのファクタリング句(WITHコンストラクタ)

注意:

検証不能スカラー副問合せとは、実行時までその単一行結果セット・プロパティを決定できないスカラー副問合せのことです。TimesTenでは、問合せ全体で1つ以下の検証不能スカラー副問合せを許容できますが、この副問合せはOR式には指定できません。

SQL関数

TimesTenでは、Oracle Databaseでサポートされている次の関数がサポートされています。


ABS
ADD_MONTHS
ASCIISTR
AVG
CAST
CEIL
COALESCE
CONCAT
COUNT
CHR
DECODE
DENSE_RANK
EMPTY_BLOB
EMPTY_CLOB
EXTRACT
FIRST_VALUE
FLOOR
GREATEST
GROUP_ID
GROUPING
GROUPING_ID
INSTR
LAST_VALUE
LEAST
LENGTH
LOWER
LPAD
LTRIM
MAX
MIN
MOD
MONTHS_BETWEEN
NCHR
NLS_CHARSET
NLS_CHARSET_NAME
NLSSORT
NULLIF
NUMTOYMINTERVAL
NUMTODSINTERVAL
NVL
POWER
RANK
REPLACE
ROUND
ROW_NUMBER
RPAD
RTRIM
SIGN
SQRT
SUBSTR
SUM
SYS_CONTEXT
SYSDATE
TO_BLOB
TO_CLOB
TO_CHAR
TO_DATE
TO_LOB
TO_NCLOB
TO_NUMBER
TRIM
TRUNC
UID
UNISTR
UPPER
USER

次のTimesTen関数はOracle Databaseではサポートされていません。


CURRENT_USER
GETDATE
ORA_SYSDATE
SESSION_USER
SYSTEM_USER
TIMESTAMPADD
TIMESTAMPDIFF
TT_HASH
TT_SYSDATE
TTGRIDNODENAME
TTGRIDMEMBERID
TTGRIDUSERASSIGNEDNAME

TimesTenおよびOracle Databaseでは、リテラルN'\UNNNN'に関して異なる解釈をします。TimesTenでは、N'\unnnn'(ここでは、nnnnは数値)は、コードnnnnを使用する各国語キャラクタ・セットの文字として解釈されます。Oracle Databaseでは、N'\unnnn'は、6つのリテラル文字として解釈されます。\uは、エスケープとして処理されません。この違いにより予想外の動作が発生します。たとえば、リテラルを含むWHERE句を使用したキャッシュ・グループのロードは失敗する可能性があります。また、これは、動的ロードおよびキャッシュ・グリッド処理に影響を与える可能性もあります。アプリケーションでは、リテラルではなく、UNISTR SQL関数を使用する必要があります。

SQL式

TimesTenでは、Oracle Databaseでサポートされている次の式がサポートされています。


列参照
順序
NULL
()
バインディング・パラメータ
CASE
ROWID疑似列
ROWNUM疑似列

TimesTenおよびOracle Databaseでは、リテラルに関して異なる解釈をします。『Oracle TimesTen In-Memory Database SQLリファレンス』の定数に関する説明のHexadecimalLiteralを参照してください。

INSERT/DELETE/UPDATE/MERGE文

TimesTenでは、Oracle Databaseでサポートされている次のDML文がサポートされています。

  • INSERT INTO ... VALUES

  • INSERT INTO ... SELECT

  • UPDATE WHERE式(副問合せが含まれる場合があります)

  • DELETE WHERE式(副問合せが含まれる場合があります)

TimesTenでは、新しい値が古い値と同じ場合を除き、主キー値の更新はサポートされません。

TimesTenのみのSQLおよび組込みプロシージャ

この項では、Oracle DatabaseではサポートされていないTimesTenのSQL文とSQL関数および組込みプロシージャを示します。PassThrough= 3を設定すると、次の文はOracle Databaseに渡されて実行され、エラーが発生します。

  • すべてのTimesTenキャッシュ・グループのDDLおよびDML文(CREATE CACHE GROUPDROP CACHE GROUPALTER CACHE GROUPLOAD CACHE GROUPUNLOAD CACHE GROUPREFRESH CACHE GROUPおよびFLUSH CACHE GROUPを含む)。

  • すべてのTimesTenレプリケーション管理DDL文(CREATE REPLICATIONDROP REPLICATIONALTER REPLICATIONCREATE ACTIVE STANDBY PAIRALTER ACTIVE STANDBY PAIRおよびDROP ACTIVE STANDBY PAIRを含む)。

  • FIRST n句。

  • ROWS m TO n句。

  • すべてのTimesTen組込みプロシージャ。『Oracle TimesTen In-Memory Databaseリファレンス』の組込みプロシージャに関する説明を参照してください。

PL/SQLコンストラクト

TimesTenでは、Oracle Databaseでサポートされているストアド・プロシージャ・コンストラクト、関数、データ型、パッケージおよびパッケージ本体のサブセットがサポートされています。詳細は、『Oracle TimesTen In-Memory Database PL/SQL開発者ガイド』を参照してください。

Oracle Databaseデータ型とTimesTenデータ型の間のマッピング

TimesTenキャッシュ表の列に対してデータ型を選択する場合は、Oracle Database表の列のデータ型を考慮し、キャッシュ表の列に対して同等または互換性のあるデータ型を選択してください。


注意:

パススルーを含め、TimeTenのキャッシュはOracle Database ROWIDデータ型をサポートしません。ただし、SQL問合せのSELECTリストで指定されている場合は、ROWIDデータ型をCHAR(18)データ型にキャストできます。

次の例では、ROWIDデータ型をキャストしないときに返されるエラーを示します。次に、この例では、ROWIDデータ型をCHAR(18)データ型に正しくキャストする方法を示します。

Command> SET PASSTHROUGH 3;
Passthrough command has set autocommit off.
Command> SELECT ROWID FROM dual;
 5115: Unsupported type mapping for column ROWID
The command failed.
Command> SELECT CAST (ROWID AS CHAR(18)) FROM DUAL;
< AAAAB0AABAAAAEoAAA >
1 row found.

主キーおよび外部キーの列は、キー以外の列と区別されます。キャッシュ表のキー列で使用可能なデータ型マッピングを表C-1に示します。

表C-1 キー列で使用可能なデータ型マッピング

Oracle Databaseデータ型 TimesTenデータ型

NUMBER(p,s)

NUMBER(p,s)

注意: DECIMAL(p,s)またはNUMERIC(p,s)も使用できます。これらはNUMBER(p,s)の別名です。

NUMBER(p,0)

INTEGER

TT_TINYINT

TT_SMALLINT

TT_INTEGER

TT_BIGINT

NUMBER(p,0)

NUMBER

TT_TINYINT

TT_SMALLINT

TT_INTEGER

TT_BIGINT

NUMBER

CHAR(m)

CHAR(m)

VARCHAR2(m)

VARCHAR2(m)

RAW(m)

VARBINARY(m)

DATE

DATE

TIMESTAMP(m)

TIMESTAMP(m)

NCHAR(m)

NCHAR(m)

NVARCHAR2(m)

NVARCHAR2(m)


表C-2に、キャッシュ表のキー以外の列のデータ型マッピングを示します。

表C-2 キー以外の列で使用可能なデータ型マッピング

Oracle Databaseデータ型 TimesTenデータ型

NUMBER(p,s)

NUMBER(p,s)

REAL

FLOAT

BINARY_FLOAT

DOUBLE

BINARY_DOUBLE

NUMBER(p,0)

INTEGER

TT_TINYINT

TT_SMALLINT

TT_INTEGER

TT_BIGINT

NUMBER(p,0)

FLOAT

BINARY_FLOAT

DOUBLE

BINARY_DOUBLE

NUMBER

TT_TINYINT

TT_SMALLINT

TT_INTEGER

TT_BIGINT

NUMBER

REAL

FLOAT

BINARY_FLOAT

DOUBLE

BINARY_DOUBLE

CHAR(m)

CHAR(m)

VARCHAR2(m)

VARCHAR2(m)

RAW(m)

VARBINARY(m)

LONG

VARCHAR2(m)

注意: mは、VARCHAR2データ型に対して定義された範囲内の任意の有効な値に設定できます。

LONG RAW

VARBINARY(m)

注意: mは、VARBINARYデータ型に対して定義された範囲内の任意の有効な値に設定できます。

DATE

DATE

TIMESTAMP(0)

TIMESTAMP(m)

TIMESTAMP(m)

FLOAT(n)

注意: DOUBLEおよびFLOATが含まれ、いずれもFLOAT(126)に相当します。REALも含まれますが、これはFLOAT(63)に相当します。

FLOAT(n)

BINARY_DOUBLE

注意: FLOAT(126)は、DOUBLEとして宣言できます。FLOAT(63)は、REALとして宣言できます。

BINARY_FLOAT

BINARY_FLOAT

BINARY_DOUBLE

BINARY_DOUBLE

NCHAR(m)

NCHAR(m)

NVARCHAR2(m)

NVARCHAR2(m)

CLOB

VARCHAR2(n)

注意: 1 <= m <= 4MB。

BLOB

VARBINARY(m)

注意: 1 <= m <= 16MB。

NCLOB

NVARCHAR2(m)

注意: 1 <= m <= 4MB。