Release Notes for
Oracle TimesTen In-Memory Database 7.0.5.0.0
Part Number B31692-09
This document provides late-breaking information as well as information that is not yet part of the formal documentation.
To install the Oracle TimesTen In-Memory Database, run
setup
from the installation media pack.For installation information, please see the
Oracle TimesTen In-Memory Database
Installation Guide (install.pdf
). This file is located in thedoc
directory of the root of the installation media pack.This documentation contains the following sections:
2. Software requirements and installation
7. Known problems and limitations
8. Contacting Oracle for Oracle TimesTen support
1. Platforms
Oracle TimesTen In-Memory Database is supported in these environments:
- AIX 5L 5.2 (patch level 5200-08 or greater) and 5.3 32-bit and 64-bit for POWER systems. Compiled and tested with XL C/C++ Visual Age V7 compiler. The same version of the C++ runtime is required on both AIX 5.2 and 5.3.
- Asianux 2.0 for 32-bit and 64-bit Intel IA-32, EM64T and AMD64 CPUs. Compiled with gcc 3.2.3. Tested with gcc 3.2.3, 3.4.3 and 4.1.0.
- HP-UX 11i, 11i v2 and 11i v3 32-bit and 64-bit for PA-RISC CPUs. Compiled and tested with the HP compiler.
- HP-UX 11i v2 and 11i v3 32-bit and 64-bit for Itanium2. Compiled and tested with the HP Compiler.
- HP Tru64 UNIX 5.1B for AlphaChip EV68 CPUs. Compiled and tested with Compaq C/C++ 6.5 compiler.
- Microsoft Windows 2000, Windows XP and Windows Server 2003 for Intel IA-32, EM64T and AMD64 CPUs. Compiled and tested with the Intel 8 compiler. Visual C++ 6.0 and Visual C++ 7.0 (.NET) are also supported.
- MontaVista Linux Carrier Grade Edition 4.0 32-bit and 64-bit for Intel IA-32, AMD64 and EM64T CPUs.Compiled with gcc 3.2.3. Tested with gcc 3.0 and 3.2. Compiled and tested with Intel 9.1. Client/Server tested with gcc 3.2.3, 3.4.6 and 4.1.0.
- Oracle Enterprise Linux 4 and 5 for 32-bit and 64-bit Intel IA-32, EM64T and AMD64 CPUs. Compiled with gcc 3.2.3. Tested with gcc 3.2.3, 3.4.3 and 4.1.0. Compiled and tested with Intel 9.1. Client/Server tested with gcc 3.2.3, 3.4.6 and 4.1.0.
- Red Hat Enterprise Linux AS, ES and WS 3, 4 and 5 for 32-bit and 64-bit Intel IA-32, EM64T and AMD64 CPUs. Compiled with gcc 3.2.3. Tested with gcc 3.2.3, 3.4.3 and 4.1.0. Compiled and tested with Intel 9.1. Client/Server tested with gcc 3.2.3, 3.4.6 and 4.1.0.
- Red Hat Enterprise Linux AS, ES and WS 3, 4 and 5 for 64-bit Intel Itanium2 CPUs. Compiled and tested with Intel 8.1. Compiled and tested with Intel 9.1. Client/Server tested with gcc 3.2.3, 3.4.5 and 4.1.0.
- Solaris 8, 9 and 10 32-bit and 64-bit for UltraSparc architecture CPUs. Compiled with Sun Studio 11. Shipped with a TimesTen client library compiled with gcc 3.2.3.
- Solaris 10 32-bit and 64-bit for AMD64 CPUs. Compiled and tested with the Sun Studio 10 compiler.
- SuSE Linux Enterprise Server 10 64-bit for Intel Itanium2 CPUs. Compiled and tested with gcc 4.1.0. Compiled and tested with Intel 9.1. Client/Server tested with gcc 3.2.3, 3.4.5 and 4.1.0.
- SuSE Linux Enterprise Server 9 and 10 32-bit and 64-bit for Intel IA-32 and EM64T and AMD64
CPUs. Compiled with gcc 3.2.3. Compiled and tested with gcc 4.1.0. Compiled and tested with Intel 9.1. Client/Server tested with gcc 3.2.3, 3.4.6 and 4.1.0.
The Oracle TimesTen In-Memory Database TTClasses library is compiled using the same compiler that is used for building the rest of the libraries for each platform. You can determine which compiler has been used by looking in install_dir
/lib
and noting the name of the compiler appended tolibttclasses.so
. For example,libttclasses.so.gcc346
is compiled using the gcc 3.4.3 compiler. To use another compiler, you must rebuild the TTClasses library.On Windows, the default TTClasses libraries are built with Microsoft Visual C++ 6. You can find them in install_dir
/lib
and install_dir/bin
. The TTClasses libraries are also built with Microsoft Visual C++ 7 and Microsoft Visual C++8 are in install_dir/ttclasses/vc7
and install_dir/ttclasses/vc8
respectively. To use these libraries instead of the libraries built with Microsoft Visual C++ 6, copy thettclasses.dll
to the install_dir/bin
directory and thettclasses.lib
to the install_dir/lib
directory.2. Software requirements and installation
For software requirements please refer to the Oracle TimesTen In-Memory Database Installation Guide.
3. Disk space requirements
The following table lists approximate disk space requirements for a typical installation. Requirements listed as "Movable" indicate that the component is installed in a user-specified file system at installation time. The variable install_dir represents the directory where the current release of TimesTen is installed. The TimesTen default installation directories for a
root
instance of TimesTen release 7.0 are:For each operating system, TimesTen installs certain files in a system directory that cannot be moved. The table assumes a
root
instance and indicates which files are movable.Add 30MB to the numbers in this table if you install the TimesTen documentation.
4. Deliverables
You should receive the following with your copy of the Oracle TimesTen In-Memory Database:
- Release Notes. This document (which you are now reading) covers late-breaking information not included in the formal documentation.
- Oracle TimesTen Media Pack. The media pack includes the Oracle TimesTen libraries and executables, demo programs, utilities, and online documentation.
The documentation included on the media pack consists of:
- Oracle TimesTen In-Memory Database Documentation Addendum
.
This document covers features that are new to TimesTen as of the 7.0.4.0.0 release of TimesTen and should be used in conjunction with the following documents. The information in the following documents is current as of the 7.0.3.0.0 release and, unless noted in the doc addendum or these release notes, applies to this release. (docaddendum.pdf)- Oracle TimesTen In-Memory Database Installation Guide (Part Number B31679-03). (See the description above.) (install.pdf)
- Oracle TimesTen In-Memory Database Introduction (Part Number B31687-03). This guide describes the features of Oracle TimesTen and provides information to help developers plan an Oracle TimesTen application. (intro.pdf)
- Oracle TimesTen In-Memory Database Operations Guide (Part Number B31689-03). Provides information on configuring TimesTen and using the ttIsql utility to manage a data store. This guide also provides a basic tutorial for TimesTen. (operations.pdf)
- Oracle TimesTen In-Memory Database C Developer's and Reference Guide (Part Number B31680-03). This guide describes how to compile and link your C application with Oracle TimesTen and how to set up and work with Oracle TimesTen data stores. It covers topics that include error handling, event management, and performance tuning. It also provides a reference for all C language-specific APIs.(C_dev.pdf)
- Oracle TimesTen In-Memory Database Java Developer's and Reference Guide (Part Number B31681-02). This guide describes how to compile and link your Java application with Oracle TimesTen and how to set up and work with Oracle TimesTen data stores. It covers topics that include error handling, event management, and performance tuning. It includes information about configuring Oracle TimesTen with application servers. It also provides a reference for Java language-specific APIs. (java_dev.pdf)
- Oracle TimesTen In-Memory Database API Reference Guide (Part Number B31683-03). This guide provides a reference of all Oracle TimesTen utilities, procedures, APIs and provides a reference to other features of TimesTen. (tt_ref.pdf)
- Oracle TimesTen In-Memory Database SQL Reference Guide (Part Number B31682-03. This guide contains a complete reference to all TimesTen SQL statements, expressions and functions, including TimesTen SQL extensions. (sql.pdf)
- Oracle TimesTen In-Memory Database Error Messages and SNMP Traps (Part Number B31690-03). This guide contains a complete reference to the TimesTen error messages and information on using SNMP Traps with TimesTen. (error_ref.pdf)
- TimesTen to TimesTen Replication Guide (Part Number B31684-03). This guide provides background information to help you understand how Oracle TimesTen replication works and step-by-step instructions and examples that show how to perform the most commonly needed tasks. (replication.pdf)
- TimesTen Cache Connect to Oracle Guide (Part Number B31685-03). This guide provides background information to help you understand how to create and manage a Oracle TimesTen cache for Oracle data. (cacheconnect.pdf)
- Oracle TimesTen In-Memory Database TTClasses Guide (Part Number B31691-02). This guide describes the Oracle TimesTen C++ Interface Classes library. The library provides wrappers around the most common ODBC functionality. (ttclasses.pdf)
- Oracle TimesTen In-Memory Database Troubleshooting Procedures Guide (Part Number B31688-03). This guide describes how to troubleshoot some of the problems users encounter when using TimesTen. (troubleshooting.pdf)
- Microsoft ODBC Programmer's Manual. This Microsoft book describes the ODBC interface that is used to access Oracle TimesTen data stores. Shipments for UNIX and Windows NT include a reference on ODBC version 2.0. Oracle TimesTen supports ODBC version 2.5 on UNIX. The differences between version 2.0 and 2.5 are covered in Oracle TimesTen In-Memory Database C Developer's and Reference Guide. (ms.odbc.pdf)
- Oracle TimesTen In-Memory Database Release Notes (Part Number B31692-04). (See the description above.)
- Behavior Changes in Oracle TimesTen In-Memory Database (Part Number B31694-04). (behaviorchanges.txt)
If any of these items is missing, please contact Oracle for TimesTen support. See 8. Contacting Oracle for Oracle TimesTen support
5. Advance notice
5.1 Deprecated items in Release 7.0.3.0.0
5.2 Removed items in Release 7.0.1.0.0
This item has been removed.
5.3 Deprecated items in Release 7.0.1.0.0
These items are supported for backward compatibility only and will be removed in a later release. TimesTen returns a warning message when you use a deprecated item.
- Threadsafe attribute. By default TimesTen supports multiple concurrent connections to the same data store.
- ExclAccess attribute.TimesTen loads the data store in shared mode.
- SMPOptLevel attribute.
- Diskless mode of the Logging attribute and diskless data store mode
- Replication of temporary data stores
- SELECT FOR UPDATE ON ORACLE SQL statement
- WITH LIMIT clause in CREATE CACHE GROUP and ALTER CACHE GROUP SQL statements
- DURATION option in CREATE CACHE GROUP and ALTER CACHE GROUP SQL statements
- Restricted cache groups
- ttCachePolicy built-in procedure - Replaced by ttCachePolicySet
- ttRepPolicy built-in procedure - Replaced by ttRepPolicySet
- ttXlaDeleteBookmark built-in procedure - Replaced by ttXlaBookmarkDelete
- JDBC classes files: The
classes14.jar
has been replaced with thettjdbc14.jar
. Theclasses15.jar
has been replaced with thettjdbc5.jar
.- The
ttCacheAgingMemoryThresholdSet
andttCacheAgingIntervalSet
built-in procedures.5.4 Deprecated items in Release 6.0 that are removed in 7.0.1.0.0
These items were deprecated but supported for backward compatibility in the 6.0 release of the Oracle TimesTen In-Memory Database. They have been removed from release 7.0.1.0.0.
- The ttRepRRXactIdGet built-in procedure has been removed. Use ttRepXactTokenGet instead.
- The ttRepRRXactStatus built-in procedure has been removed. Use ttRepXactStatus instead.
- SQL_C_ADDR ODBC type has been removed.
- The ttRepDuplicate and ttRepDuplicateAcc utilities APIs have been replaced by ttRepDuplicateEx.
- The following name changes for built-in procedures have occurred. The old names are no longer supported.
- ttCGGenSQL to ttCacheSqlGet
- ttCGMonitor to ttCacheMonitor
- ttCacheSetMemoryThreshold to ttCacheAgingMemoryThresholdSet
- ttCacheSetAgingInterval to ttCacheAgingIntervalSet
- ttCachePropagateFlag to ttCachePropagateFlagSet
- ttOracleAgentStart to ttCacheStart
- ttOracleAgentStop to ttCacheStop
- ttOracleAgentPolicy to ttCachePolicy
- ttCacheSetAgingInterval to ttCacheAgingIntervalSet
- ttAdmin
-oracleUidPwdSet
to ttAdmin-cacheUidPwdSet
- The following command line changes to the arguments for ttAdmin, ttMigrate and ttRepAdmin
-duplicate
have occurred. The old argument names are no longer supported.- The ttIsql command
cggensql
has changed tocachesqlget
. Thecggensql
command is no longer supported.- The following name changes for SNMP traps have occurred:
- The TimesTen
ttVars.bat
script to set environment variables on Windows has been replaced by:- The Timesten
ttSetEnv.csh
andttSetEnv.sh
scripts for setting environment variables on UNIX have been replaced by:6. Changes in this release
6.1 Changes for Release 7.0.5.0.0 from Release 7.0.4.0.0
6.1.1 New features in this release
- The Installer in the 7.0.5 TimesTen release refers to the "In-Memory Database Cache," previously called "Cache Connect." The Oracle TimesTen In-Memory Database Installation Guide and other documentation still uses the name "Cache Connect," when referring to this component.
- The text of the error message 5120 has been changed to "No matching unique index with not null columns, unique key constraint with not null columns, or primary key constraint on table table_name, cache operations are restricted."
6.1.2 Bug fixes in this release
- A problem has been fixed where an assertion would occur in a SELECT statement. (BugDB #6518339)
- A handle leak in the TimesTen main daemon that occurred when spawning the server (ttsrv70.exe) has been fixed. (BugDB #6726315)
- A problem has been fixed where using the bulkfetch clause for LOAD CACHE GROUP statement did not change the autorefresh state from PAUSED to ON. (BugDB #6730871)
- In previous releases, in the case where an Active Standby Pair with an Asynchronous Writethrough scheme lost its connection to Oracle, subsequent connections to the active store would hang. In this release, new connections can be made to the active store that had been disconnected to Oracle. (BugDB #6759207)
- In previous releases, updates to Oracle could be lost when creating an Active Standby Pair. In this release, TimesTen prevents the creation of an Active Standby Pair when updates to Oracle are pending. (BugDB #6779593)
- A problem has been fixed where the replication conflict report included an unnecessary word ("from") on the "Delete" line. (BugDB #6805951)
- A problem has been fixed where the replication agent could not be stopped while replication processes are still connected. (BugDB #6820765)
- In previous releases, the warning message "FULL AUTOREFRESH FOR INCREMENTAL AUTOREFRESH TABLE" described object names in the incorrect order. This problem has been fixed. (BugDB #6822671)
- In previous releases, a MERGE operation with an UPDATE on a primary key would cause an assertion. This problem has been fixed. (BugDB #6822705)
- In previous releases, altering a replication scheme to include an AWT cache group, would result in the new cache group being excluded. In this release, AWT cache groups can be included in a regular replication scheme. (BugDB #6826642)
- In previous releases, a user would receive a warning message when using the -keepCG option during a duplicate operation (ttrepadmin -duplicate) on a data store that had no defined cache group. TimesTen no longer returns a warning in this case. (BugDB #6834313 and 6878504)
- A problem has been fixed where dropping an Active/Standby scheme that has Asynchronous WriteThrough defined on it would result in high CPU usage and spinning. (BugDB #6837867)
- In previous releases, shortly after failing over from an active to a standby master, Times Ten would return error messages 5210 and 5059 in batches of 150. These errors would occur when the application was running a high transaction rate. This problem has been fixed. (BugDB #6844811)
- A problem has been fixed where a call to ttRepStateSet(`ACTIVE') would not set the replication state correctly. (BugDB #6844716)
- In previous releases, a shared index latch that was being held during a COUNT(*) operation caused serialization. This problem has been fixed. (BugDB #6845123)
- In previous releases, errors could be returned when a CREATE ACTIVE STANDBY statement and a call to ttRepStateSet occurred in the same transaction, because the state had not yet been changed. In this release, when calling the ttRepStateSet built-in procedure to change the replication state, the state change takes place at commit time. (BugDB #6864683)
- In previous releases, on Linux, the client library would be slot to time out when it could not reach the server. It now takes a much shorter time to timeout. (BugDB #6869169)
- A problem has been fixed where the optimizer would not pick the best query plan. (BugDB #6872003)
- A problem has been fixed where an error would occur during a bulk insert that had a batch size greater than 255 rows. In this case a non-error row would be skipped during the insert. (BugDB #6926754)
6.2 Changes for Release 7.0.4.0.0. from Release 7.0.3.4.0
6.2.1 New features in this release
For for new platform support, syntax and information on new features in this release, see the Oracle TimesTen In-Memory Database Documentation Addendum.
- Oracle Release 11gR1 is supported with TimesTen Cache Connect to Oracle on Linux x86 32-bit and 64-bit platforms, and on Windows 32-bit.
- JDK 6 and JRockit are certified with TimesTen.
- The Intel C compiler is supported for Linux platforms in this release.
- This release supports the ability create a remote disaster recovery site when using active standby pair replication with asynchronous writethrough (AWT) cache groups.
- The
ttCacheAwtMonitorConfig
built-in procedure has been added in this release. You can use this built-in procedure to monitor the performance of asynchronous writethrough (AWT) cache groups to determine how much time is spent performing tasks in the AWT workflow. You can use the ttRepAdmin utility with the -awtmoninfo and -showstatus commands to display the monitoring results.- In this release, the
ttXlaUpdateDesc_t
header in an XLA update record now includes a flag that describes aging deletes on a row. The flag is:TT_AGING.
It also includes a flag that describes cascade deletes on a row. The flag is:TT_CASCDEL
.- In this release, you can configure TimesTen to write a warning to the support log and throw an SNMP trap when a SQL statement execution time exceeds a user-specified query threshold in seconds. Execution continues and is not affected by the query threshold.
- This release contains a new script,
install_dir/bin/autorefreshCleanUp.sql.
You can configure theinstall_dir/bin/autorefreshCleanUp.sql
script to clean up the autorefresh objects in the Oracle database.- This release includes a new TimesTen main daemon option, -
shmLocalityHint
, that allows you to specify the locality of the shared memory segment where TimesTen data stores will exist on HP-UX ccNUMA systems.- A change in the handshake between the master data stores in an active standby pair replication configuration. If the master data stores discover that they are both in the ACTIVE state when they first connect, the data store which was set to the ACTIVE state the least recently is invalidated. When it comes back up, it is automatically set to the STANDBY state if there are no trapped transactions (replicatable transactions that cannot now be replicated due to the new role as a standby master), and is left in the IDLE state if there are such transactions. See the Oracle TimesTen In-Memory Database Documentation Addendum for more details.
6.2.2 Bug fixes in this release
- JMS/XLA performance has been improved in synchronous mode. (BugDB #5945987)
- A problem has been fixed where a Java batch update could fail and result in a general error exception being thrown. (BugDB # 6348331)
- In previous releases, a very long running replicated transaction that continuously ran into hundreds of errors would get processed very inefficiently and slow down replication. This problem has now been fixed. (BugDB #6489318)
- A problem has been fixed in which Autorefresh validation could result in a numeric range error. (BugDB #6519698)
- In previous releases, if a directory specified in the message log path did not exist, the TimesTen Server would not start and TimesTen error message 400 would be returned. In this release, the TimesTen Server ignores the missing daemon log and starts. (BugDB #6530688)
- In the previous release, TimesTen would use the wrong estimate during the final materialization in a join operation. This problem has been fixed. (BugDB #6614526)
- In previous releases, when a connection to the server port was attempted from a tool such as a port scanner, the server rejected the connection, but didn't delete the data structure allocated to handle the connection, causing a file leak. When/if the connecting process went away, the socket in the server was left in a CLOSE_WAIT state, and eventually closed, but the data structure remained, leaving open sockets. In this release, you no longer see open files and the server resumes normal operation. (BugDB #6616674)
- A problem has been fixed in which ttMigrate could fail with error 22003 while saving replication schema information for a 64-bit database. (BugDB #6666087).
- In this release, the query optimizer has been improved to so that complex queries are prepared quickly. Previously, a complex query could take a long time to prepare and could timeout, depending on the user-specified SQLQueryTimeout value. (BugDB #6677307)
- In 7.0.3.x.x, a TimesTen client would appear not to connect to a pre-6.0 TimesTen Server, and would return the warning "Undefined connection attribute." In 7.0.4, when you load a pre-6.0 TimesTen data store, the "Undefined connection attribute" warning is suppressed if it is the only warning. (BugDB #6694356)
- A problem has been fixed where the subscriber data store in a replication scheme could use more heap memory than the master side and therefore run out of memory, causing replication to fail. (BugDB # 6703028)
- In very rare cases, when working with an AWT cache group, a valid cache administrator user name/password combination would result in a login failure onto Oracle. In this case, TimesTen would return error message 5131 with an incorrect UID (as "root"). This problem has been fixed. (BugDB # 6712083)
- In previous releases, when a user specified autorefresh, unnecessary SELECT FOR UPDATE and rollback operations would occur on the Oracle Database, even when there was no UPDATE activity on the cached table. This problem has been fixed. (BugDB # 6730151)
- A problem has been fixed in which a log reader, such as a replication agent or XLA application, may trigger an assertion failure in the
sbLogBlkLRPtrExpand
function. (BugDB # 6732174)- In previous releases, when using replication, under certain boundary conditions, the transmitting thread would read invalid data beyond the end of the log record. This caused an incorrect Commit Ticket Number to get transmitted to the applying thread, which then rejected the transaction. In this case that AWT cache groups were being replicated, rows would be missing in the Oracle database involved. This has now been fixed by checking for the correct length before reading on the transmitter. (BugDB # 6736361, 6735874)
- In previous releases, an incorrect malloc failure error would appear in the awterrs file, under certain conditions. This problem has been fixed. (BugDB # 6736460)
- In previous releases, TimesTen core dumps in the ttOptEstimateStats built-in procedure when called with < 50 percent value. This problem has been fixed. (BugDB # 6754924)
- A problem has been fixed where a checkpoint would not result in files log files for a temporary data store being removed from the disk. (BugDB # 6758437)
- A problem has been fixed where the TimesTen cache agent would occasionally crash in the OCI library. In this release, TimesTen automatically recovers from the crash by restarting the cache agent. (BugDB # 6765879)
- A problem has been fixed where altering a table and adding a foreign key might fail with error 2213 if done after a ttMigrate -r of a table that had foreign keys. (BugDB # 6774885)
6.3 Changes for Release 7.0.3.4.0 from Release 7.0.3.3.0
- A problem has fixed where view column names would be lost when a SELECT statement specified an ORDER BY clause when querying the view. (BugDB #6650839)
- In previous releases, an assertion could occur when a derived table was specified as an inner table of an outer join using the (+) operator but this operator was missing from some of this derived table's columns such that the outer join specification became a no-op. This problem has been fixed. (BugDB #6667195)
6.4 Changes for Release 7.0.3.3.0 from Release 7.0.3.2.0
- A change in the enforcement of maximum lengths of SQL parameter values has caused a change in the behavior of the SQLDescribeParam, SQLExecute and SQLExecDirect ODBC functions.
For SQLDescribeParam, parameters that were previously reported as having type SQL_CHAR, SQL_WCHAR or SQL_BINARY are now described as having type SQL_VARCHAR, SQL_WVARCHAR or SQL_VARBINARY, respectively. This change does not apply to parameters whose values will be stored directly into the database, such as parameters found in the VALUES clause of a SQL INSERT statement or the SET clause of a SQL UPDATE statement.
For SQLExecute and SQLExecDirect, TimesTen may accept parameter values that are larger than their maximum lengths as reported by SQLDescribeParam. For example, for a table t1 with column c1 of type CHAR(10) and the following query:
SELECT * FROM t1 WHERE c1 = :a
TimesTen allows values larger than 10 characters to be bound to the
:a
parameter. This change does not apply to parameters whose values will be stored directly into the database, such as parameters found in the VALUES clause of a SQL INSERT statement or the SET clause of a SQL UPDATE statement. (BugDB #6658453)6.5 Changes for Release 7.0.3.2.0 from Release 7.0.3.1.0
6.6 Changes for Release 7.0.3.1.0 from Release 7.0.3.0.0
- A problem has been fixed where the maximum length of a SQL parameter could be computed to be too small, leading to spurious "String data right truncation" errors. (BugDB #5840457)
- In previous releases, Timesten would replicate a foreign key violation, which would result in an assertion. This problem has been fixed. (BugDB #6415652)
- A replication problem has been fixed where the active node in an active/standby pair would continue to send data after failover to standby. (BugDB #6442293)
- In previous releases, the TimesTen Server would not start and a core dump would occur when daemon messages were routed to syslog. This problem has been fixed. (BugDB #6446471 and 6512391)
- A problem has been fixed where the XLA reader gets progressively slower when reading a large backlog of transaction log records.
While this fix speeds up the processing of this backlog, when using XLA, users should avoid getting into a situation where the difference between the READLSNHIGH and the PURGELSNHIGH is very high by ensuring that all transactions complete in a timely manner, either by committing or rolling back. At restart time, the XLA reader must read from the beginning of the oldest unacknowledged transaction (indicated by PURGELSNHIGH and PURGELSNLOW) to the point of the last XLA acknowledgement (indicated by READLSNHIGH and READLSNLOW) before any records can be returned to the reader application. The presence of long running or long dormant transactions can cause this distance to be very large, requiring XLA to process a large number of log records during restart. (BugDB #6459488)
- A problem has been fixed where a deadlock could occur during a concurrent UPDATE of an index value of an uncommitted row and a foreign key CONSTRAINT verification of a child table insert. (BugDB #640006)
- In previous releases, when running TimesTen on a machine with a single CPU, under some circumstances a SELECT ... FOR UPDATE operation would fail to guarantee protection from multiple transactions accessing the same row concurrently. (BugDB #6488388)
- In release 7.0.3.0.0, a 6.0 Client could not connect to a TimesTen 7.0.3.0.0 Server. Cross-release TimesTen client/server connections now work both ways between 6.0.x releases and 7.0.3.1.0 or greater releases, when the
-insecure-backwards-compat
option is set in the ttendaemon.options file. (BugDB #6528619)- A problem has been fixed where an assertion would occur when an UPDATE statement assigned a NULL value to a primary key column. (BugDB #6598439)
6.7 Changes for Release 7.0.3.0.0 from Release 7.0.2.5.0
6.7.1 Enhancements to supported SQL
For a description of these enhancements and their syntax, see the
Oracle TimesTen
.
In-Memory SQL Reference Guide
- In this release, the SELECT for UPDATE syntax has been enhanced to allow subqueries.
- The CREATE TABLE as SELECT statement is now supported in TimesTen.
- Several previously unsupported SQL functions are supported in this release. The newly supported functions are:
- Altering a table to add a PRIMARY KEY constraint is now supported.
- The COMMIT and ROLLBACK SQL statements are now supported.
6.7.2 Other new features in this release
- Support for TimesTen has been added on these platforms:
Asianux 2.0 for 32-bit and 64-bit Intel IA-32, EM64T and AMD64 CPUs.
Oracle Enterprise Linux 4 and 5 for 32-bit and 64-bit Intel IA-32, EM64T and AMD64 CPUs.
Red Hat Enterprise Linux 5 for 32-bit and 64-bit Intel IA-32, EM64T, AMD64 and
Itanium 2 CPUs.
HP-UX 11i v3 32-bit and 64-bit for PA-RISC and Itanium 2 CPUs.- The IPv6 internet protocol is supported on Solaris for x86 and SPARC CPUs and on all Linux platforms on which TimesTen is supported.
- Time-based aging is now supported on columns that are of the type TT_DATE or ORA_DATE.
- The JDBC PreparedStatement.executeBatch method now supports SQLRowCount and returns an array of result rows.
- The built-in procedure ttMonitorHighWaterReset has been added to this release. This procedure sets the values of the PERM_IN_USE_HIGH_WATER and TEMP_IN_USE_HIGH_WATER fields of the system MONITOR table to the current values of PERM_IN_USE_SIZE and TEMP_IN_USE_SIZE, respectively.
- Replication hostname resolution has been improved in this release. When creating a replication scheme, users can now determine the network interface that a master store will use for every outbound connection to each of its subscriber stores.
- Users can now use SQL syntax to stop and resume conflict reporting on a replication scheme.
- In a client/server environment, the child server has been modified to support multiple TimesTen connections. In previous releases, the child server only supported one TimesTen connection. The user can configure the number of connections per child Server either with TimesTen daemon options or with TimesTen data store attributes.
- Parallel LOAD for cache groups is now supported, providing improved performance during cache group LOAD. This feature is configurable in the LOAD CACHE GROUP statement.
- This release contains new tools to monitor the progress of cache group AUTOREFRESH. The new built-in procedure ttCacheAutorefreshStatsGet returns the most recent and cumulative AUTOREFRESH information. The ttTraceMon utility can also be configured to return AUTOREFRESH information. In addition, the release contains a SQL script that can be run to return current bookmark information.
- The logging protocol for temporary data stores has been modified such that it now contains only undo information, instead of containing all the information required for a permanent data store, which also needs redo information. As a result, performance for temporary data stores has been improved in this release.
- Data access across NFS-mounted systems is supported in this release for Linux clients on x86 32-bit and 64-bit systems.
- A warning is returned if a user or application attempts to create a duplicate index on a table.
- The maximum number of columns allowed in a table on which TTClasses methods can operate has been increased to 1000.
- TimesTen now prevents the creation of an AWT cache group in a replication scheme that uses the RETURN TWOSAFE service when the replication schemes is not an Active/Standby pair.
6.7.3 Bug fixes in this release
- The error message "sbLogFilesRemove: log file ... does not exist" is now suppressed from the user error log. (BugDB # 5041271)
- The ttIsqlCS utility works in a configuration where a TimesTen 7.0.3.0.0 or greater client is connected to a 6.0.x release TimesTen server. (BugDB #5714405)
- The
-dateMode
option and the DATEMODE file attribute are now supported with the ttBulkCp utility. These features allow the user to determine if the values of columns of Oracle DATE type should contain a time component or just a date component. (Bug DB #5867897)- A problem has been fixed where TimesTen could assert when using a unique index and duplicate values could occur in some cases. (BugDB #6062188 and 6113795)
- The ttSize utility now supports the
-frac
option for indicating the fraction of the total column size used by VARCHAR and BINARY columns. TimesTen returns a warning when an overflow in the size estimate might occur. (Bug DB #6117073)- A problem has been fixed where the ttHostNameGet built-in procedure could return incorrect results. (BugDB #6128015)
- A problem has been fixed that caused poor performance when the ttMigrate utility attempted to restore tables with more than 128 columns. (BugDB #6140876)
- AWT cache groups are no longer supported with TWOSAFE replication schemes. See 7.5. Replication - TimesTen to TimesTen in the 7. Known problems and limitations section of these release notes for more details.(BugDB #6176733)
- For Windows systems, a problem has been fixed where a client/server character set mismatch would return invalid characters. The problem would occur when using Java with a "Client only" installation of TimesTen. (BugDB #6264409 and #6270354)
- A change has been made in this release that may reduce the CPU utilization of checkpoints against an idle data store. (Bug DB #6272641)
- A problem has been fixed where aging would fail when rows were inserted into a AWT cache group in an Active/Standby replication configuration, if Oracle was offline. (BugDB #6313470)
- A problem has been fixed where an assertion would occur due to an overflow in the
sbLogBufLFNLBNToFrameno
function. (BugDB #6336930)- A problem has been fixed where TimesTen would return inconsistent results when a query was executed using a t-tree scan that contained several duplicate values. (BugDB #6337679)
- In previous releases, following a failover and recovery, updates that had been made on TimesTen would not appear on Oracle. This problem would occur in an Active/Standby replication configuration that contained AWT cache groups. This problem has been fixed. (BugDB #6364759 and #6364743)
6.8 Changes for Release 7.0.2.5.0 from Release 7.0.2.4.0
- A problem has been fixed where creating a table with 1000 columns could result in a crash. (Bug DB #6140446)
- The ttSchema utility no longer outputs CREATE CACHE GROUP statements with autorefresh state ON. Autorefresh state ON is saved in a SQL comment. ttSize now includes a -frac option for indicating the fraction of total column size used by varchars and binaries. Also, it emits errors when an overflow in the size estimate would occur. (Bug DB #6152718)
- In previous releases, when the outer join operator (+) was specified with a column of a simple derived table (without aggregation) and the parser decided to optimize this derived table by flattening it out, the outer join operator would be lost and the join with the derived table would be done as an inner join. This problem has been fixed. (Bug DB #6262983)
6.9 Changes for Release 7.0.2.4.0 from Release 7.0.2.3.0
- JDBC performance is improved in this release. (Bug DB #6041957)
- In this release, the ttSchema utility no longer outputs CREATE CACHE GROUP statements with AUTOREFRESH state ON. The cache group is created with the default AUTOREFRESH state. The AUTOREFRESH state ON is now saved in a SQL comment. (Bug DB #6057939)
- A problem has been fixed where a core dump could occur with JMS/XLA. (Bug DB #6111821)
- A problem has been fixed where a core dump could occur when updating a materialized that existed across multiple partitions. (Bug DB #6130781)
- On Windows, a problem has been fixed where the TimesTen main server would leak thread handles if there were multiple active connections. (Bug DB #6143790)
6.10 Changes for Release 7.0.2.3.0 from Release 7.0.2.2.0
6.11 Changes for Release 7.0.2.2.0 from Release 7.0.2.1.0
- A problem has been fixed where some transactions on that were present on the active store in an active/standby pair would not be present on the standby store during rollout. (Bug DB #6041143)
- In previous releases, SQL_NUMERIC was not supported in PassThrough mode when using TimesTen Cache Connect to Oracle. This problem has been fixed. SQL_NUMERIC is supported with passthrough to Oracle. (Bug DB #6057504)
- In previous releases, an assertion could occur when concurrent updates that used a t-tree index scan with some non-index conditions attempted to update the same row. This problem has been fixed. (Bug DB #6062188)
- In previous releases, a problem existed where multi-threaded 64-bit Java applications could result in a core dump. This problem has been fixed. (Bug DB #6110160)
- A problem has been fixed where duplicate values could exist in a unique t-tree index and an assertion could occur. (Bug DB #6113795)
6.12 Changes for Release 7.0.2.1.0 from Release 7.0.2.0.0
- On the Windows 64-bit platform, the SetLockMemoryPrivilege OS privilege has been added for the TimesTen service.
- TimesTen can support large processor cache page entries on 64-bit Windows systems running Windows Server 2003 SP1 and on other versions that support large pages. A list of supported systems is available at http://msdn.microsoft.com by searching for "GetLargePageMinimum()".
For TimesTen to be able to allocate large pages, enable the SetLockMemoryPrivilege OS privilege by performing the following steps:
1. In the Control Panel, select Administrative Tools > Local Security Policy.
2. Select Local Policies > User Rights Assignment.
3. Double-click "Lock pages in memory".
4. Add the users and groups used by the TimesTen service.
5. Reboot the machine.
If TimesTen is successful in allocating large pages, then ttStatus will display "(LARGE PAGES, LOCKED)".
6.13 Changes for Release 7.0.2.0.0 from Release 7.0.1.0.0
- The ttMigrate utility now supports updating or estimating statistics for tables and materialized views as they are restored. The
ttMigrate -r
command now accepts the optional-updateStats
or-estimateStats
percentRows command-line flags to perform these tasks.- In this release, you can use
MapMessage.getLong
and toMapMessage.getString
to access DATE and TIMESTAMP fields. MapMessage.getLong returns microseconds since UNIX epoch (00:00:00 UTC, January 1, 1970) and it is more efficient than MapMessage.getString. However, MapMessage.getLong does not support nanosecond precision. If you require nanosecond precision for TIMESTAMP, use MapMessage.getString.- TimesTen does not operate on NFS-mounted systems in this release. The
-allowNetworkFiles
daemon option, which existed only in the 7.0.1.0.0 release, has been disabled in this release.- In previous releases, when two or more readers, using separate JMS sessions called Message.acknowledge at about the same time, one call could fail with TimesTen error 8031. This problem has been fixed. (Bug DB #5653780)
- A problem has been fixed where fragmentation would occur on passive subscriber data stores in a replicated scheme, due to heap allocations occurring from only one of the three heaps. (BugDB# 572904)
- In previous releases the ttRepSubscriberFailedTrap would be thrown when a TCP connection failed. This would cause the log to fill up as TimesTen retried the connection. The SNMP trap
ttRepTCPFailedTrap
has been added in this release and is thrown in the case that the TCP connection has failed. (BugDB# 5862800)- This release attempts to avoid problems caused by applications mistakenly performing operations on file descriptors opened by XLA. Previously, when an application closed, read from, or seeked on a file descriptor opened by XLA, errors or assertions could result. XLA can now detect and recover from many such application errors. This functionality is intended to make XLA more resilient to application errors and also to help application programmers detect and fix such errors. It is not possible for XLA to detect or recover from all such errors. Therefore it is still very important for application developers to fix these errors. (Bug DB# 5866888)
- In previous releases, a problem existed where the TTCommand::ExecuteImmediate method would not call Drop if it got an error. This problem has been fixed. (BugDB# 5895768)
- In previous releases, a problem existed where a NULL valued column in a materialized view in an outer join might not get updated. This problem has been fixed. (BugDB#5908860)
- In this release, there are improvements to the SQL compiled command cache. (Bug DB #5899760)
- The number of hash buckets has been increased from 32 to 129.
- The hash algorithm has been improved.
- This release also includes the new built-in procedure
ttSqlCmdCacheInfoGet
. This built-in takes no parameters and returns the result set:cmdCount
- number of commands in the cache.freeableCount
- number of freeable commands that can be garbage collected by the subdaemon at that moment.size
- the current total space allocated to store all the cached commands.- A problem has been fixed where the ttSize utility could return the error "value for -rows must be a number" when no rows were specified. (BugDB# 5898208),
- A problem has been fixed where it was not possible to create a data store larger than 2GB on a MontaVista 64-bit system. (BugDB# 5909588)
- In TimesTen 7.0.1.0.0, a 32-bit client application running on a 64-bit Windows system could not connect to a 64-bit TimesTen Server. This problem has been fixed. (BugDB# 5916382)
- The error message that is returned when an attempt to duplicate data stores from different TimesTen releases has been improved to indicate that the TimesTen releases may not match. (BugDB# 5937159)
- Fast path join planning is improved in this release. (BugDB# 5941648)
- A problem has been fixed where a query with a NOT IN clause that has more than 255 values on Linux systems or 269 values on Solaris systems would hang. (BugDB# 5954612)
6.14 Changes for Release 7.0.1.0.0 from Release 7.0.0.0.0
6.14.1 New items in Release 7.0.1.0.0
- The Windows TimesTen installation now contains TTClasses libraries built with Microsoft Visual C++ 6, 7 and 8.
- On Windows installations, the TimesTen default instance name is now
tt
release_bit. For example, a 32-bit instance of TimesTen 7.0.1.0.0 is named tt70_32 by default. The demo DSN names also now contain the bit level, for example: RunData_tt70_32 or RunData_tt70_64.- The SQL functions LENGTH4, LENGTHB, SUBSTR4, SUBSTRB, INSTR4, INSTRB are supported in this release.
- The
TransparentLoad
data store attribute has been added in this release.- Support for ResultSet.getCharacterStream and PreparedStatement.setCharacterStream is included in this release.
- On UNIX systems, silent batch uninstall is now supported.
- The Oracle TimesTen In-Memory Database Architectural Overview is now titled Oracle TimesTen In-Memory Database Introduction.
- The Oracle TimesTen In-Memory Database Recommended Programming Practices is no longer shipped in the install_dir/doc directory. You can find this document on the Oracle Technical Network (OTN) website, where it will be updated frequently, including between releases of TimesTen.
- The
-linuxLargePageAlignment
daemon option has been added in this release to support Linux large pages.- The options
-verbosity
and-remoteDaemonPort
are now available with the ttRepAdmin -duplicate operation to allow replication where the daemon ports are not identical.- The options
-recoveringNode
and-deferCacheUpdate
are now available with the ttRepAdmin-duplicate
operation. These options facilitate duplication of data stores that contain cache groups when the Oracle Database is unavailable.- The default value for the CkptLogVolume data store attribute is now 0.
- The TimesTen TT_STMT_PASSTHROUGH_TYPE option has been added to the SQLGetStmtOption ODBC function. The option can be used to determine whether a specific prepared statement will be passed through to Oracle by the passthrough feature of Cache Connect to Oracle. See the Oracle TimesTen In-Memory Database C Developer's Guide and Reference (C_dev.pdf).
- The location of the JMS/XLA configuration file can be specified by the user.
- See the Oracle TimesTen In-Memory Database Java Developer's Guide and Reference Guide(java_dev.pdf).
- JRockit is supported with TimesTen on Solaris 64-bit systems on SPARC and x86 CPUs.
6.14.2 Bug fixes in Release 7.0.1.0.0
- In previous releases, if no commit occurred after cache group creation, an attempt to transparently load Oracle data into the cache group resulted in an assertion. In this release, the operation exits gracefully with an error. (BugDB#5620835)
- A problem has been fixed where transparent load of Oracle data into a cache group during a SELECT operation would fail if a CHAR column was specified in the WHERE clause. (BugDB#5620947)
- A problem has been fixed where a SQL operation on a cache group would fail to pass through to Oracle, when there was an empty string in the SELECT list. (BugDB#5636129)
- In this release, the
ttMigrate
utility now properly migrates sequences cache values. (BugDB#5659154)6.15 Changes for Release 7.0.0.0.0 from Release 6.0.7
Starting with the TimesTen 7.0.0.0.0 release, the product version number is comprised of a 5-part number as follows:
TimesTen Product Version = Major.Minor.Patch.Dot4.Dot5
- Major specifies a major release version where the release contains both infrastructure and functionality changes in the product.
- Minor specifies a minor release version where new significant features are added to the product without major infrastructure changes.
- Patch specifies a maintenance release that rolls up all bug fixes since the previous maintenance release.
- Dot4 specifies the version for a bug fix release that cannot wait for the next scheduled Patch release.
- Dot5 is reserved for special cases.
6.15.1 New features in release 7.0.0.0.0
- Oracle TimesTen supports the Oracle semantics for the following data types:
- CHAR
- NCHAR
- VARCHAR2
- NVARCHAR2
- BINARY_FLOAT
- BINARY_DOUBLE
- NUMBER
- DATE
- TIMESTAMP
Applications upgrading from previous versions of Oracle TimesTen should use the new data store creation attribute TypeMode=1. This enables a backward compatibility mode, providing the data type semantics of previously released TimesTen data types instead of the new Oracle data type semantics of this release. TypeMode is set to 0 (Oracle data type semantics) by default. TypeMode must equal 0 when using Cache Connect features.
- Oracle TimesTen provides globalization support. This feature includes:
- Storage and manipulation of non-ASCII data in CHAR/VARCHAR2 columns
- Locale-specific collation of all character data types
- Linguistic sorts and linguistic indexes
- Character set support
A data store must be created with a specific database character set. The data store and the connection can have different character sets. TimesTen handles conversion between the database character set and the connection character set.
- A modified Oracle HR schema is distributed with this release of TimesTen. It is used in some examples in the Oracle TimesTen In-Memory Database SQL Reference Guide.
- Two forms of automatic data aging are introduced in this release and are available for tables that are in cache groups and for tables that are not in cache groups. The forms of aging are usage-based (least recently used) and time-based. Time-based aging can be used by an application to cache a sliding window of data in Oracle TimesTen.
6.15.2 SQL enhancements
Enhancements to supported SQL statements
- The ON DELETE CASCADE clause is supported. When rows containing referenced key values are deleted from a parent table, rows in child tables with dependent foreign key values are also deleted.
- A T-tree index on the primary key is created if the UNIQUE HASH ON ... PAGES= option is omitted from the CREATE TABLE statement.
- A row value constructor with degree greater than 1 is supported.
- Subqueries in the HAVING clause are supported.
- Subqueries in the left operand of a predicate are supported as long as there are no subqueries in the right operand. (Subqueries in the right operand continue to be supported. If there is a subquery in the right operand, there can be no subqueries in the left operand.)
- Expressions are supported in GROUP BY clauses.
- SELECT FOR UPDATE allows the specification of tables that need to be locked for update.
- When a query specifies an outer join operator (+), the query can specify a subquery.
- The MINUS and INTERSECT set operators are supported.
- Set operators (UNION, MINUS, INTERSECT) can be specified in a view definition.
- Updating a primary key to the same value is supported.
- A value list of an IN predicate that contains only one entry does not require parentheses.
- The ROWNUM pseudocolumn is supported.
- FIRST N and N TO M clauses can contain parameters.
- Tables can contain up to 1000 columns.
- The performance of SQL queries has been enhanced.
New SQL statements
New SQL functions
- The CHR(n) function returns the character having binary value n in the database character set. The result is a VARCHAR2 data type.
- The NCHR(n) function returns the character having Unicode value n. The result is an NVARCHAR2 data type.
- The UNISTR(string) function resolves the string to an NVARCHAR2 data type.
- The ASCIISTR(string) function resolves the string to ASCII characters. Non-ASCII characters are converted to Unicode escapes.
- The COALESCE function returns the first non-null expression in the expression list.
- The DECODE function compares an expression to each search value one by one.
- The TO_NUMBER function converts a character string, a binary float or a binary double data type to a number data type.
- The TRUNC (expression) function returns a number truncated to a specified number of decimal places.
- The TRUNC (date) function returns a date with the time portion of the day truncated to the unit specified by the format model.
- The NLSSORT function returns the sort key value for a specified string.
For details on these SQL operations, see the Oracle TimesTen In-Memory Database SQL Reference Guide (sql.pdf).
6.15.3 XLA and JMS/XLA enhancements
- XLA subscriptions to a table can be made at the bookmark level. Unlike in pre7.0 releases, XLA subscriptions do not apply to all bookmarks.
- XLA can retrieve table and column version information for a specific change update record. It can also check table definition compatibility with a change update record.
- The JMS/XLA API can be used to replicate updates from a source data store to a target data store.
6.15.4 Client/server enhancements
- A 6.0 client can connect to a 7.0 data store and a 7.0 client can connect to a 6.0 data store. Use the
-insecure-backwards-compat
daemon option to connect a 6.0 client to a 7.0 data store. See the Oracle TimesTen In-Memory Database Operations Guide for details (operations.pdf).- The
-stopserver
option for the ttDaemonAdmin utility can be used with the-force
option to stop child server processes before stopping the main TimesTen server process.6.15.5 Cache Connect to Oracle enhancements
- Usage-based (least recently used) and time-based aging can be configured for cache groups.
- Oracle TimesTen can be configured to automatically load data from Oracle tables into cache group tables when a SELECT query does not find data in the cache group tables. See the TimesTen Cache Connect to Oracle Guide (cacheconnect.pdf).
6.15.6 Replication enhancements
- When replicating between 7.0 and pre-7.0 data stores, use the
-insecure-backwards-compat
daemon option to connect to these data stores. See the Oracle TimesTen In-Memory Database Operations Guide (operations.pdf) for details.- An active standby pair with read-only subscribers can now be used with Cache Connect to Oracle. This configuration supports read-only cache groups with the AUTOREFRESH cache group attribute and asynchronous writethrough cache groups. A major advantage of this configuration is that in the case of a failover of the master to the standby, a full autorefresh on the standby data store is no longer needed.
- A replication master can have up to 128 subscribers.
- A replication conflict report can be generated in XML format. See the TimesTen to TimesTen Replication Guide (replication.pdf).
6.15.7 Utilities enhancements
6.15.8 Enhancements to built-in procedures
6.15.9 New built-in procedures
- ttAgingLRUConfig - Sets and displays the Least Recently Used (LRU) aging policy for tables defined with usage-based aging.
- ttAgingScheduleNow - Start the aging process immediately, or at the time desired, if used in an external scheduler.
- ttCachePolicyGet - Returns the policy used to determine when the TimesTen cache agent for the connected data store should run.
- ttCachePolicySet - Defines the policy used to determine when the TimesTen cache agent for the connected data store should run.
- ttConfiguration - Returns the value of most ODBC connection attributes for the current connection.
- ttHostNameGet - Returns the name of the local host that is used by replication.
- ttHostNameSet - Sets the name for the local host for the current data store to be used by replication. Useful for nonstandard network configurations.
- ttOptGetMaxCmdFreeListCnt - Returns the size of the SQL compiled command cache.
- ttOptSetMaxCmdFreeListCnt - Sets the size of the regular SQL compiled command cache.
- ttOptSetMaxPriCmdFreeListCnt - Sets the size of the SQL compiled command cache for commands that maintain materialized views.
- ttRamPolicyGet - Returns the policy used to determine when the data store is loaded into system RAM.
- ttRamPolicySet - Sets the policy used to determine when the data store is loaded into system RAM.
- ttRepPolicyGet - Returns the policy used to determine when the data store is loaded into system RAM.
- ttRepPolicySet - Defines the replication restart policy used to determine when the TimesTen Replication Agent for the connected data store should run.
- ttRepTransmitGet - Returns the status of transmission of updates to subscribers for the current transaction.
- ttRepTransmitSet - Stops subsequent updates on the connection it is executed in from being replicated to any subscriber.
- ttXlaBookmarkCreate - Creates the specified bookmark.
- ttXlaBookmarkDelete - Deletes the specified bookmark.
For details on these built-in procedures, see the Oracle TimesTen In-Memory Database API Reference Guide (tt_ref.pdf).
6.15.10 New attributes
- DatabaseCharacterSet - Identifies the character set used by the data store. This attribute is required at data store creation time. There is no default.
- TypeMode - Indicates the data type mode for the data store. Default is 0.
- ConnectionCharacterSet - Specifies the character encoding for the connection. Default is US7ASCII unless database character set is TIMESTEN8.
- NLS_LENGTH_SEMANTICS - Sets the default length semantics configuration. Default is BYTE.
- NLS_NCHAR_CONV_EXCP - Determines whether an error is reported when there is data loss during an implicit or explicit character type conversion between NCHAR/NVARCHAR2 data and CHAR/VARCHAR2 data. Default is 0.
- NLS_SORT - Indicates the collating sequence to use for linguistic comparisons. Default is BINARY.
For details on these attributes, see the Oracle TimesTen In-Memory Database API Reference Guide (tt_ref.pdf).
6.15.11 New daemon options
You can specify the following new options in the
ttdaemon.options
file:6.15.12 Other enhancements
- The default log buffer size has been increased to 64 MB.
- The TempSize attribute defaults to at least 6 MB. The value for this attribute is still derived from the PermSize value.
- In read-committed isolation mode with no concurrent scans in serializeable isolation, multiple updates of the same row in the same transaction or deletion of row that has been inserted in the same transaction do not place a next lock.
- The ODBC driver uses the SQL data types supplied by an application for passthrough statements.
- No rows are locked during the gathering and computation of column and row statistics for optimizer use.
- The BINARY_FLOAT and BINARY_DOUBLE SQL types support the IEEE floating point values Inf (positive infinity), -Inf (negative infinity), and NaN (not a number).
7. Known problems and limitations
7.1 Access Control
- On Windows systems, where Oracle TimesTen has been installed with Access Control enabled, you cannot subsequently perform a "modified" or incremental installation. For example, if you originally installed only the Oracle TimesTen Client and later wanted to install the Oracle TimesTen Data Manager, you need to first uninstall Oracle TimesTen and reinstall all the components you wish to have on your system.
7.2 Installing and uninstalling Oracle TimesTen
- On HP-UX operating systems, when using the Veritas filesystem, set the options
discovered_direct_iosz
andmax_direct_iosz
to 3MB before installing TimesTen. See theOracle TimesTen In-Memory Database Documentation Addendum
for details.- TimesTen does not support SELinux. When installing Linux for use with TimesTen, make sure that the SELinux option is disabled.
- On Windows 64-bit systems, TimesTen 32-bit and 64-bit instances cannot co-exist on the same machine.
- Online upgrades from a release prior to the 7.0.0.0.0 release of TimesTen to this release are not supported when the data store contains one or more cache groups. You must manually create the cache groups and load them into the newer TimesTen data store.
- DSNs created with a Beta release of TimesTen 7.0.0.x.x are not compatible with TimesTen 7.0.1.0.0 or greater. You should remove those DSNs before working with this release of TimesTen.
- Use the Modify option on the Windows InstallShield Wizard to uninstall Cache Connect to Oracle.
- On Windows, when Oracle TimesTen is uninstalled from a compact installation, the
timesten
root directory is removed. When Oracle TimesTen is uninstalled from a typical installation, thetimesten
root directory remains, but it is empty.- On Linux systems, along with setting
kernel.shmmax
, users with configurations over 8GB may need to set thekernel.shmall
parameter. The value is in KBytes and should be equal toceil(SHMMAX/PAGE_SIZE)
. Page size is generally 4K on x86 and 16K on Itanium systems.
For example, for a 64GB data store on Itanium, you need not onlykernel.shmmax=68719476736
but alsokernel.shmall=4194304
.- When re-installing Oracle TimesTen, existing
sys.odbc.ini
andsys.ttconnect.ini
files are optionally saved assys.odbc.ini.old
andsys.ttconnect.ini.old
files and new demo files are installed. In this case, you must manually merge any additional DSNs that may have been defined after reinstalling.- If you are installing Oracle TimesTen on a new RedHat Linux system, you may find that it is not enabled for 32-bit applications. According to the Redhat Enterprise Linux installation guide: 'Users of AMD64, Intel
(R)
EM64T, and Itanium systems who want support for developing or running 32-bit applications are encouraged to select the Compatibility Arch Support and Compatibility Arch Development Support packages to install architecture specific support for their systems.'7.3 TTClasses
- TTClasses is not supported with gcc 3.0 on 64-bit Linux. This is because optimized builds
(-O) with gcc 3.0 on 64-bit Linux/IA-64 have been shown to have different (incorrect) runtime behavior (related to exception throw-and-catch), as compared with debug builds on the same platform with the same compiler. Use gcc 3.2 or gcc 3.4 on 64-bit Linux when compiling TTClasses.- A problem with TTClasses causes NCHAR / NVARCHAR2 parameters and columns to be bound incorrectly. This results in parameter and column data being transferred to/from the database without a null terminator.
7.4 Cache Connect to Oracle
- In a two-safe replicating scenario that contains a cache group, a transaction may fail in the following scenario:
- The transaction is a two-safe replication transaction
- The transaction that is being replicated contains an ALTER TABLE statement or an ALTER CACHE GROUP statement
- The transaction contains an INSERT, UPDATE or DELETE statement to a replicated table, replicated cache group or an AWT cache group and at least one cache group is being replicated.
- If you are using Cache Connect and Oracle server is no longer reachable (for example, due due to network failure) from the TimesTen nodes, TimesTen processes could wait indefinitely. The workaround is to set the SQLNET.SEND_TIMEOUT and SQLNET.RCV_TIMEOUT client parameters in
$ORACLE_HOME/network/admin/sqlnet.ora
. The sqlnet.ora parameters should be updated only on the client side that is on the TImesTen node and not on the Oracle server.
For example, setting SQLNET.SEND_TIMEOUT and SQLNET.RCV_TIMEOUT to100 seconds each forces any communication call from TimesTen to Oracle to timeout within 200 seconds. The timeout value should be carefully set to a value large enough to avoid any unnecessary timeouts during normal operations.- TimesTen internal testing ran into two known Oracle OCI bugs that may cause the TimesTen cache agent to crash and/or multi-threaded applications that use TimesTen Cache Connect to crash. The bugs have be identified and confirmed. The problem exists in the Oracle client 10.2.0.1 version and above. The fixes are not released yet. (BugDB #6674731)
- In an Active/Standby scheme with AWT cache groups, if network of the Active/Standby nodes gets partitioned from the Oracle Server, the TimesTen node stops accepting new connections.
When this problem occurs, take these steps:
- When caching BINARY_DOUBLE or BINARY_FLOAT types from an Oracle server, you must use an Oracle 10g Release2 or greater OCI client.
- An assertion failure can occur when a large cache group is flushed and the connection to Oracle is lost during the flush. The flush operation must flush more than 10 MB of data for the assertion failure to occur.
- A Cache Connect application may fail with a core dump during an OCIServerAttach call when SQL*Net tracing is set to level 16 for Oracle client version 10.2.0.1.0 on the Solaris X86 64-bit platform. This is due to the OCI problem reported in BugDB # 6407026.
- With Passthrough=3, if you call setTimestamp on a passthrough statement when binding more than one field, the session NLS_TIMESTAMP_FORMAT is lost. You can work around this issue by changing the SQL statement to use TO_TIMESTAMP(?, 'syyyy-mm-dd hh24:mi:ss.ff9') and TO_DATE(?,'syyyy-mm-dd hh24:mi:ss').
- To use the Cache Connect to Oracle option on UNIX, make sure that the Oracle libraries in
$ORACLE_HOME/lib32
and/or$ORACLE_HOME/lib
are readable by the user running TimesTen.- When using the Cache Connect to Oracle option on a 64-bit Windows system, if you are using 32-bit TimesTen, you must install a 32-bit Oracle client.
- When creating or modifying cache groups in the Cache Administrator, the time-based aging option is enabled only when the selected root table is verified to contain a TIMESTAMP column. This verification may take longer than expected. If you are sure that the selected root table contains a TIMESTAMP column but the time-based aging option is not enabled, please be patient, eventually the option will be enabled.
- If a duplicate operation is used to recover a failed TimesTen node that contains an AUTOREFRESH cache group and the Oracle Database is unavailable, a full autorefresh can occur if there are further cascading TimesTen node failures and intermittent connectivity problems with the Oracle Database.
- You should prevent any "dangling rows" (rows without a corresponding parent row) in a cache group. Dangling rows may become stale and not get refreshed properly through a manual refresh or autorefresh operation. They may not get removed through unload or aging operations, and they may not be updated on Oracle through a flush statement.
- When running different versions of Oracle Client and Server, the cache agent may crash with a core file. This is due to an Oracle client bug. See Metalink Note 342791.1 or Bug 4499298. The bug is fixed in Oracle 10g R2 10.2.0.1.0, Oracle 10g R1 10.1.0.5.0 and Oracle 9i R2 9.2.0.8.0. This fix affects both Client and Server, so the fix needs to be applied on both Client and Server.
- If you are configuring Cache Connect to Oracle for use with RAC, use one of the following Oracle client releases:
- When you use the Cache Administrator and an error occurs when creating a cache group, any warnings that were generated are displayed with the error. However, if only warnings were generated, then those warnings are not displayed.
- If an autorefresh cache group table has a key column whose name is an Oracle keyword such as TIMESTAMP, the user may receive the following error from the CREATE CACHE GROUP SQL statement:
- ORA-06553: PLS-320: the declaration of the type of this expression is incomplete or malformed rc = -1
- Do not use Oracle keywords as names of key columns.
- When using the Cache Administrator, some actions result in the following error: "Cannot find server or DNS Error".
- User applications with the passthrough level set to 1 or 2 may behave differently in Oracle TimesTen 7.0.0.0.0 because of Oracle TimesTen SQL enhancements. Certain statements may no longer cause a syntax error and will be executed on Oracle TimesTen instead of Oracle.
- When using the Cache Connect to Oracle option, the following JDBC methods are not supported with Oracle pass-through modes 1 through 3: PreparedStatement.setAsciiStream, PreparedStatement.setUnicodeStream, PreparedStatement.setBinaryStream, PreparedStatement.setCharacterStream.
- On Windows, when using Oracle directory server, the cache agent may encounter an access violation in the Oracle library
orantcp9.dll
. This is a known Oracle problem (ref. Oracle MetaLink Doc ID Note:234794.1). The signature of the problem displays the following failures0xc0000005 (access violation) in ORANTCP9.dll
or0x80010105 (unknown exception) in KERNEL32.dll.
The workaround is to use Oracletnsnames.ora
instead of the directory server.7.5 Replication - TimesTen to TimesTen
- In an Active Standby setup configured with AWT cache groups, if the network of the active standby nodes gets partitioned from the Oracle Server, the TimesTen node eventually stops accepting new connections. In this case, you must stop and restart the replication agent on the master. For example:
- TWOSAFE transactions involve special transaction processing that includes special log records. As such, TWOSAFE replication is designed to support a two store configuration only. TWOSAFE replication with one or more AWT cache groups is not supported.
- Due to a defect in TimesTen Cache Connect release 6.0.2, it is not possible to replicate cache groups between release 6.0.2 and any other TimesTen release. Consequently, online upgrades do not work for cache groups between 6.0.2 and any other release of TimesTen.
- ttMigrate does not support replication schemes that define replication elements on tables that are not present on the local data store.
- Under very rare circumstances, it is possible for a pair of replicated detail tables and their corresponding materialized view to diverge. This divergence can only happen if the materialized view satisfies both of the following conditions:
- The view definition has 2 or more predicates
- One of the predicates contains an expression that can generate an exception such as numeric overflow, division by zero or string truncation
Replicating an update to a detail table can cause divergence if differences in the order of predicate evaluation on the two data stores cause a predicate to be evaluated and generate an exception only on the receiving data store. The store will then reject the update, resulting in divergence of the detail table and the materialized view. To prevent such divergence, users should avoid replicating materialized views that have predicates that can generate exceptions during expression evaluation. The SQL CAST operator can be used in some cases to avoid arithmetic overflow.
- If you create a new replication scheme in 5.1 or later that uses a DATASTORE element, you cannot migrate backwards, for example to 5.0 or 4.5. A scheme involving a DATASTORE element created in an Oracle TimesTen release older than 5.1 can be migrated to 5.1 and then migrated back to an older release.
- Foreign key and uniqueness constraints cannot be checked at the "statement level" if ttXLAApply is used to implement replication.
For replication to work efficiently, it must be able to quickly translate host names of peers into IP addresses. For this to happen efficiently on Windows, make sure that a Windows machine is set up to query either a valid WINS server or a valid DNS server that has correct information about the hosts on the network. In the absence of such servers, static HOST-to-IP entries can be entered in either a
%windir%\system32\drivers\etc\hosts or %windir%\system32\drivers\etc\lmhosts
file.
Without any of these four options, a Windows machine resorts to broadcasting, which is extremely slow, to detect peer nodes. Also, if the Windows machine cannot communicate with a defined WINS server or DNS server, or if incorrect information is stored on those servers, the hostname resolution will be extremely slow. Use theping
command to test whether a host can be efficiently located. Theping
command should immediately respond if host name resolution is set up properly.
- When changing the state of a replication receiver (that is, to "start" or "stop") when replication has been configured to use a secondary IP address, a misconfiguration may cause ttRepAdmin to print the error:
Alter replication with "ALTER REPLICATION ... port 0" failed: TT0907: Unique constraint (REPSTORESIX) violated.
This error is caused by replication not recognizing the local data store. This situation can be confirmed by the following query:
SELECT * FROM ttrep.ttstores WHERE is_local_store <> 0x0;
If this query returns either no rows, or a row with the data store's main host name set to the result of the "hostname" command rather than the host you specified, you have encountered a configuration problem with /etc/hosts.
To correct the problem, you must make sure that the special host name you are using is defined in /etc/hosts and that there is an IP address in common between your special host name and the result of the "hostname" command.
Example: your "hostname" command returns "softswitch" and your machine has two Ethernet cards with the addresses 10.10.15.136 and 192.168.15.136. Then the IP addresses defined for "softswitch" should include both IP addresses.7.6 Client/Server
- In the Windows ODBC Client DSN Setup dialog box, when the Server Name refers to a Unix host, the Refresh button to get the list of DSNs on that server often fails to obtain the list, and occasionally a core file is generated on the Unix server in the TimesTen Daemon home directory. However, a known DSN can be entered into the Server DSN field and the client DSN entry successfully created, and TimesTen connections from Windows using that client DSN will work normally.
- The Oracle TimesTen In-Memory Database Installation Guide documents procedures for "Performing a Client/Server online upgrade from a TimesTen version prior to 6.0." After TimesTen 7.0. is installed, you must also perform the following step:
From
install_dir_70
copylibttco.so
toinstall_dir_51
.- When setting multiple client connections to a TimesTen server, you should not set the stack size (using the
-ServerStackSize
daemon option orServerStackSize
attribute) to less than 64KB on 64-bit systems and 48KB for 32-bit systems. If the stack size is too small, the TimesTen Server dies with SIGSEGV on most UNIX system, or SIGBUS on HP-UX.- On Unix, when using ttlocalhost, a client of one TimesTen instance cannot connect with a server of another TimesTen instance. The workaround is to use ttShmHost (shared memory IPC) or localhost (127.0.0.1).
- While using shared memory as IPC, the application may see the error message 24 from the Client Driver if the application reaches the system-defined, per process file-descriptor-limit. This may happen during a connect operation to the Client DSN when the
shmat
system call fails because the application has more open file descriptors than the system-defined per-process file-descriptor-limit.7.7 Connection attributes
7.8 Utilities, procedures, and SQL
- When using scalar functions that accept TIME, DATE or TIMESTAMP data types as arguments, you must prefix the function with a literal indicating the data type. For example:
SELECT GREATEST (TIME '10:10:10', TIME '12:12:12' ) FROM DUAL;
If you do not specify the datetime literal, TimesTen treats the data type as CHAR. Functions that accept datetime literals as arguments are: GREATEST, LEAST, ROUND and ADD_MONTHS.
TimesTen does not support the data type TIME in the functions ADD_MONTHS and ROUND.
- ROUND(date) is supported only for Oracle DATE types.
- For ROUND (date), ADD_MONTHS, GREATEST, and LEAST FUNCTIONS: An assertion may occur during ODBC statement PREPARE:
- When using either a CASE expression or the DECODE function as one of the arguments to the function and the expected data type is datetime AND
- The return values of either the CASE expression or the DECODE function are NULL or parameter binding (i.e.: decode (x,0,NULL, ?)).
For example:
SELECT GREATEST (CASE WHEN 'A' LIKE '__' THEN? END, TIME '11:11:11') FROM DUAL;
As a workaround, CAST the bind variable or NULL value to the expected datetime data type:
SELECT GREATEST (CASE WHEN 'A' LIKE '__' THEN CAST (? as TIME) END, TIME '11:11:11') FROM DUAL;
- The ORDER BY clause is not supported in a CREATE TABLE AS SELECT statement.
- A multi-lingual sort (NLS_SORT) operation that includes a LIKE clause returns incorrect results when the sort is specified with the _CI or _AI extension.
- The maximum sum of the total number of tables specified in a query and all temporary aggregates needed to handle the query is 32. A temporary aggregate is needed to handle scalar or aggregate subqueries. A query fails with the message "Statement that needs more than 31 nesting levels has not been implemented" when the sum of tables and temporary aggregates in a query is greater than 32.
- COUNT distinct with CHAR type uses binary sorting order and binary comparison semantics even when the NLSSORT attribute was set to a value different than binary.
- When the NLS_SORT session parameter is set to a multilingual sort (e.g. FRENCH_M), the LIKE operator may produce incorrect results when the pattern match wild-card symbols are applied to the space character.
- SQL query strings in JDBC applications should contain only characters from the database character set. Unicode characters not in the database character set are converted to replacement characters during parsing of the query. Potential workarounds include:
- The TO_CHAR SQL function provides inconsistent results (truncates or rounds) when applied to BINARY_FLOAT and BINARY_DOUBLE values. TO_CHAR also truncates some NUMBER values that should instead be rounded.
- The MERGE statement may not be used to insert into or update from a detail table of a materialized view.
- A MERGE operation on a data store where logging to disk is disabled returns an error and fails.
- If an application process on HPUX is connected to an Oracle TimesTen data store and if the application process calls the ttXactIdRollback utility API for a transaction associated with the same data store, the call may fail due to the inability to attach to the shared memory segment for the data store.
- The fourth argument ("
stats
") to the ttOptSetColIntvlStats built-in procedure is a compound structure that cannot be parameterized using ODBC functions. This means that a statement such as the following will fail:SQLPrepare(hstmt, "call ttOptSetColIntvlStats('t1', 'c1', 1, ?)", SQL_NTS);
Similarly, the ttIsqldescribe
command fails because the "stats
" argument does not have one of the known types.7.9 JDBC
- ResultSet.getString() does not work correctly in client/server mode for DATE fields with data for the B.C. time period. Please use ResultSet.getTimestamp() as a workaround.
- JDK 5.0 is not available for AIX or for Itanium 64-bit on Linux AS 3.0.
- Please refer to the article at
http://java.sun.com/developer/technicalArticles/Intl/USDST
for impact of U.S. Daylight Saving Time Changes in 2007 on Java applications and solutions. For other JDK/JRE providers, please consult your vendor documentation.- On HPUX 11 systems, 32-bit JDBC client and direct drivers cannot co-exist in one JVM due to some problems with loading shared libraries.
- If a JDBC application running in a time zone that has Daylight Savings Time selects a non-existent time using ResultSet.getTimestamp, it gets a time that is an hour behind. For example, in Pacific Standard Time, on the day when the time changes from Standard to Daylight Savings Time, the time between 2:00 a.m. and 2:59 a.m. does not exist. So, if a JDBC application running in Standard Time selects a value of `2002-04-07 02:00:00' using getTimestamp it will get `2002-04-07 01:00:00'.
- Cache Connect to Oracle JDBC applications may deadlock in the Solaris thread library when establishing an Oracle connection. This is due to known bugs in Oracle and Solaris (Oracle bugs 2095266 and 2002293, SUN case id 62645007). This occurs when using Oracle TimesTen Cache Connect to Oracle with the Java JDK 1.4 or greater, on Solaris. The work around on Solaris 8 is to change LD_LIBRARY_PATH to use the alternate thread library in
/usr/lib/lwp
. For example:setenv LD_LIBRARY_PATH=/usr/lib/lwp:$LD_LIBRARY_PATH
7.10 JMS/XLA
- JMS/XLA depends on Oracle GDK for internationalization support. The
timestenjmsxla.jar
includes a version of theorai18n.jar
that JMS/XLA is tested against. JMS/XLA may work with other versions of orai18n.jar but it is not guaranteed. Please refer to Oracle TimesTen In-Memory Database Java Developer's and Reference Guide for other details. Here are some suggestions for working around this issue:- To avoid throughput issues, JMS/XLA applications running on Linux in general, and Red Hat Linux 3 in particular, should follow performance guidelines presented in the section entitled "Handling high event rates" in the Oracle TimesTen In-Memory Database Java Developer's Guide to work around these issues.
8. Contacting Oracle for Oracle TimesTen support
For information about obtaining technical support for Oracle TimesTen products, go to the following Web address: http://www.oracle.com/support/contact.html
9. Copyright information
Copyright ©1996, 2008, Oracle. All rights reserved.
ALL SOFTWARE AND DOCUMENTATION (WHETHER IN HARD COPY OR ELECTRONIC FORM) ENCLOSED AND ON THE COMPACT DISC(S) ARE SUBJECT TO THE LICENSE AGREEMENT.
The documentation stored on the compact disc(s) may be printed by licensee for licensee's internal use only. Except for the foregoing, no part of this documentation (whether in hard copy or electronic form) may be reproduced or transmitted in any form by any means, electronic or mechanical, including photocopying, recording, or any information storage and retrieval system, without the prior written permission of Oracle Inc.
Oracle, JD Edwards, PeopleSoft, Retek, TimesTen, the TimesTen icon, MicroLogging and Direct Data Access are trademarks or registered trademarks of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
The Programs (which include both the software and documentation) contain proprietary information; they are provided under a license agreement containing restrictions on use and disclosure and are also protected by copyright, patent, and other intellectual and industrial property laws. Reverse engineering, disassembly, or decompilation of the Programs, except to the extent required to obtain interoperability with other independently created software or as specified by law, is prohibited.
The information contained in this document is subject to change without notice. If you find any problems in the documentation, please report them to us in writing. This document is not warranted to be error-free. Except as may be expressly permitted in your license agreement for these Programs, no part of these Programs may be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose.
March 30, 2008
Printed in the United States of America