7 Upgrades in TimesTen Classic

Ensure you review the installation process in the preceding chapters before completing the upgrade procedures described in this chapter.

Topics include:

Overview of Release Numbers

There is a release numbering scheme for TimesTen releases. This scheme is relevant when discussing upgrades. For example, for a given release, a.b.c.d.e:

  • a indicates the first part of the major release.

  • b indicates the second part of the major release.

  • c indicates the patch set.

  • d indicates the patch level within the patch set.

  • e is reserved.

Important considerations:

  • Releases within the same major release (a.b) are binary compatible. If a release is binary compatible, you do not have to recreate the database for the upgrade (or downgrade).

  • Releases with a different major release are not binary compatible. In this case, you must recreate the database. See "Migrating a Database" for details.

As an example, for the 26.1.1.1.0 release:

  • The first two numbers of the five-place release number (26.1) indicate the major release.

  • The third number of the five-place release number (1) indicates the patch set. For example, 26.1.1.1.0 is binary compatible with 26.1.1.2.0 because the first two digits in the five-place release number (26 and 1) are the same.

  • The fourth number of the five-place release number (1) indicates the patch level within the patch set. 26.1.1.2.0 is the first patch level within patch set two.

  • The fifth number of the five-place release number (0) is reserved.

Types of Upgrades

TimesTen Classic supports two types of upgrades:

  • An offline upgrade requires that you close all TimesTen databases to prevent future connections to these databases, you disconnect all applications from TimesTen, and you stop all TimesTen databases. This type of upgrade is useful when some amount of downtime is acceptable. During this downtime, the TimesTen databases are unavailable.

    An offline upgrade enables you to upgrade (or downgrade) to a new patch release or to upgrade to a major release:

  • An online upgrade involves using a pair of databases that are replicated and then performing an offline upgrade of each database in turn. This type of upgrade is useful when it is critically important that downtime be at a minimum. See "Online Upgrade: Using TimesTen Replication" for details.

About Moving to a Different Patch Release by Modifying the Instance

This section contains information about moving to a different patch release of TimesTen by modifying the TimesTen instance. Moving to a different patch release includes upgrades and downgrades. See "Moving to a Different Patch Release Using ttBackup and ttRestore" for information on moving to a different patch release using backup and restore operations.

Concepts that are important when moving to a different patch release:
  • Start a database: The subdaemon either creates a new shared memory segment or re-attaches to an existing one. These operations are used to start a database:

    • Load: The subdaemon creates a new shared memory segment, and loads the contents of the most recent checkpoint file into this new shared memory segment.

    • Remap: The subdaemon re-attaches to an existing shared memory segment.

  • Stop a database: The subdaemon disconnects from the shared memory segment and either destroys the shared memory segment or preserves it. These operations are used to stop a database:

    • Unload (clean): The shared memory segment is written to the checkpoint file on disk (by performing a static checkpoint operation). The subdaemon disconnects from and destroys the shared memory segment. The load operation starts the database.

    • Detach (clean): The shared memory segment is optionally written to the checkpoint file on disk (by performing a static checkpoint operation). The subdaemon disconnects from the shared memory segment, but does not destroy it. The shared memory segment remains in memory. The remap operation starts the database.

Note:

For a complete list of the operations you use to start and stop a database, see "Managing TimesTen Databases" in the Oracle TimesTen In-Memory Database Operations Guide.
There are two types of patch upgrades (or downgrades):
  • Basic patch upgrade: A type of upgrade where the shared memory segment is destroyed when the database is stopped. A new shared memory segment is created when the database is started. This is the preferred method for performing a patch upgrade. See "About Performing a Basic Patch Upgrade" for details.

  • Fast patch upgrade: A type of upgrade where the shared memory segment is preserved in memory when the database is stopped. The same memory segment is used when the database is started. This is the preferred method if your databases are large and you have both critical uptime requirements and short maintenance windows. See "About Performing a Fast Patch Upgrade" for details.

About Performing a Basic Patch Upgrade

A basic patch upgrade is used when you do not have critical uptime requirements and short maintenance windows. When you stop the database, the contents of the shared memory segment is written to the checkpoint file on disk. The shared memory segment is then destroyed. When you start the database after an upgrade, a new shared memory segment is created and the contents of the checkpoint file are read into this newly created shared memory segment. Depending on the size of your database, the checkpoint operation performed when the database stops and the subsequent ramLoad operation performed when the database starts could be time consuming.

The process involves downloading the TimesTen full distribution (the upgrade release) and creating a new installation. The instance that requires upgrading is then modified to point to the new installation. The ttInstanceModify utility is used to perform this instance modification. As previously noted, you must close all TimesTen databases and disconnect all applications from TimesTen.

Download and Create the New Installation

To upgrade to a new patch release of TimesTen, you must first create the new installation.

  1. Create the subdirectory into which you will download and unzip the new full distribution of TimesTen. Navigate to this directory and download the new full distribution into this directory. Then, use the ZIP utility to unpack this distribution. This example creates the new_installation_dir subdirectory and unpacks the timesten261120.server.linux8664.zip file. Unzipping the timesten261120.server.linux8664.zip file creates the new installation that will be used for this patch upgrade.
    % mkdir -p new_installation_dir
    % cd new_installation_dir

    Download the full distribution into the new_installation_dir subdirectory. Then use the ZIP utility to unpack the distribution.

    % unzip /timesten/installations/timesten261120.server.linux8664.zip
    Archive:  /timesten/installations/timesten261120.server.linux8664.zip
       creating: tt26.1.1.2.0/
    ...
  2. Optional: Use the ttInstallationCheck utility, located in the bin subdirectory of the new installation (new_installation_dir/bin in this example) to verify the installation is successful.
    % new_installation_dir/tt26.1.1.2.0/bin/ttInstallationCheck
    This installation has been verified.
    
  3. Optional: Verify the subdirectories are created under the full installation directory. These subdirectories may change from release to release.
    % ls new_installation_dir/tt26.1.1.2.0
    3rdparty     bin      info        network        plsql    ttoracle_home
    PERL         grid     kubernetes  nls            startup
    README.html  include  lib         oraclescripts  support
    
You have successfully created the new installation.

Unload the Database from Memory

Perform the following steps to unload the database from memory.

  1. Close the database. This prevents any future connections to the database.
    % ttAdmin -close database1
    RAM Residence Policy            : manual
    Manually Loaded In RAM          : True
    Replication Agent Policy        : manual
    Replication Manually Started    : False
    Cache Agent Policy              : manual
    Cache Agent Manually Started    : False
    Database State                  : Closed
    

    See Opening and Closing the Database for User Connections in the Oracle TimesTen In-Memory Database Operations Guide.

  2. Disconnect all applications from the database. See Disconnecting from a Database in the Oracle TimesTen In-Memory Database Operations Guide for details.
  3. Unload the database from memory. See Specifying a RAM Policy in the Oracle TimesTen In-Memory Database Operations Guide for information on specifying a RAM policy.

    If the RAM policy is set to always, change it to manual, then unload the database from memory.

    % ttAdmin -ramPolicy manual -ramUnload database1
    
    RAM Residence Policy            : manual
    Manually Loaded In RAM          : False
    Replication Agent Policy        : manual
    Replication Manually Started    : False
    Cache Agent Policy              : manual
    Cache Agent Manually Started    : False
    Database state                  : closed
    

    If the RAM policy is set to manual, unload the database from memory.

    ttAdmin -ramUnload database1
    
    RAM Residence Policy            : manual
    Manually Loaded In RAM          : False
    Replication Agent Policy        : manual
    Replication Manually Started    : False
    Cache Agent Policy              : manual
    Cache Agent Manually Started    : False
    Database state                  : closed
    

    If the RAM policy is set to inUse and a grace period is set, set the grace period to 0 or wait for the grace period to elapse. TimesTen unloads a database with an inUse RAM policy from memory once all active connections are disconnected.

    % ttAdmin -ramGrace 0 database1
    
    RAM Residence Policy            : inUse
    Replication Agent Policy        : manual
    Replication Manually Started    : False
    Cache Agent Policy              : manual
    Cache Agent Manually Started    : False
    Database state                  : closed
    

Modify the Instance to Point to the New Installation

