ttMigrateを使用した別のメジャー・リリースへの移動

別のメジャー・リリースへの移動は、移行によって行われます。移行には、1つのメジャーTimesTenリリースから新しいメジャーTimesTenリリースへのアップグレード、またはTimesTenが実行されているオペレーティング・システム・プラットフォームの変更が含まれます。

移行には、1つのデータベースからスキーマとデータをコピーし、新しいリリースで新しいデータベースを作成してから、スキーマを作成してデータを新しいデータベースに挿入することが含まれます。ttMigrateユーティリティは、データベースの移行を自動化するために使用されます。ttMigrateユーティリティの詳細は、Oracle TimesTen In-Memory DatabaseリファレンスttMigrateを参照してください。

あるメジャー・リリースから別のメジャー・リリースにデータベースを移行する前に、必ず古いリリースのデータベースをバックアップしてください。詳細は、Oracle TimesTen In-Memory DatabaseリファレンスttBackupttRestore、およびこのドキュメントのデータベースのバックアップおよびリストアを参照してください。

ノート:

Oracle Clusterwareを使用したTimesTenのレプリケーションは、Oracle Linux for Armシステムではサポートされていません。Oracle Linux for Armを使用している場合、この例の出力にOracle Clusterwareのメッセージは表示されません。

アップグレードを実行するには、次のステップに従ってください。

旧リリースの場合:

  1. ttAdminユーティリティを使用して、database1データベースをクローズします。これにより、追加のユーザー接続が防止されます。

    % 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. すべてのアプリケーションをデータベースから切断します。ttStatusユーティリティを実行して、データベースへの接続がないことを確認します(この例ではdatabase1)。

    % 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. ttVersionユーティリティを実行して、現在のリリースを確認します。

    % ttVersion
    TimesTen Release tt22.1.1.29.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. ttMigrateユーティリティを使用して、スキーマとデータをデータベースからコピーします(この例ではdatabase1)。
    % 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. データベースをメモリーからアンロードします。この例では、RAMポリシーがmanualであることを前提としています。RAMポリシーの詳細は、Oracle TimesTen In-Memory Databaseオペレーション・ガイドRAMポリシーの指定を参照してください。

    % 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. TimesTenメイン・デーモンを停止します。

    % ttDaemonAdmin -stop
    TimesTen Daemon (PID: 28436, port: 6624) stopped.
    
  7. 移行されたオブジェクト・ファイル(この例では/tmp/database1.data)を新しいリリースのインスタンスからアクセス可能なファイル・システムにコピーします。

新しいリリースの場合:

  1. TimesTenの新しい完全ディストリビューションをダウンロードして解凍するサブディレクトリを作成します。このディレクトリに移動し、新しい完全ディストリビューションをこのディレクトリにダウンロードします。次に、ZIPユーティリティを使用してこのディストリビューションを解凍します。この例では、new_installation_dirサブディレクトリを作成し、timesten2211290.server.linux8664.zipファイルを解凍します。timesten2211290.server.linux8664.zipファイルを解凍すると、このパッチ・アップグレードに使用される新しいインストール環境が作成されます。
    % mkdir -p new_installation_dir
    % cd new_installation_dir

    完全ディストリビューションをnew_installation_dirサブディレクトリにダウンロードします。次に、ZIPユーティリティを使用してディストリビューションを解凍します。

    % unzip /timesten/installations/timesten2211290.server.linux8664.zip
    Archive:  timesten/installations/timesten2211290.server.linux8664.zip
       creating: tt2211290/
    ...
  2. ttInstanceCreateユーティリティを実行してインスタンスを作成します。この例では、ttInstanceCreateユーティリティを対話形式で実行します。詳細は、Oracle TimesTen In-Memory DatabaseリファレンスttInstanceCreateおよびこのドキュメントのLinux/UNIXでのインスタンスの作成: 基本を参照してください。
    ユーザーの入力は太字で示されています。
    % 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? [ tt221 ] 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 22.1 Release Notes are located here :
      'new_installation_dir/tt22.1.1.1.0/README.html'
    
    Starting the daemon ...
    TimesTen Daemon (PID: 2214, port: 6624) startup OK.
    Instance created successfully.
  3. 新しいリリースのインスタンスからデータベースを作成します。環境変数を設定し、sys.odbc.iniファイル(またはodbc.iniファイル)内の接続属性に対して必要なすべての変更を行い、デーモンを起動したことを確認します(まだ起動していない場合)。

    データベースを作成するには、次のコマンドを実行します。

    % 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.
    

    この時点でデータベースは空です。

  4. 新しいリリースのインスタンスから、-rおよび-relaxedUpgradeオプションを指定してttMigrateユーティリティを実行し、バックアップしたデータベースを新しいリリースにリストアします。たとえば:
    % $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.

データベースが新しいリリースで稼働したら、このデータベースのバックアップを作成して、データベースの有効なリストア・ポイントを作成します。データベースのバックアップを作成したら、データベースのttMigrateコピー(この例では、/tmp/database1.data)を削除できます。オプションで、旧リリースの場合、インスタンスを削除してインストール環境を削除できます。

アップグレードの実行後、TimesTenの新しいリリースを使用する前に、既存のODBCおよびOCIアプリケーションを再コンパイルおよび再リンクしてください。詳細は、Oracle TimesTen In-Memory Database C開発者ガイドODBC APIの非互換性の概要を参照してください。