ヘッダーをスキップ
Oracle In-Memory Database Cacheユーザーズ・ガイド
リリース11.2.1
B56054-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

11 TimesTenとOracle間の互換性

この章では、TimesTenとOracle間の互換性の問題を示します。リストは完全なものではなく、特に注意が必要な領域を示すものです。内容は次のとおりです。

互換性の問題の概要

TimesTenとOracle間の次の相違について考慮します。

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

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

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.1.0.7用のOCI関数の完全なリストおよび関数の互換性の問題に関する注意事項については、『Oracle TimesTen In-Memory Database C開発者ガイド』のTimesTenによるOracle Call Interfaceのサポートに関する説明を参照してください。

SQLの互換性

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

スキーマ・オブジェクト

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


アクセス制御オブジェクト:
ロール
プロファイル
コンテキスト

ストレージ管理機能:
クラスタ
表領域
ロールバック・セグメント
CREATE DATABASE文およびDROP DATABASE文
データベース・リンク
ディレクトリ
パーティション
拡張機能
外部プロシージャ・ライブラリ
オブジェクト表
オブジェクト・タイプ
オブジェクト・ビュー

TimesTenでは、ビューおよびマテリアライズド・ビューがサポートされていますが、Oracleビューをキャッシュすることはできません。

OracleとTimesTenの表の相違

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

  • ON DELETE SET NULL

  • チェック制約

データ型のサポート

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


TIMESTAMP WITH TIME ZONE
TIMESTAMP WITH LOCAL TIME ZONE
INTERVAL YEAR TO MONTH
INTERVAL DAY TO SECOND
UROWID
CLOB
NCLOB
BLOB
BFILE
REF
Any型
XML型
空間型
メディア型

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


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 NCHAR/NVARCHAR2データ型はUTF-16またはUTF-8のいずれかとしてエンコードされます。

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


SQL演算子

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


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

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

SQL関数

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


ABS
ADD_MONTHS
AVG
CEIL
COALESCE
CONCAT
COUNT
DECODE
EXTRACT
FLOOR
GREATEST
INSTR
LEAST
LENGTH
LPAD
LTRIM
MAX
MIN
MOD
NUMTOYMINTERVAL
NUMTODSINTERVAL
NVL
POWER
ROUND
RPAD
RTRIM
SIGN
SQRT
SUBSTR
SUM
SYSDATE
TO_DATE
TO_CHAR
TO_NUMBER
TRIM
TRUNC

SQL式

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


列参照
順序
NULL
()
バインディング・パラメータ
CASE式
CAST

SQL副問合せ

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


IN(副問合せ)
>,<,= ANY(副問合せ)
>,=,< SOME(副問合せ)
EXISTS(副問合せ)
>,=,<(スカラー副問合せ)
DELETE/UPDATEのWHERE句内
FROM句内

注意:

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

SQL問合せ

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

  • FOR UPDATE

  • ORDER BY

  • GROUP BY

  • 表の別名

  • 列の別名

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

INSERT/DELETE/UPDATE文

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

  • INSERT INTO .. VALUES

  • INSERT INTO ..SELECT

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

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

  • MERGE(TimesTenでは、MERGE文のODBCバッチ実行はサポートされていません)

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

この項では、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リファレンス』の組込みプロシージャに関する説明を参照してください。

PL/SQLコンストラクト

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

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

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

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

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

Oracleデータ型 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)


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

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

Oracleデータ型 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)