The patch upgrade process requires you to modify the existing TimesTen instance to point to the new installation.
Perform these steps:
  1. Use the ttDaemonAdmin utility to stop the TimesTen main daemon.
    % ttDaemonAdmin -stop
    TimesTen Daemon (PID: 21031, port: 6624) stopped.
    
  2. Use the ttInstanceModify utility to modify the myinstance instance to point to the new installation. Recall that the TimesTen full distribution was unpacked and a new installation was created in new_installation_dir/tt26.1.1.2.0. See "Download and Create the New Installation" for details.
    % $TIMESTEN_HOME/bin/ttInstanceModify -install new_installation_dir/tt26.1.1.2.0
    
    Instance Info (UPDATED)
    -----------------------
    
    Name:           myinstance
    Version:        26.1.1.2.0
    Location:       /scratch/ttuser/myinstance
    Installation:   new_installation_dir/tt26.1.1.2.0
    Daemon Port:    6624
    Server Port:    6625
    
    
    The instance myinstance now points to the installation in new_installation_dir/tt26.1.1.2.0
  3. Use the ttDaemonAdmin utility to restart the TimesTen main daemon. Then run the ttVersion utility to verify the myinstance instance has been upgraded to the new patch release (26.1.1.2.0, in this example).
    % ttDaemonAdmin -start
    TimesTen Daemon (PID: 20699, port: 6624) startup OK.
    
    % ttVersion
    TimesTen Release 26.1.1.2.0 (64 bit Linux/x86_64) (myinstance:6624) 2025-08-26T16:53:47Z
      Instance admin: instanceadmin
      Instance home directory: /scratch/ttuser/myinstance
      Group owner: g900
      Daemon home directory: /scratch/ttuser/myinstance/info
      PL/SQL enabled.
    
You have successfully modified the instance to point to the new installation.

Load the Database into Memory

Follow these steps to load a database into memory.

  1. Load the database into memory. This example sets the RAM policy to manual and then loads the database1 database into memory.

    Set the RAM policy to manual.

    % ttAdmin -ramPolicy manual database1
    
    RAM Residence Policy            : manual
    Manually Loaded In RAM          : False
    Replication Agent Policy        : manual
    Replication Manually Started    : False
    Cache Agent Policy              : manual
    Cache Agent Manually Started    : False
    Database state                  : closed
    

    Load the database1 database into memory.

    % ttAdmin -ramLoad database1
    
    RAM Residence Policy            : manual
    Manually Loaded In RAM          : True
    Replication Agent Policy        : manual
    Replication Manually Started    : False
    Cache Agent Policy              : manual
    Cache Agent Manually Started    : False
    Database state                  : closed
    

    See Specifying a RAM Policy in the Oracle TimesTen In-Memory Database Operations Guide for information on the RAM policy.

  2. Open the database for user connections.
    % ttAdmin -open database1
    RAM Residence Policy            : manual
    Manually Loaded In RAM          : True
    Replication Agent Policy        : manual
    Replication Manually Started    : False
    Cache Agent Policy              : manual
    Cache Agent Manually Started    : False
    Database State                  : Open
    

    See Opening and Closing the Database for User Connections in the Oracle TimesTen In-Memory Database Operations Guide.

Verify the Patch Upgrade

Verify the patch upgrade:
  1. Verify the instance administrator user (instanceadmin, in this example) can connect to the database1 database and perform a query.
    % ttisql database1;
    
    Copyright (c) 1996, 2025, Oracle and/or its affiliates. All rights reserved.
    Type ? or "help" for help, type "exit" to quit ttIsql.
    
    
    
    connect "DSN=database1";
    Connection successful: DSN=database1;UID=instanceadmin;DataStore=/scratch/ttuser/database1;
    DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=AL32UTF8;LogBufMB=1024;
    PermSize=500;TempSize=300;
    (Default setting AutoCommit=1)
    Command> connect adding "uid=user1;pwd=********" as user1;
    Connection successful: DSN=database1;UID=user1;DataStore=/scratch/ttuser/database1;
    DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=AL32UTF8;LogBufMB=1024;
    PermSize=500;TempSize=300;
    (Default setting AutoCommit=1)
    user1: Command> SELECT COUNT (*) FROM employees;
    < 107 >
    1 row found.
    
You have successfully performed the patch upgrade.

About Performing a Fast Patch Upgrade

Consider performing a fast patch upgrade when you have large databases and you have both critical uptime requirements and short maintenance windows. During the fast patch upgrade, the static checkpoint operation performed at database stop is optional, and the shared memory segment is preserved after the subdaemon disconnects. When the database is started, the checkpoint operation is not performed and a new subdaemon connects to this preserved shared memory segment. This reduces the time it takes to upgrade an instance, especially if your databases are large, by skipping both the load of the database into memory operation and the checkpoint operation.

To use a fast patch upgrade, the ramPolicy for the database must be set to enduring. This keeps the database image in memory after the subdaemon disconnects. See Specifying a RAM Policy in the Oracle TimesTen In-Memory Database Operations Guide for information on setting a RAM policy.

The size of the TimesTen shared memory segment must remain the same before and after the fast patch upgrade. The TimesTen ttShmSize utility is provided to calculate the size of the shared memory segment. Run this utility before you upgrade the instance and then run it again after you upgrade the instance to ensure the size of the shared memory segment has not changed after the upgrade. In addition, ensure you do not modify the PermSize, the TempSize, the LogBufMB, and the Connections connection attributes after the upgrade. These attributes affect the size of the shared memory segment.

See ttShmSize and Connection Attributes in the Oracle TimesTen In-Memory Database Reference for information on the ttShmSize utility and the TimesTen connection attributes.

Download and Create the New Installation

To upgrade to a new patch release of TimesTen, you must first create the new installation.

  1. Create the subdirectory into which you will download and unzip the new full distribution of TimesTen. Navigate to this directory and download the new full distribution into this directory. Then, use the ZIP utility to unpack this distribution. This example creates the new_installation_dir subdirectory and unpacks the timesten261120.server.linux8664.zip file. Unzipping the timesten261120.server.linux8664.zip file creates the new installation that will be used for this patch upgrade.
    % mkdir -p new_installation_dir
    % cd new_installation_dir

    Download the full distribution into the new_installation_dir subdirectory. Then use the ZIP utility to unpack the distribution.

    % unzip /timesten/installations/timesten261120.server.linux8664.zip
    Archive:  /timesten/installations/timesten261120.server.linux8664.zip
       creating: tt26.1.1.2.0/
    ...
  2. Optional: Use the ttInstallationCheck utility, located in the bin subdirectory of the new installation (new_installation_dir/bin in this example) to verify the installation is successful.
    % new_installation_dir/tt26.1.1.2.0/bin/ttInstallationCheck
    This installation has been verified.
    
  3. Optional: Verify the subdirectories are created under the full installation directory. These subdirectories may change from release to release.
    % ls new_installation_dir/tt26.1.1.2.0
    3rdparty     bin      info        network        plsql    ttoracle_home
    PERL         grid     kubernetes  nls            startup
    README.html  include  lib         oraclescripts  support
    
You have successfully created the new installation.

Prepare to Detach the Subdaemon from the Shared Memory Segment

