| Oracle® In-Memory Database Cache User's Guide 11g Release 2 (11.2.2) Part Number E21634-05 | 
 | 
| 
 | PDF · Mobi · ePub | 
This chapter lists compatibility issues between TimesTen and Oracle. The list is not complete, but it indicates areas that require special attention. It includes the following topics:
Consider the following differences between TimesTen and Oracle:
TimesTen and Oracle database metadata are stored differently. See "API compatibility" for more information.
TimesTen and Oracle have different transaction isolation models. See "Transaction semantics" for more information.
TimesTen and Oracle have different connection and statement properties. For example, TimesTen does not support catalog names, scrollable cursors or updateable cursors.
Sequences are not cached and synchronized between the TimesTen database and the corresponding Oracle database. See "SQL expressions" for more information.
Side effects of Oracle triggers and stored procedures are not reflected in the TimesTen database until after an automatic or manual refresh operation.
TimesTen and Oracle transaction semantics differ as follows:
Oracle serializable transactions can fail at commit time because the transaction cannot be serialized. TimesTen uses locking to enforce serializability.
Oracle can provide both statement-level and transaction-level consistency by using a multiversion consistency model. TimesTen does not provide statement-level consistency. TimesTen provides transaction-level consistency by using serializable isolation.
Oracle users can lock tables explicitly through SQL. This locking feature is not supported in TimesTen.
Oracle supports savepoints while TimesTen does not.
In Oracle, a transaction can be set to be read-only or read/write. This is not supported in TimesTen.
For more information about TimesTen isolation levels and transaction semantics, see "Transaction Management and Recovery" in Oracle TimesTen In-Memory Database Operations Guide.
For a complete list of the JDBC API classes and interfaces that TimesTen supports with notes on which methods have a compatibility issue, see "Key JDBC classes and interfaces" in Oracle TimesTen In-Memory Database Java Developer's Guide.
For a complete list of the ODBC API functions that TimesTen supports with notes on which functions have a compatibility issue, see "TimesTen ODBC Functions and Options" in Oracle TimesTen In-Memory Database C Developer's Guide.
For a complete list of the OCI functions for Oracle database, release 11.2.0.2, that TimesTen supports with notes on which functions have a compatibility issue, see "TimesTen Support for Oracle Call Interface" in Oracle TimesTen In-Memory Database C Developer's Guide.
For information about TimesTen support for Pro*C/C++, see "TimesTen Support for Oracle Pro*C/C++ Precompiler" in Oracle TimesTen In-Memory Database C Developer's Guide.
For information about TimesTen support for ODP.NET, see Oracle Data Provider for .NET Oracle TimesTen In-Memory Database Support User's Guide.
For information about TimesTen support for PL/SQL, see Oracle TimesTen In-Memory Database PL/SQL Developer's Guide.
The TimesTen C++ Interface Classes (TTClasses) library provides a high-performance interface to TimesTen that is easy to use. This C++ class library provides wrappers around the most common ODBC functionality. This API is not available for the Oracle Database. See Oracle TimesTen In-Memory Database TTClasses Guide.
This section compares TimesTen's SQL implementation with Oracle's SQL. The purpose is to provide users with a list of Oracle SQL features not supported in TimesTen or supported with different semantics.
TimesTen does not recognize some of the schema objects that are supported in Oracle. TimesTen returns a syntax error when a statement manipulates or uses these objects. TimesTen passes the statement to Oracle. The unsupported objects are:
CREATE DATABASE statementCREATE JAVA statementTimesTen supports views and materialized views, but it cannot cache an Oracle view. TimesTen can cache an Oracle materialized view in a user managed cache group without the AUTOREFRESH cache group attribute and PROPAGATE cache table attribute. The cache group must be manually loaded and flushed.
TimesTen can cache Oracle partitioned tables at the table level, but individual partitions cannot be cached. The following describes how operations on partitioned tables affect cache groups:
DDL operations on a table that has partitions do not affect the cache group unless there is data loss. For example, if a partition with data is truncated, an AUTOREFRESH operation does not delete the data from the corresponding cached table.
WHERE clauses in any cache group operations cannot reference individual partitions or subpartitions. Any attempt to define a single partition of a table returns an error.
TimesTen does not recognize some of the schema objects that are supported in Oracle. TimesTen returns a syntax error when a statement manipulates or uses these objects. TimesTen passes the statement to Oracle. The unsupported objects are:
The Oracle table features that TimesTen does not support are:
ON DELETE SET NULL
Check constraints
Foreign keys that reference the table on which they are defined
The following Oracle data types are not supported by TimesTen:
TIMESTAMP WITH TIME ZONETIMESTAMP WITH LOCAL TIME ZONEINTERVAL YEAR TO MONTHINTERVAL DAY TO SECONDUROWIDBFILEThe following TimesTen data types are not supported by Oracle:
TT_CHARTT_VARCHARTT_NCHARTT_NVARCHARTT_BINARYTT_VARBINARYTINYINT and TT_TINYINTTT_SMALLINTTT_INTEGERTT_BIGINTTT_DECIMALTT_DATETIME and TT_TIMETT_TIMESTAMP
Note:
TimesTenNCHAR and NVARCHAR2 data types are encoded as UTF-16. Oracle NCHAR and NVARCHAR2 data types are encoded as either UTF-16 or UTF-8.
To cache an Oracle NCHAR or NVARCHAR2 column, the Oracle NLS_NCHAR_CHARACTERSET encoding must be AL16UTF16, not AL32UTF8.
TimesTen supports these operators and predicates that are supported by Oracle:
-+, -, *, /=, <, >, <=, >=, <>, !=||IS NULL, IS NOT NULLLIKE (Oracle LIKE operator ignores trailing spaces, but TimesTen does not)BETWEENINNOT IN (list)ANDOR+ (outer join)ANY, SOMEALL (list)EXISTSUNIONMINUSINTERSECTAND operation of two bit vector expressions, TimesTen uses the ampersand character (&) between the expressions while Oracle uses the BITAND function with the expressions as arguments.TimesTen supports these clauses of a SELECT statement that are supported by Oracle:
FOR UPDATE
ORDER BY, including NULLS FIRST and NULLS LAST
GROUP BY, including ROLLUP, GROUPING_SETS and grouping expression lists
Table alias
Column alias
Subquery factoring clause with constructor
Oracle supports flashback queries, which are queries against a database that is in some previous state (for example, a query on a table as of yesterday). TimesTen does not support flashback queries.
TimesTen supports these subqueries that are supported by Oracle:
IN (subquery)>,<,= ANY (subquery)>,=,< SOME (subquery)EXISTS (subquery)>,=,< (scalar subquery)WHERE clause of DELETE/UPDATEFROM clauseWITH constructor)
Note:
A nonverifiable scalar subquery is a scalar subquery whose 'single-row-result-set' property cannot be determined until execution time. TimesTen allows at most one nonverifiable scalar subquery in the entire query and the subquery cannot be specified in anOR expression.TimesTen supports these functions that are supported by Oracle:
ABSADD_MONTHSASCIISTRAVGCASTCEILCOALESCECONCATCOUNTCHRDECODEDENSE_RANKEMPTY_BLOBEMPTY_CLOBEXTRACTFIRST_VALUEFLOORGREATESTGROUP_IDGROUPINGGROUPING_IDINSTRLAST_VALUELEASTLENGTHLOWERLPADLTRIMMAXMINMODMONTHS_BETWEENNCHRNLS_CHARSETNLS_CHARSET_NAMENLSSORTNULLIFNUMTOYMINTERVALNUMTODSINTERVALNVLPOWERRANKREPLACEROUNDROW_NUMBERRPADRTRIMSIGNSQRTSUBSTRSUMSYS_CONTEXTSYSDATETO_BLOBTO_CLOBTO_CHARTO_DATETO_LOBTO_NCLOBTO_NUMBERTRIMTRUNCUIDUNISTRUPPERUSERThese TimesTen functions are not supported by Oracle:
CURRENT_USERGETDATEORA_SYSDATESESSION_USERSYSTEM_USERTIMESTAMPADDTIMESTAMPDIFFTT_HASHTT_SYSDATETTGRIDNODENAMETTGRIDMEMBERIDTTGRIDUSERASSIGNEDNAMETimesTen and the Oracle Database interpret the literal N'\UNNNN' differently. In TimesTen, N'\unnnn' (where nnnn is a number) is interpreted as the national character set character with the code nnnn. In the Oracle Database, N'\unnnn' is interpreted as 6 literal characters. The \u is not treated as an escape. This difference causes unexpected behavior. For example, loading a cache group with a WHERE clause that contains a literal can fail. This can also affects dynamic loading and cache grid operation. Applications should use the UNISTR SQL function instead of literals.
TimesTen supports these expressions that are supported by Oracle:
NULL()CASE expressionROWID pseudocolumnROWNUM pseudocolumnTimesTen and Oracle treat literals differently. See the description of HexadecimalLiteral in "Constants" in Oracle TimesTen In-Memory Database SQL Reference.
TimesTen supports these DML statements that are supported by Oracle:
INSERT INTO ... VALUES
INSERT INTO ... SELECT
UPDATE WHERE expression (expression may contain a subquery)
DELETE WHERE expression (expression may contain a subquery)
TimesTen does not support updating of primary key values except when the new value is the same as the old value.
This section lists TimesTen SQL statements and functions and built-in procedures that are not supported by Oracle. With PassThrough=3, these statements are passed to Oracle for execution and an error is generated.
All TimesTen cache group DDL and DML statements, including CREATE CACHE GROUP, DROP CACHE GROUP, ALTER CACHE GROUP, LOAD CACHE GROUP, UNLOAD CACHE GROUP, REFRESH CACHE GROUP and FLUSH CACHE GROUP.
All TimesTen replication management DDL statements, including CREATE REPLICATION, DROP REPLICATION, ALTER REPLICATION, CREATE ACTIVE STANDBY PAIR, ALTER ACTIVE STANDBY PAIR and DROP ACTIVE STANDBY PAIR.
FIRST n clause
ROWS m TO n clause
All TimesTen built-in procedures. See "Built-In Procedures" in Oracle TimesTen In-Memory Database Reference.
TimesTen supports a subset of stored procedure constructs, functions, data types, packages and package bodies that are supported by Oracle. See Oracle TimesTen In-Memory Database PL/SQL Developer's Guide for details.
When you choose data types for columns in the TimesTen cache tables, consider the data types of the columns in the Oracle tables and choose an equivalent or compatible data type for the columns in the cache tables.
Note:
TimeTen cache, including passthrough, does not support the OracleROWID data type. However, you can cast any ROWID data type to the CHAR data type when provided on the SELECT list in a SQL query.Primary and foreign key columns are distinguished from non-key columns. The data type mappings allowed for key columns in a cache table are shown in Table 13-1.
Table 13-1 Data type mappings allowed for key columns
| Oracle data type | TimesTen data type | 
|---|---|
| 
 | 
 Note:  | 
| 
 
 | 
 
 
 
 
 | 
| 
 | 
 
 
 
 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
Table 13-2 shows the data type mappings allowed for non-key columns in a cache table.
Table 13-2 Data type mappings allowed for non-key columns
| Oracle data type | TimesTen data type | 
|---|---|
| 
 | 
 
 
 
 
 
 | 
| 
 
 | 
 
 
 
 
 
 
 
 
 | 
| 
 | 
 
 
 
 
 
 
 
 
 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 Note:  | 
| 
 | 
 Note:  | 
| 
 | 
 
 | 
| 
 | 
 | 
| 
 Note: Includes  | 
 
 Note:  | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 | 
| 
 | 
 Note: 1<= | 
| 
 | 
 Note: 1<= | 
| 
 | 
 Note: 1<= |