次の各項では、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オペレーション・ガイド』のトランザクションの管理に関する説明を参照してください。
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ガイドを参照してください。
この項では、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マテリアライズド・ビューをキャッシュできます。キャッシュ・グループは、手動でロードおよびフラッシュする必要があります。
TimesTenは表レベルでOracle Databaseパーティション表をキャッシュできますが、個々のパーティションはキャッシュできません。次に、パーティション表に対する処理がキャッシュ・グループにどう影響するかを示します。
パーティションを持つ表に対するDDL操作は、データ・ロスがないかぎりキャッシュ・グループに影響しません。たとえば、データのあるパーティションが切り捨てられた場合、AUTOREFRESH
処理は対応するキャッシュ対象の表からデータを削除しません。
すべてのキャッシュ・グループ操作で、WHERE
句は個々のパーティションまたはサブパーティションを参照できません。表の単一パーティションを定義しようとすると、エラーが返されます。
TimesTenでは、Oracle Databaseでサポートされているスキーマ・オブジェクトの一部が認識されません。文でこれらのオブジェクトが処理または使用されると、TimesTenは構文エラーを返します。TimesTenは文をOracle Databaseに渡します。サポートされていないオブジェクトは、次のとおりです。
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
次の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
注意: TimesTenNCHAR データ型およびNVARCHAR2 データ型はUTF-16 としてエンコードされます。Oracle Database NCHAR データ型およびNVARCHAR2 データ型は、UTF-16 またはUTF-8 としてエンコードされます。
Oracle Database |
TimesTenでは、Oracle Databaseでサポートされている次の演算子および条件がサポートされています。
-
(単項)+, -, *, /
=, <, >, <=, >=, <>, !=
||
IS NULL
、IS NOT NULL
LIKE
(Oracle DatabaseのLIKE
演算子は後続の空白を無視しますが、TimesTenの場合は無視しません)BETWEEN
IN
NOT IN
(リスト)AND
OR
+
(外部結合)ANY
、SOME
ALL
(リスト)EXISTS
UNION
MINUS
INTERSECT
AND
演算を実行する場合、TimesTenでは2つの式間にアンパサンド文字(&
)が使用され、Oracle Databaseでは2つの式が引数として指定されたBITAND
関数が使用されます。TimesTenでは、Oracle DatabaseでサポートされているSELECT
文の次の句がサポートされています。
FOR UPDATE
ORDER BY
(NULLS FIRST
およびNULLS LAST
を含む)
GROUP BY
(ROLLUP
、GROUPING_SETS
およびグループ化式リストを含む)
表の別名
列の別名
コンストラクタを使用する副問合せのファクタリング句
Oracle Databaseでは、過去のある時点でのデータベースに対する問合せ(昨日の時点での表に対する問合せなど)を行う、フラッシュバック問合せがサポートされています。TimesTenでは、フラッシュバック問合せをサポートしていません。
TimesTenでは、Oracle Databaseでサポートされている次の副問合せがサポートされています。
IN
(副問合せ)>,<,= ANY
(副問合せ)>,=,< SOME
(副問合せ)EXISTS
(副問合せ)>,=,<
(スカラー副問合せ)DELETE
/UPDATE
のWHERE
句内の副問合せFROM
句内の副問合せWITH
コンストラクタ)
注意: 検証不能スカラー副問合せとは、実行時までその単一行結果セット・プロパティを決定できないスカラー副問合せのことです。TimesTenでは、問合せ全体で1つ以下の検証不能スカラー副問合せを許容できますが、この副問合せはOR 式には指定できません。 |
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'\u
nnnn
'
(ここでは、nnnn
は数値)は、コードnnnn
を使用する各国語キャラクタ・セットの文字として解釈されます。Oracle Databaseでは、N'\u
nnnn
'
は、6つのリテラル文字として解釈されます。\u
は、エスケープとして処理されません。この違いにより予想外の動作が発生します。たとえば、リテラルを含むWHERE
句を使用したキャッシュ・グループのロードは失敗する可能性があります。また、これは、動的ロードおよびキャッシュ・グリッド処理に影響を与える可能性もあります。アプリケーションでは、リテラルではなく、UNISTR
SQL関数を使用する必要があります。
TimesTenでは、Oracle Databaseでサポートされている次の式がサポートされています。
NULL
()
CASE
式ROWID
疑似列ROWNUM
疑似列TimesTenおよびOracle Databaseでは、リテラルに関して異なる解釈をします。『Oracle TimesTen In-Memory Database SQLリファレンス』の定数に関する説明のHexadecimalLiteral
を参照してください。
TimesTenでは、Oracle Databaseでサポートされている次のDML文がサポートされています。
INSERT INTO ... VALUES
INSERT INTO ... SELECT
UPDATE WHERE
式(副問合せが含まれる場合があります)
DELETE WHERE
式(副問合せが含まれる場合があります)
TimesTenでは、新しい値が古い値と同じ場合を除き、主キー値の更新はサポートされません。
この項では、Oracle DatabaseではサポートされていないTimesTenのSQL文とSQL関数および組込みプロシージャを示します。PassThrough
= 3を設定すると、次の文はOracle Databaseに渡されて実行され、エラーが発生します。
すべての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
を含む)。
FIRST
n
句。
ROWS
m
TO
n
句。
すべてのTimesTen組込みプロシージャ。『Oracle TimesTen In-Memory Databaseリファレンス』の組込みプロシージャに関する説明を参照してください。
TimesTenキャッシュ表の列に対してデータ型を選択する場合は、Oracle Database表の列のデータ型を考慮し、キャッシュ表の列に対して同等または互換性のあるデータ型を選択してください。
注意: パススルーを含め、TimeTenのキャッシュはOracle DatabaseROWID データ型をサポートしません。ただし、SQL問合せのSELECT リストで指定されている場合は、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に示します。
Oracle Databaseデータ型 | TimesTenデータ型 |
---|---|
|
注意: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
表C-2に、キャッシュ表のキー以外の列のデータ型マッピングを示します。
Oracle Databaseデータ型 | TimesTenデータ型 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
注意: |
|
注意: |
|
|
|
|
注意: |
注意: |
|
|
|
|
|
|
|
|
|
注意: 1 <= |
|
注意: 1 <= |
|
注意: 1 <= |