Perform these operations on the instance created with the current release of TimesTen (26.1.1.1.0, in this example).

  1. Optional: Run the ttVersion utility to verify the current TimesTen release (26.1.1.1.0, in this example).
    % ttVersion
    TimesTen Release 26.1.1.1.0 (64 bit Linux/x86_64) (myinstance:6624) 2025-08-26T07:41:05Z
      Instance admin: instanceadmin
      Instance home directory: /scratch/ttuser/myinstance
      Group owner: g900
      Daemon home directory: /scratch/ttuser/myinstance/info
      PL/SQL enabled.
    
  2. Run the ttStatus utility to check if the database is open to user connections and if there are connections to the database (database1, in this example). In this example, the database1 database is open and there are two connections to the database.
    % ttStatus
    TimesTen status report as of Tues Aug 26 05:46:05 2025
    
    Daemon pid 21031 port 6624 instance myinstance
    TimesTen server pid 21039 started on port 6625
    ------------------------------------------------------------------------
    ------------------------------------------------------------------------
    Data store /scratch/ttuser/database1
    Daemon pid 21031 port 6624 instance myinstance
    TimesTen server pid 21039 started on port 6625
    There are 14 connections to the data store
    Shared Memory Key 0x0b100699 ID 547979276
    PL/SQL Memory Key 0x0a100699 ID 547946502 Address 0x5000000000
    Type            PID     Context             Connection Name              ConnID
    Process         15076   0x0000000001f09990  database1                         1
    Process         15076   0x00000000020272b0  conn2                             2
    Subdaemon       21036   0x0000000000f3c260  Manager                        2047
    Subdaemon       21036   0x0000000000fbdbc0  Rollback                       2046
    Subdaemon       21036   0x000000000103cf40  XactId Rollback                2037
    Subdaemon       21036   0x00007f9fbc0008c0  Deadlock Detector              2043
    Subdaemon       21036   0x00007f9fc00008c0  Checkpoint                     2042
    Subdaemon       21036   0x00007f9fc007f9e0  Garbage Collector              2036
    Subdaemon       21036   0x00007f9fc40008c0  Monitor                        2044
    Subdaemon       21036   0x00007f9fcc0008c0  Flusher                        2045
    Subdaemon       21036   0x00007f9fcc0a0e70  Aging                          2041
    Subdaemon       21036   0x00007fa04c0008c0  HistGC                         2039
    Subdaemon       21036   0x00007fa0501bbb70  Log Marker                     2040
    Subdaemon       21036   0x00007fa054048370  IndexGC                        2038
    Open for user connections
    Replication policy  : Manual
    Cache Agent policy  : Manual
    PL/SQL enabled.
    ------------------------------------------------------------------------
    Accessible by group g900
    End of report
    
  3. Use the ttAdmin utility to close the database1 database. This prevents further user connections.
    % ttAdmin -close database1
    RAM Residence Policy            : manual
    Manually Loaded In RAM          : True
    Replication Agent Policy        : manual
    Replication Manually Started    : False
    Cache Agent Policy              : manual
    Cache Agent Manually Started    : False
    Database State                  : Closed
    
  4. Disconnect all applications from the database. Run the ttStatus utility to verify there are no connections to the database (database1, in this example).
    % ttStatus
    TimesTen status report as of Tues Aug 26 05:49:55 2025
    
    Daemon pid 21031 port 6624 instance myinstance
    TimesTen server pid 21039 started on port 6625
    ------------------------------------------------------------------------
    ------------------------------------------------------------------------
    Data store /scratch/ttuser/database1
    Daemon pid 21031 port 6624 instance myinstance
    TimesTen server pid 21039 started on port 6625
    There are 12 connections to the data store
    Shared Memory Key 0x0b100699 ID 547979276
    PL/SQL Memory Key 0x0a100699 ID 547946502 Address 0x5000000000
    Type            PID     Context             Connection Name              ConnID
    Subdaemon       21036   0x0000000000f3c260  Manager                        2047
    Subdaemon       21036   0x0000000000fbdbc0  Rollback                       2046
    Subdaemon       21036   0x000000000103cf40  XactId Rollback                2037
    Subdaemon       21036   0x00007f9fbc0008c0  Deadlock Detector              2043
    Subdaemon       21036   0x00007f9fc00008c0  Checkpoint                     2042
    Subdaemon       21036   0x00007f9fc007f9e0  Garbage Collector              2036
    Subdaemon       21036   0x00007f9fc40008c0  Monitor                        2044
    Subdaemon       21036   0x00007f9fcc0008c0  Flusher                        2045
    Subdaemon       21036   0x00007f9fcc0a0e70  Aging                          2041
    Subdaemon       21036   0x00007fa04c0008c0  HistGC                         2039
    Subdaemon       21036   0x00007fa0501bbb70  Log Marker                     2040
    Subdaemon       21036   0x00007fa054048370  IndexGC                        2038
    Closed to user connections
    RAM residence policy: Manual
    Data store is manually loaded into RAM
    Replication policy  : Manual
    Cache Agent policy  : Manual
    PL/SQL enabled.
    ------------------------------------------------------------------------
    Accessible by group g900
    End of report
    
  5. Run the ttShmSize utility to return the size of the shared memory segment. This size must match the size of the shared memory segment after the fast patch upgrade is completed.
    % ttShmSize -connStr DSN=database1
    The required shared memory size is 2148239512 bytes.
    
You have completed the preparatory steps to disconnect the subdaemon from the shared memory segment.

Detach the Subdaemon from the Shared Memory Segment

Perform these steps to disconnect the subdaemon from the shared memory segment.

  1. Run the ttAdmin utility to check the ramPolicy for the database1 database. In this example, the ramPolicy is set to manual and the database1 database is manually loaded in RAM.
    % ttAdmin -query database1
    RAM Residence Policy            : manual
    Manually Loaded In RAM          : True
    Replication Agent Policy        : manual
    Replication Manually Started    : False
    Cache Agent Policy              : manual
    Cache Agent Manually Started    : False
    Database State                  : Closed
    
  2. Use the ttAdmin utility to change the ramPolicy to enduring. The enduring setting preserves the shared memory segment in memory when the subdaemon disconnects from the shared memory segment.
    % ttAdmin -ramPolicy enduring database1
    RAM Residence Policy            : enduring
    Manually Loaded In RAM          : True
    Replication Agent Policy        : manual
    Replication Manually Started    : False
    Cache Agent Policy              : manual
    Cache Agent Manually Started    : False
    Database State                  : Closed
    
  3. Use the ttAdmin utility with the -shmDetach option to disconnect the subdaemon from the shared memory segment.
    % ttAdmin -shmDetach database1
    RAM Residence Policy            : enduring
    Manually Loaded In RAM          : False
    Replication Agent Policy        : manual
    Replication Manually Started    : False
    Cache Agent Policy              : manual
    Cache Agent Manually Started    : False
    Database State                  : Closed
    
  4. Use the ttStatus utility to verify the subdaemon is disconnected from the shared memory segment.
    % ttStatus
    TimesTen status report as of Tues Aug 26 06:12:04 2025
    
    Daemon pid 21031 port 6624 instance myinstance
    TimesTen server pid 21039 started on port 6625
    ------------------------------------------------------------------------
    ------------------------------------------------------------------------
    Data store /scratch/ttuser/database1
    Daemon pid 21031 port 6624 instance myinstance
    TimesTen server pid 21039 started on port 6625
    There are no connections to the data store
    Closed to user connections
    RAM residence policy: Enduring
    Subdaemon is manually detached from data store (Shared Memory Key 0x0b100699 ID 547979276)
    Replication policy  : Manual
    Cache Agent policy  : Manual
    PL/SQL enabled.
    ------------------------------------------------------------------------
    Accessible by group g900
    End of report
    
The subdaemon is disconnected from the shared memory segment. You are now ready to perform the patch upgrade.

Modify the Instance to Point to the New Installation

The patch upgrade process requires you to modify the existing TimesTen instance to point to the new installation.
Perform these steps:
  1. Use the ttDaemonAdmin utility to stop the TimesTen main daemon.
    % ttDaemonAdmin -stop
    TimesTen Daemon (PID: 21031, port: 6624) stopped.
    
  2. Use the ttInstanceModify utility to modify the myinstance instance to point to the new installation. Recall that the TimesTen full distribution was unpacked and a new installation was created in new_installation_dir/tt26.1.1.2.0. See "Download and Create the New Installation" for details.
    % $TIMESTEN_HOME/bin/ttInstanceModify -install new_installation_dir/tt26.1.1.2.0
    
    Instance Info (UPDATED)
    -----------------------
    
    Name:           myinstance
    Version:        26.1.1.2.0
    Location:       /scratch/ttuser/myinstance
    Installation:   new_installation_dir/tt26.1.1.2.0
    Daemon Port:    6624
    Server Port:    6625
    
    
    The instance myinstance now points to the installation in new_installation_dir/tt26.1.1.2.0
  3. Use the ttDaemonAdmin utility to restart the TimesTen main daemon. Then run the ttVersion utility to verify the myinstance instance has been upgraded to the new patch release (26.1.1.2.0, in this example).
    % ttDaemonAdmin -start
    TimesTen Daemon (PID: 20699, port: 6624) startup OK.
    
    % ttVersion
    TimesTen Release 26.1.1.2.0 (64 bit Linux/x86_64) (myinstance:6624) 2025-08-26T16:53:47Z
      Instance admin: instanceadmin
      Instance home directory: /scratch/ttuser/myinstance
      Group owner: g900
      Daemon home directory: /scratch/ttuser/myinstance/info
      PL/SQL enabled.
    
You have successfully modified the instance to point to the new installation.

Attach a New Subdaemon to the Existing Shared Memory Segment

Perform these steps to connect a new subdaemon to the existing shared memory segment:

  1. Run the ttShmSize utility to return the size of the shared memory segment. This size must match the size of the shared memory segment before the patch upgrade. Recall the size was 2148239512 bytes. See "Prepare to Detach the Subdaemon from the Shared Memory Segment" for details.
    % ttShmSize -connStr DSN=database1
    The required shared memory size is 2148239512 bytes.
    
  2. Use the ttAdmin utility to attach a new subdaemon to the existing shared memory segment.
    % ttAdmin -shmAttach database1
    RAM Residence Policy            : enduring
    Manually Loaded In RAM          : True
    Replication Agent Policy        : manual
    Replication Manually Started    : False
    Cache Agent Policy              : manual
    Cache Agent Manually Started    : False
    Database State                  : Closed
    
  3. Use the ttStatus utility to verify the subdaemon is connected to the shared memory segment.
    % ttStatus
    TimesTen status report as of Tues Aug 26 06:35:10 2025
    
    Daemon pid 20699 port 6624 instance myinstance
    TimesTen server pid 20706 started on port 6625
    ------------------------------------------------------------------------
    ------------------------------------------------------------------------
    Data store /scratch/ttuser/database1
    Daemon pid 20699 port 6624 instance myinstance
    TimesTen server pid 20706 started on port 6625
    There are 12 connections to the data store
    Shared Memory Key 0x0b100699 ID 547979276
    PL/SQL Memory Key 0x0d100699 ID 548044806 Address 0x5000000000
    Type            PID     Context             Connection Name              ConnID
    Subdaemon       20704   0x000000000207f260  Manager                        2047
    Subdaemon       20704   0x0000000002100bc0  Rollback                       2046
    Subdaemon       20704   0x000000000217ff40  Aging                          2041
    Subdaemon       20704   0x00007f7ac40008c0  Checkpoint                     2042
    Subdaemon       20704   0x00007f7ac407f9e0  Garbage Collector              2040
    Subdaemon       20704   0x00007f7acc0008c0  Monitor                        2045
    Subdaemon       20704   0x00007f7acc0a0e70  IndexGC                        2038
    Subdaemon       20704   0x00007f7ad00008c0  Deadlock Detector              2043
    Subdaemon       20704   0x00007f7ad007f9e0  XactId Rollback                2039
    Subdaemon       20704   0x00007f7ad40008c0  Flusher                        2044
    Subdaemon       20704   0x00007f7ad407f9e0  HistGC                         2037
    Subdaemon       20704   0x00007f7b580bed90  Log Marker                     2036
    Closed to user connections
    RAM residence policy: Enduring
    Data store is manually loaded into RAM
    Replication policy  : Manual
    Cache Agent policy  : Manual
    PL/SQL enabled.
    ------------------------------------------------------------------------
    Accessible by group g900
    End of report
    
  4. Use the ttAdmin utility to change the ramPolicy back to manual.
    % ttAdmin -ramPolicy manual database1
    RAM Residence Policy            : manual
    Manually Loaded In RAM          : True
    Replication Agent Policy        : manual
    Replication Manually Started    : False
    Cache Agent Policy              : manual
    Cache Agent Manually Started    : False
    Database State                  : Closed
    
  5. Use the ttAdmin utility to open the database1 database for user connections.
    % ttAdmin -open database1;
    RAM Residence Policy            : manual
    Manually Loaded In RAM          : True
    Replication Agent Policy        : manual
    Replication Manually Started    : False
    Cache Agent Policy              : manual
    Cache Agent Manually Started    : False
    Database State                  : Open
    
  6. Verify the instance administrator user (instanceadmin, in this example) can connect to the database1 database and perform a query.
    % ttIsql database1;
    
    Copyright (c) 1996, 2025, Oracle and/or its affiliates. All rights reserved.
    Type ? or "help" for help, type "exit" to quit ttIsql.
    
    
    
    connect "DSN=database1";
    Connection successful: DSN=database1;UID=instanceadmin;DataStore=/scratch/ttuser/database1;
    DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=AL32UTF8;LogBufMB=1024;PermSize=500;
    TempSize=300;
    (Default setting AutoCommit=1)
    Command> connect adding "uid=user1;pwd=********" as user1;
    Connection successful: DSN=database1;UID=user1;DataStore=/scratch/ttuser/database1;
    DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=AL32UTF8;LogBufMB=1024;PermSize=500;
    TempSize=300;
    (Default setting AutoCommit=1)
    user1: Command> SELECT COUNT (*) FROM employees;
    < 107 >
    1 row found.
A new subdaemon connected to the preserved shared memory segment. The fast patch upgrade is successful.

Moving to a Different Patch Release Using ttBackup and ttRestore

You can run the ttBackup and ttRestore utilities to move to a new patch release, although this is not the preferred method. For the preferred method, see About Moving to a Different Patch Release by Modifying the Instance.

Note:

TimesTen replication with Oracle Clusterware is not supported on Oracle Linux for Arm systems. If you are using Oracle Linux for Arm, Oracle Clusterware messages do not appear in any output in this example.

Perform these steps for each database.

On the old release:

  1. Use the ttAdmin utility to close the database1 database. This prevents further user connections.
    % ttAdmin -close database1
    RAM Residence Policy            : manual
    Manually Loaded In RAM          : True
    Replication Agent Policy        : manual
    Replication Manually Started    : False
    Cache Agent Policy              : manual
    Cache Agent Manually Started    : False
    Database State                  : Closed
    
  2. Disconnect all applications from the database. Run the ttStatus utility to verify there are no connections to the database (database1, in this example).
    % ttStatus
    TimesTen status report as of Tues Aug 26 04:37:10 2025
    
    Daemon pid 4649 port 6624 instance myinstance
    TimesTen server pid 4656 started on port 6625
    ------------------------------------------------------------------------
    ------------------------------------------------------------------------
    Data store /scratch/ttuser/database1
    Daemon pid 4649 port 6624 instance myinstance
    TimesTen server pid 4656 started on port 6625
    There are no connections to the data store
    Closed to user connections
    RAM residence policy: manual
    Data store is manually loaded into RAM
    Replication policy  : Manual
    Cache Agent policy  : Manual
    PL/SQL enabled.
    ------------------------------------------------------------------------
    Accessible by group g900
    End of report
    
  3. Run the ttVersion utility to verify the current release (26.1.1.1.0, in this example).

    % ttVersion
    TimesTen Release 26.1.1.1.0 (64 bit Linux/x86_64) (myinstance:6624) 2025-08-25T07:41:05Z
      Instance admin: instanceadmin
      Instance home directory: /scratch/ttuser/myinstance20/myinstance
      Group owner: g900
      Daemon home directory: /scratch/ttuser/myinstance/myinstance/info
      PL/SQL enabled.
  4. Backup the database. In this example, backup the database1 database for release 26.1.1.1.0.

    % ttBackup -dir /tmp/dump/backup -fname database1_2611 database1
    Backup started ...
    Backup complete
    
  5. Unload the database from memory. This example assumes a RAM policy of manual. See Specifying a RAM Policy in the Oracle TimesTen In-Memory Database Operations Guide for information on the RAM policy.
    % ttAdmin -ramUnload database1
    RAM Residence Policy            : manual
    Manually Loaded In RAM          : False
    Replication Agent Policy        : manual
    Replication Manually Started    : False
    Cache Agent Policy              : manual
    Cache Agent Manually Started    : False
    Database State                  : Closed
    
  6. Stop the TimesTen main daemon.
    % ttDaemonAdmin -stop
    TimesTen Daemon (PID: 4649, port: 6624) stopped.

For the new release:

  1. Create the subdirectory into which you will download and unzip the new full distribution of TimesTen. Navigate to this directory and download the new full distribution into this directory. Then, use the ZIP utility to unpack this distribution. This example creates the new_installation_dir subdirectory and unpacks the timesten261120.server.linux8664.zip file. Unzipping the timesten261120.server.linux8664.zip file creates the new installation that will be used for this patch upgrade.
    % mkdir -p new_installation_dir
    % cd new_installation_dir

    Download the full distribution into the new_installation_dir subdirectory. Then use the ZIP utility to unpack the distribution.

    % unzip /timesten/installations/timesten261120.server.linux8664.zip
    Archive:  /timesten/installation/timesten261120.server.linux8664.zip
       creating: tt26.1.1.2.0/
    ...
  2. Run the ttInstanceCreate utility to create the instance. This example runs the ttInstanceCreate utility interactively. See ttInstanceCreate in the Oracle TimesTen In-Memory Database Reference and Creating an Instance on Linux/UNIX: Basics in this book for details.

    Navigate to the new_installation_dir/tt26.1.1.2.0/bin area of the installation directory and then run the ttInstanceCreate utility located in that directory. The ttInstanceCreate utility must be run from the installation directory. User input is shown in bold.

    % new_installation_dir/bin/ttInstanceCreate
    
    NOTE: Each TimesTen instance is identified by a unique name.
          The instance name must be a non-null alphanumeric string, not longer
          than 255 characters.
    
    Please choose an instance name for this installation? [ tt261 ] myinstance
    Instance name will be 'myinstance30'.
    Is this correct? [ yes ]
    Where would you like to install the myinstance instance of TimesTen? [ /home/ttuser ] /scratch/ttuser
    The directory /scratch/ttuser/ does not exist.
    Do you want to create it? [ yes ]
    Creating instance in /scratch/ttuser/myinstance ...
    
    NOTE: If you are configuring TimesTen for use with Oracle Clusterware, the
          daemon port number must be the same across all TimesTen installations
          managed within the same Oracle Clusterware cluster.
    
    NOTE: All installations that replicate to each other must use the same daemon
          port number that is set at installation time. The daemon port number can
          be verified by running 'ttVersion'.
    
    The default port number is 6624.
    
    Do you want to use the default port number for the TimesTen daemon? [ yes ]
    The daemon will run on the default port number (6624).
    
    In order to use the cache features in any TimesTen databases
    created within this instance, you must set a value for the TNS_ADMIN
    environment variable. It can be left blank, and a value can be supplied later
    using <install_dir>/bin/ttInstanceModify.
    
    Please enter a value for TNS_ADMIN (s=skip)? [  ] s
    What is the TCP/IP port number that you want the TimesTen Server to listen on? [ 6625 ]
    
    Would you like to use TimesTen Replication with Oracle Clusterware? [ no ]
    
    Would you like to use systemd to manage TimesTen? [ no ]
    
    NOTE: The TimesTen daemon startup/shutdown scripts have not been installed.
    
    The startup script is located here :
            '/scratch/ttuser/myinstance/startup/tt_myinstance'
    
    Run the 'setuproot' script :
            /scratch/ttuser/myinstance/bin/setuproot -install
    This will move the TimesTen startup script into its appropriate location.
    
    The 26.1 Release Notes are located here :
      'new_installation_dir/tt26.1.1.2.0/README.html'
    
    Starting the daemon ...
    TimesTen Daemon (PID: 11121, port: 6624) startup OK.
    Instance created successfully.
    
  3. Restore the database. Source the environment variables, make all necessary changes to your connection attributes in the sys.odbc.ini (or the odbc.ini) file, and start the daemon (if not already started) prior to restoring the database.
    % ttRestore -dir /tmp/dump/backup -fname database1_2611 database1
    Restore started ...
    Restore complete

Once your databases are correctly configured and fully operational, you can optionally remove the backup file (in this example, /tmp/dump/backup/database1_2611).

Moving to a Different Major Release Using ttMigrate

Moving to a different major release is done through migration. Migration includes upgrading from one major TimesTen release to a new major TimesTen release, or changing the operating system platform that TimesTen runs on.

Migration involves copying out the schema and data from one database, creating a new database with the new release, and then creating the schema and inserting the data into the new database. The ttMigrate utility is used to automate the migration of databases. See ttMigrate in the Oracle TimesTen In-Memory Database Reference for information on the ttMigrate utility.

Release Compatibility

Starting with Release 26.1, on Linux and UNIX, TimesTen has strengthened password security that adopts a stronger hashing algorithm. The Times databases must be one of the following releases to support the stronger algorithm and avoid authentication issues when performing a major upgrade:

  • Release 26.1.1.1.0 or later for TimesTen 26.1
  • Release 22.1.1.36.0 or later for TimesTen 22.1
  • Release 18.1.4.54.0 and later for TimesTen 18.1

Prerequisites

Before migrating a database from one major release to another, ensure you back up the database in the old release. See ttBackup and ttRestore in Oracle TimesTen In-Memory Database Reference and Backing Up and Restoring a Database in this book for details.

Old Release

Follow these steps for the old release:

  1. Use the ttAdmin utility to close the database1 database. This prevents further user connections.

    % ttAdmin -close database1
    RAM Residence Policy            : manual
    Manually Loaded In RAM          : True
    Replication Agent Policy        : manual
    Replication Manually Started    : False
    Cache Agent Policy              : manual
    Cache Agent Manually Started    : False
    Database State                  : Closed
    
  2. Disconnect all applications from the database. Run the ttStatus utility to verify there are no connections to the database (database1, in this example).

    % ttStatus
    TimesTen status report as of Sat Oct  2 18:31:59 2021
    
    Daemon pid 28436 port 6624 instance myinstance
    TimesTen server pid 28443 started on port 6625
    ------------------------------------------------------------------------
    ------------------------------------------------------------------------
    Data store /scratch/ttuser/database1
    Daemon pid 28436 port 6624 instance myinstance
    TimesTen server pid 28443 started on port 6625
    There are 13 connections to the data store
    Shared Memory KEY 0x061014ae ID 491521
    PL/SQL Memory Key 0x071014ae ID 524290 Address 0x5000000000
    Type            PID     Context             Connection Name              ConnID
    Subdaemon       28440   0x0000000001893250  Manager                        2047
    Subdaemon       28440   0x0000000001914210  Rollback                       2046
    Subdaemon       28440   0x00007f55d80008c0  Deadlock Detector              2043
    Subdaemon       28440   0x00007f55d807f330  Log Marker                     2040
    Subdaemon       28440   0x00007f55dc0008c0  Monitor                        2044
    Subdaemon       28440   0x00007f55dc07f330  AsyncMV                        2039
    Subdaemon       28440   0x00007f55e00008c0  Checkpoint                     2042
    Subdaemon       28440   0x00007f55e007f330  Aging                          2041
    Subdaemon       28440   0x00007f55e40008c0  Flusher                        2045
    Subdaemon       28440   0x00007f55e40a6970  HistGC                         2038
    Subdaemon       28440   0x00007f56600008c0  XactId Rollback                2036
    Subdaemon       28440   0x00007f56641b9cb0  IndexGC                        2037
    Subdaemon       28440   0x00007f5668048360  Garbage Collector              2035
    Closed to user connections
    RAM residence policy: Manual
    Data store is manually loaded into RAM
    Replication policy  : Manual
    Cache Agent policy  : Manual
    PL/SQL enabled.
    ------------------------------------------------------------------------
    Accessible by group g900
    End of report
    
  3. Run the ttVersion utility to verify the current release.

    % ttVersion
    TimesTen Release tt26.1.1.1.0 (64 bit Linux/x86_64) (myinstance:6624) 2021-09-12T07:34:06Z
      Instance admin: instanceadmin
      Instance home directory: /scratch/ttuser/myinstance
      Group owner: g900
      Daemon home directory: /scratch/ttuser/myinstance/info
      PL/SQL enabled.
    
  4. Use the ttMigrate utility to copy out the schema and data from the database (database1, in this example).
    % ttMigrate -c database1 /tmp/database1.data
    
    Saving profile DEFAULT
    Profile successfully saved.
    
    Saving profile SYSTEM
    Profile successfully saved.
    
    Saving user PUBLIC
    User successfully saved.
    
    Saving table TTUSER.COUNTRIES
      Saving foreign key constraint COUNTR_REG_FK
      Saving rows...
      25/25 rows saved.
    Table successfully saved.
    
    Saving table TTUSER.DEPARTMENTS
      Saving foreign key constraint DEPT_LOC_FK
      Saving rows...
      27/27 rows saved.
    Table successfully saved.
    
    Saving table TTUSER.EMPLOYEES
      Saving index TTUSER.TTUNIQUE_0
      Saving foreign key constraint EMP_DEPT_FK
      Saving foreign key constraint EMP_JOB_FK
      Saving rows...
      107/107 rows saved.
    Table successfully saved.
    
    Saving table TTUSER.JOBS
      Saving rows...
      19/19 rows saved.
    Table successfully saved.
    
    Saving table TTUSER.JOB_HISTORY
      Saving foreign key constraint JHIST_DEPT_FK
      Saving foreign key constraint JHIST_EMP_FK
      Saving foreign key constraint JHIST_JOB_FK
      Saving rows...
      10/10 rows saved.
    Table successfully saved.
    
    Saving table TTUSER.LOCATIONS
      Saving foreign key constraint LOC_C_ID_FK
      Saving rows...
      23/23 rows saved.
    Table successfully saved.
    
    Saving table TTUSER.REGIONS
      Saving rows...
      4/4 rows saved.
    Table successfully saved.
    
    Saving view TTUSER.EMP_DETAILS_VIEW
    View successfully saved.
    
    Saving sequence TTUSER.DEPARTMENTS_SEQ
    Sequence successfully saved.
    
    Saving sequence TTUSER.EMPLOYEES_SEQ
    Sequence successfully saved.
    
    Saving sequence TTUSER.LOCATIONS_SEQ
    Sequence successfully saved.
    
  5. Unload the database from memory. This example assumes a RAM policy of manual. See Specifying a RAM Policy in the Oracle TimesTen In-Memory Database Operations Guide for information on the RAM policy.

    % ttAdmin -ramUnload database1
    RAM Residence Policy            : manual
    Manually Loaded In RAM          : False
    Replication Agent Policy        : manual
    Replication Manually Started    : False
    Cache Agent Policy              : manual
    Cache Agent Manually Started    : False
    Database State                  : Closed
    
  6. Stop the TimesTen main daemon.

    % ttDaemonAdmin -stop
    TimesTen Daemon (PID: 28436, port: 6624) stopped.
    
  7. Copy the migrated object files (/tmp/database1.data, in this example) to a file system that is accessible by the instance in the new release.

New Release

Follow these steps for the new release:

  1. Create the subdirectory into which you will download and unzip the new full distribution of TimesTen. Navigate to this directory and download the new full distribution into this directory. Then, use the ZIP utility to unpack this distribution. This example creates the new_installation_dir subdirectory and unpacks the timesten261110.server.linux8664.zip file. Unzipping the timesten261110.server.linux8664.zip file creates the new installation that will be used for this patch upgrade.
    % mkdir -p new_installation_dir
    % cd new_installation_dir

    Download the full distribution into the new_installation_dir subdirectory. Then use the ZIP utility to unpack the distribution.

    % unzip /timesten/installations/timesten261110.server.linux8664.zip
    Archive:  timesten/installations/timesten261110.server.linux8664.zip
       creating: tt261110/
    ...
  2. Run the ttInstanceCreate utility to create the instance. This example runs the ttInstanceCreate utility interactively. See ttInstanceCreate in the Oracle TimesTen In-Memory Database Reference and "Creating an Instance on Linux/UNIX: Basics" in this book for details.
    User input is shown in bold.
    % new_installation_dir/bin/ttInstanceCreate
    
    NOTE: Each TimesTen instance is identified by a unique name.
          The instance name must be a non-null alphanumeric string, not longer
          than 255 characters.
    
    Please choose an instance name for this installation? [ tt261 ] myinstance
    Instance name will be 'myinstance'.
    Is this correct? [ yes ]
    Where would you like to install the myinstance instance of TimesTen? [ /home/ttuser ] /scratch/ttuser
    The directory /scratch/ttuser/myinstance does not exist.
    Do you want to create it? [ yes ]
    Creating instance in /scratch/ttuser/myinstance ...
    
    NOTE: If you are configuring TimesTen for use with Oracle Clusterware, the
          daemon port number must be the same across all TimesTen installations
          managed within the same Oracle Clusterware cluster.
    
    NOTE: All installations that replicate to each other must use the same daemon
          port number that is set at installation time. The daemon port number can
          be verified by running 'ttVersion'.
    
    The default port number is 6624.
    
    Do you want to use the default port number for the TimesTen daemon? [ yes ]
    The daemon will run on the default port number (6624).
    
    In order to use the cache features in any TimesTen databases
    created within this instance, you must set a value for the TNS_ADMIN
    environment variable. It can be left blank, and a value can be supplied later
    using <install_dir>/bin/ttInstanceModify.
    
    Please enter a value for TNS_ADMIN (s=skip)? [  ] s
    What is the TCP/IP port number that you want the TimesTen Server to listen on? [ 6625 ]
    
    Would you like to use TimesTen Replication with Oracle Clusterware? [ no ]
    
    Would you like to use systemd to manage TimesTen? [ no ]
    
    NOTE: The TimesTen daemon startup/shutdown scripts have not been installed.
    
    The startup script is located here :
            '/scratch/ttuser/myinstance/startup/tt_myinstance'
    
    Run the 'setuproot' script :
            /scratch/ttuser/myinstance/bin/setuproot -install
    This will move the TimesTen startup script into its appropriate location.
    
    The 26.1 Release Notes are located here :
      'new_installation_dir/tt26.1.1.1.0/README.html'
    
    Starting the daemon ...
    TimesTen Daemon (PID: 2214, port: 6624) startup OK.
    Instance created successfully.
  3. From the instance of the new release, create a database. Ensure you have sourced the environment variables, made all necessary changes to your connection attributes in the sys.odbc.ini (or the odbc.ini) file, and started the daemon (if not already started).

    To create the database:

    % ttIsql -connStr "DSN=mynewdatabase;AutoCreate=1" -e "quit"
    
    Copyright (c) 1996, 2021, Oracle and/or its affiliates. All rights reserved.
    Type ? or "help" for help, type "exit" to quit ttIsql.
    
    
    
    connect "DSN=mynewdatabase;AutoCreate=1";
    Connection successful: DSN=mynewdatabase;UID=ttuser;DataStore=/scratch/ttuser/mynewdatabase;
    DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=AL32UTF8;LogBufMB=1024;PermSize=500;
    TempSize=300;
    (Default setting AutoCommit=1)
    
    quit;
    Disconnecting...
    Done.
    

    The database will be empty at this point.

  4. From the instance of the new release, run the ttMigrate utility with the -r and -relaxedUpgrade options to restore the backed up database to the new release. For example:
    % $TIMESTEN_HOME/bin/ttMigrate -r -relaxedUpgrade mynewdatabase /tmp/database1.data
    
    Restoring profile DEFAULT
    Profile successfully restored.
    
    Restoring profile SYSTEM
    Profile successfully restored.
    
    Restoring table TTUSER.JOBS
      Restoring rows...
      19/19 rows restored.
    Table successfully restored.
    
    Restoring table TTUSER.REGIONS
      Restoring rows...
      4/4 rows restored.
    Table successfully restored.
    
    Restoring table TTUSER.COUNTRIES
      Restoring rows...
      25/25 rows restored.
      Restoring foreign key dependency COUNTR_REG_FK on TTUSER.REGIONS
    Table successfully restored.
    
    Restoring table TTUSER.LOCATIONS
      Restoring rows...
      23/23 rows restored.
      Restoring foreign key dependency LOC_C_ID_FK on TTUSER.COUNTRIES
    Table successfully restored.
    
    Restoring table TTUSER.DEPARTMENTS
      Restoring rows...
      27/27 rows restored.
      Restoring foreign key dependency DEPT_LOC_FK on TTUSER.LOCATIONS
    Table successfully restored.
    
    Restoring table TTUSER.EMPLOYEES
      Restoring rows...
      107/107 rows restored.
      Restoring foreign key dependency EMP_DEPT_FK on TTUSER.DEPARTMENTS
      Restoring foreign key dependency EMP_JOB_FK on TTUSER.JOBS
    Table successfully restored.
    
    Restoring table TTUSER.JOB_HISTORY
      Restoring rows...
      10/10 rows restored.
      Restoring foreign key dependency JHIST_DEPT_FK on TTUSER.DEPARTMENTS
      Restoring foreign key dependency JHIST_EMP_FK on TTUSER.EMPLOYEES
      Restoring foreign key dependency JHIST_JOB_FK on TTUSER.JOBS
    Table successfully restored.
    
    Restoring view TTUSER.EMP_DETAILS_VIEW
    View successfully restored.
    
    Restoring sequence TTUSER.DEPARTMENTS_SEQ
    Sequence successfully restored.
    
    Restoring sequence TTUSER.EMPLOYEES_SEQ
    Sequence successfully restored.
    
    Restoring sequence TTUSER.LOCATIONS_SEQ
    Sequence successfully restored.

Once the database is operational in the new release, create a backup of this database to have a valid restoration point for your database. Once you have created a backup of your database, you may delete the ttMigrate copy of your database (in this example, /tmp/database1.data). Optionally, for the old release, you can remove the instance and delete the installation.

Ensure you recompile and relink existing ODBC and OCI applications after you perform the upgrade and before you use the new release of TimesTen. See Overview of ODBC API Incompatibilities in the Oracle TimesTen In-Memory Database C Developer's Guide for more information.

Online Upgrade: Using TimesTen Replication

When upgrading to a new release of TimesTen Classic, you may have a mission-critical database that must remain continuously available to your applications. You can use TimesTen replication to keep two copies of a database synchronized, even when the databases are from different releases of TimesTen, allowing your applications to stay connected to one copy of the database while the instance for the other database is being upgraded. When the upgrade is finished, any updates that have been made on the active database are transmitted immediately to the database in the upgraded instance, and your applications can then be switched with no data loss and no downtime. See "Performing an Online Upgrade with Classic Replication" for information.

The online upgrade process supports only updates to user tables during the upgrade. The tables to be replicated must have a PRIMARY KEY or a unique index on non-nullable columns. Data definition changes such as CREATE TABLE or CREATE INDEX are not replicated except in the case for an active standby pair with DDLReplicationLevel set to 2. In the latter case, CREATE TABLE and CREATE INDEX are replicated.

Because two copies of the database (or two copies of each database, if there are more than one) are required during the upgrade, you must have available twice the memory and disk space normally required, if performing the upgrade on a single host.

Note:

  • Online major upgrades for active standby pairs with cache groups are only supported for read-only cache groups.

  • Online major upgrades for active standby pairs that are managed by Oracle Clusterware are not supported.

Performing an Online Upgrade with Classic Replication

This section describes how to use the TimesTen replication feature to perform online upgrades for applications that require continuous data availability.

This procedure is for classic replication in a unidirectional, bidirectional, or multidirectional scenario.

Typically, applications that require high availability of their data use TimesTen replication to keep at least one extra copy of their databases up to date. An online upgrade works by keeping one of these two copies available to the application while the other is being upgraded. The procedures described in this section assume that you have a bidirectional replication scheme configured and running for two databases, as described in Unidirectional or Bidirectional Replication in the Oracle TimesTen In-Memory Database Replication Guide.

Note the following:

The following sections describe how to perform an online upgrade with replication.

Requirements

To perform online upgrades with replication, replication must be configured to use static ports. See Port Assignments in Oracle TimesTen In-Memory Database Replication Guide for information.

Additional disk space must be allocated to hold a backup copy of the database made by the ttMigrate utility. The size of the backup copy is typically about the same as the in-use size of the database. This size may be determined by querying the v$monitor view, using ttIsql:

Command> SELECT perm_in_use_size FROM v$monitor;

Upgrade Steps

The following steps illustrate how to perform an online upgrade while replication is running. The upgrade host is the host on which the database upgrade is being performed, and the active host is the host containing the database to which the application remains connected.

Step Upgrade host Active host

1.

Configure replication to replicate to the active host using static ports.

Configure replication to replicate to the upgrade host using static ports.

2.

n/a

Connect all applications to the active database, if they are not connected.

3.

Disconnect all applications from the database that will be upgraded.

n/a

4.

n/a

Set replication to the upgrade host to the PAUSE state.

5.

Wait for updates to propagate to the active host.

n/a

6.

Stop replication.

n/a

7.

Back up the database with ttMigrate -c and run ttDestroy to destroy the database.

n/a

8.

Stop the TimesTen daemon for the old release.

n/a

9.

Create a new installation and a new instance for the new release. See "Creating an Installation on Linux/UNIX" and "Creating an Instance on Linux/UNIX: Basics" for information.

n/a

10.

Create a DSN for the post-upgrade database for the new release. Adjust parallelism options for the DSN.

n/a

11.

Restore the database from the backup with ttMigrate -r.

n/a

12.

Clear the replication bookmark and logs using ttRepAdmin -receiver -reset and by setting replication to the active host to the stop and then the start state.

n/a

13.

Start replication.

n/a

14.

n/a

Set replication to the upgrade host to the start state, ensuring that the accumulated updates propagate once replication is restarted.

15.

n/a

Start replication.

16.

n/a

Wait for all of the updates to propagate to the upgrade host.

17.

Reconnect all applications to the post-upgrade database.

n/a

After the above procedures are completed on the upgrade host, the active host can be upgraded using the same steps.

Online Upgrade Example

This section describes how to perform an online upgrade in a scenario with two bidirectionally replicated databases.

In the following discussion, the two hosts are referred to as the upgrade host, on which the instance (with its databases) is being upgraded, and the active host, which remains operational and connected to the application for the duration of the upgrade. After the procedure is completed, the same steps can be followed to upgrade the active host. However, you may prefer to delay conversion of the active host to first test the upgraded instance.

The upgrade host in this example consists of the database upgrade on the server upgradehost. The active host consists of the database active on the server activehost.

Follow these steps in the order they are presented:

Step Upgrade host Active host

1.

Use ttIsql to alter the replication scheme repscheme, setting static replication port numbers so that the databases can communicate across releases:

Command> call ttRepStop;

Command> ALTER REPLICATION repscheme ALTER STORE upgrade ON upgradehost SET PORT 40000 ALTER STORE active ON activehost SET PORT 40001;

Command> call ttRepStart;

Use ttIsql to alter the replication scheme repscheme, setting static replication port numbers so that the databases can communicate across releases:

Command> call ttRepStop;

Command> ALTER REPLICATION repscheme ALTER STORE upgrade ON upgradehost SET PORT 40000 ALTER STORE active ON activehost SET PORT 40001;

Command> call ttRepStart;

2.

Disconnect all production applications connected to the database. Any workload being run on the upgrade host must start running on the active host instead.

Use the ttRepAdmin utility to pause replication from the database active to the database upgrade:

ttRepAdmin -receiver -name upgrade
 -state pause active

This command temporarily stops the replication of updates from the database active to the database upgrade, but it retains any updates made to active in the database transaction log files. The updates made to active during the upgrade procedure are applied later, when upgrade is brought back up.

See Set the Replication State of Subscribers in Oracle TimesTen In-Memory Database Replication Guide for details.

3.

Wait for all replication updates to be sent to the database active. You can verify that all updates have been sent by applying a recognizable update to a table reserved for that purpose on the database upgrade. When the update appears in the database active, you know that all previous updates have been sent.

For example, call the ttRepSubscriberWait built-in procedure. You should expect a value of <00> to be returned, indicating there was a clean response, not a time out. (If there is a time out, ttRepSubscriberWait returns a value of 01.)

Command> call ttRepSubscriberWait (,,,,60);
< 00 >
1 row found.

See ttRepSubscriberWait in the Oracle TimesTen In-Memory Database Reference for information.

n/a

4.

Stop the replication agent with ttAdmin:

ttAdmin -repStop upgrade

From this point on, no updates are sent to the database active.

Stop the replication agent with ttAdmin:

ttAdmin -repStop active

From this point on, no updates are sent to the database upgrade.

See Starting and Stopping the Replication Agents in Oracle TimesTen In-Memory Database Replication Guide for details.

5.

Use ttMigrate to back up the database upgrade. If the database is very large, this step could take a significant amount of time. If sufficient disk space is free on the /backup file host, use the following ttMigrate command:

ttMigrate -c upgrade /backup/upgrade.dat

n/a

6.

If the ttMigrate command is successful, destroy the database upgrade.

ttDestroy upgrade

Restart the replication agent on the database active:

ttAdmin -repStart active

7.

Create a new installation and a new instance for the new release. See Creating an Installation on Linux/UNIX and "Creating an Instance on Linux/UNIX: Basics" for information.

Resume replication from active to upgrade by setting the replication state to start:

ttRepAdmin -receiver -name upgrade -state start active

8.

Use ttMigrate to load the backup created in step 5. into the database upgrade for the new release:

ttMigrate -r upgrade /backup/upgrade.dat
Change the ramPolicy to manual (The ramPolicy is set to inUse by default).
ttAdmin -ramPolicy manual upgrade
ttAdmin -ramLoad upgrade

Note: In this step, you must use the ttMigrate utility contained inthe new release of to which you are upgrading.

n/a

9.

Use ttRepAdmin to clear the replication bookmark and logs by resetting the receiver state for the database active and then setting replication to the stop state and then the start state:

ttRepAdmin -receiver -name active
   -reset upgrade
ttRepAdmin -receiver -name active
   -state stop upgrade
sleep 10
ttRepAdmin -receiver -name active
   -state start upgrade
sleep 10

Note: The sleep command is to ensure that each state takes effect, as the state change can take up to 10 seconds depending on the resources and operating system.

n/a

10.

Use ttAdmin to start the replication agent on the new database upgrade and to begin sending updates to the database active:

ttAdmin -repStart upgrade

n/a

11.

Verify that the database upgrade is receiving updates from the database active. You can verify that updates are sent by applying a recognizable update to a table reserved for that purpose in the database active. When the update appears in upgrade, you know that replication is operational.

If the applications are still running on the database active, let them continue until the database upgrade has been successfully migrated and you have verified that the updates are being replicated correctly from active to upgrade.

12.

n/a

Once you are sure that updates are replicated correctly, you can disconnect all of the applications from the database active and reconnect them to the database upgrade. After verifying that the last of the updates from active are replicated to upgrade, the instance with active is ready to be upgraded.

Note: You may choose to delay upgrading the instance with active to the new release until sufficient testing has been performed with the database upgrade in the new release. When you are ready to upgrade the instance with the active to the new release, follow the steps in Online Patch Upgrade for Active Master for details.

Upgrades When Using Parallel Replication

You can perform an online or offline upgrade from a database that has not enabled parallel replication to a database that has enabled automatic parallel replication (with or without disabled commit dependencies). See ReplicationApplyOrdering attribute, in the Oracle TimesTen In-Memory Database Reference for information on setting automatic parallel replication values.

The remainder of this section discusses additional considerations along with scenarios where an offline upgrade is required.

Considerations Regarding Parallel Replication

Be aware of the following considerations when upgrading hosts that use parallel replication:

  • Consider an active standby pair without parallel replication enabled. To upgrade the instances to a 26.1 release and use automatic parallel replication (default value of 0 for the ReplicationApplyOrdering attribute), use the appropriate procedure for an active standby pair upgrade. See Performing an Upgrade with Active Standby Pair Replication for details.

  • Consider an active standby pair with no cache groups and automatic parallel replication enabled (value of 0 for the ReplicationApplyOrdering attribute). To upgrade the instances to a 26.1 release to use automatic parallel replication with disabled commit dependencies (value of 2 for the ReplicationApplyOrdering attribute), use the procedure for an active standby pair online major upgrade. See Online Major Upgrade for Active Standby Pair for details. The value for the ReplicationApplyOrdering attribute must be changed from 0 to 2 before restoring any of the databases. For example:

    ttMigrate -r "DSN=master2;ReplicationApplyOrdering=2;ReplicationParallelism=2;
      LogBufParallelism=4" master2.bak

    Note:

    You may upgrade a database with a replication scheme with ReplicationApplyOrdering=2 to a database with ReplicationApplyOrdering=0 by using the same active standby pair online major upgrade procedure.

    Automatic parallel replication with disabled commit dependencies supports only asynchronous active standby pairs with no cache groups. For more information, see Configuring Parallel Replication in the Oracle TimesTen In-Memory Database Replication Guide.

  • You cannot replicate between databases that have the ReplicationParallelism attribute set to greater than 1 but have different values for the ReplicationApplyOrdering attribute.

Scenarios That Require an Offline Upgrade

You must use an offline upgrade for these scenarios:

  • Moving from an automatic parallel replication environment to another automatic parallel replication environment with a different number of tracks, as indicated by the value of the ReplicationParallelism attribute.

  • Moving between major releases and using asynchronous writethrough cache groups.

  • Moving from regular replication with asynchronous writethrough to automatic parallel replication with asynchronous writethrough.

Use the procedure described in Moving to a Different Major Release Using ttMigrate for offline upgrades. Alternatively, you can upgrade one side and use the ttRepAdmin -duplicate -recreate command to create the new database.

Performing an Upgrade of Your Client Instance

You can upgrade your client instance which is being used to access a database in a full instance. For information on instances, see Overview of Installations and Instances and TimesTen Instances for details. For information on Client/Server, see Overview of the TimesTen Client/Server in the Oracle TimesTen In-Memory Database Operations Guide.

To perform the upgrade, follow these steps:

  1. Optional: This step is included for informational purposes to assist you in identifying and verifying the TimesTen client release information.

    In the client instance, run the ttVersion utility to verify the client release and the client instance. In this example, running ttVersion in the client instance shows the client release is 26.1.1.1.0 and the client instance is instance_261_client.

    % ttVersion
    TimesTen Release 26.1.1.1.0  (64 bit Linux/x86_64) (instance_261_client)
    2026-06-29T23:22:07Z
      Instance home directory: /scratch/instance_261_client
      Group owner: g900
    
  2. Optional: This step is included for informational purposes to establish and then show a client connection to the database1 database. In the client instance, run ttIsqlCS to connect to the database1 database in the full instance (on the server). Note that the TCP_PORT is not specified. The default value is assumed.
    % ttIsqlCS -connstr "TTC_SERVER=server.mycompany.com;TTC_SERVER_DSN=database1";
     
    Copyright (c) 1996, 2026, Oracle and/or its affiliates. All rights reserved.
    Type ? or "help" for help, type "exit" to quit ttIsql.
     
     
     
    connect "TTC_SERVER=server.mycompany.com;TTC_SERVER_DSN=database1";
    Connection successful: DSN=;TTC_SERVER=server.mycompany.com;
    TTC_SERVER_DSN=database1;
    ...
    (Default setting AutoCommit=1)
    
  3. Stop all applications using the client instance. In this example, in the client instance, first run ttIsqlCS to connect to the database1 database, then exit from ttIsqlCS.
    % ttIsqlCS -connstr "TTC_SERVER=server.mycompany.com;
    TTC_SERVER_DSN=database1";
     
    Copyright (c) 1996, 2025, Oracle and/or its affiliates. All rights reserved.
    Type ? or "help" for help, type "exit" to quit ttIsql.
     
     
     
    connect "TTC_SERVER=server.mycompany.com;TTC_SERVER_DSN=database1";
    Connection successful: DSN=;TTC_SERVER=server.mycompany.com;
    TTC_SERVER_DSN=database1;
    ...
    (Default setting AutoCommit=1)
    Command> exit
    Disconnecting...
    Done.
    
  4. Create a new client installation in a new location. For example, create the clientinstall_new installation directory. Then unzip the new release zip file into that directory. For example, to create an 26.1.1.2.0 installation on Oracle Linux for Intel and AMD, unzip timesten261120.server.linux8664.zip into the clientinstall_new directory. (Note, there is only one distribution on Linux 64-bit. This distribution contains the server and the client installation.)
    % mkdir clientinstall_new
    % cd clientinstall_new
    % unzip /swdir/TimesTen/ttinstallers/timesten261120.server.linux8664.zip
    [...UNZIP OUTPUT...]
    

    See TimesTen Installations for detailed information.

  5. Modify the client instance to point to the new installation. Do this by running the ttInstanceModify utility with the -install option from the $TIMESTEN_HOME/bin directory of the client instance.

    In this example, point the client instance to the installation in /clientinstall_new/tt26.1.1.2.0.

    % $TIMESTEN_HOME/bin/ttInstanceModify -install 
     /clientinstall_new/tt26.1.1.2.0
     
    Instance Info (UPDATED)
    -----------------------
     
    Name:           instance_261_client
    Version:        26.1.1.2.0
    Location:       /scratch/instance__client
    Installation:   /clientinstall_new/tt26.1.1.2.0
     
    * Client-Only Installation
     
     
    The instance instance_261_client now points to the installation in 
    clientinstall_new/tt26.1.1.1.0
    
  6. Optional: In the client instance, run the ttVersion utility to verify the client release is 26.1.1.2.0.
    % ttVersion
    TimesTen Release 26.1.1.2.0 (64 bit Linux/x86_64) (instance_261_client) 2021-06-28T22:37:51Z
      Instance home directory: /scratch/instance_261_client
      Group owner: g900
    
  7. Restart the applications that use the client instance.

    In this example, in the client instance, run ttIsqlCS to connect to the database1 database in the full instance.

    % ttIsqlCS -connstr "TTC_SERVER=server.mycompany.com;
    TTC_SERVER_DSN=database1";
     
    Copyright (c) 1996, 2025, Oracle and/or its affiliates. All rights reserved.
    Type ? or "help" for help, type "exit" to quit ttIsql.
     
     
     
    connect "TTC_SERVER=server.mycompany.com;TTC_SERVER_DSN=database1";
    Connection successful: DSN=;TTC_SERVER=server.mycompany.com;
    TTC_SERVER_DSN=database1;
    ...
    (Default setting AutoCommit=1)
    
  8. Optional: Delete the previous release installation (used for the client).
    % chmod -R 750 installation_dir/tt26.1.1.2.0
    % rm -rf installation_dir/tt26.1.1.2.0