プライマリ・コンテンツに移動
Oracle® TimesTen In-Memory Database Kubernetesオペレータ・ユーザーズ・ガイド
リリース18.1
F33742-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

7 TimesTen Cacheの操作

この章では、TimesTen CacheをKubernetes環境で使用する方法について説明します。

内容は次のとおりです。

Kubernetes環境でTimesTen Cacheを構成して使用するまでの完全な例は、付録B「TimesTen Cacheの例」を参照してください。この例には、Oracle Databaseの設定の詳細も含まれています。

概要

TimesTen Cacheは、Kubernetes環境で構成して使用できます。TimesTenオペレータは、この目的のために次のメタデータ・ファイルを提供しています。

  • cacheUser: cacheUserファイルは必須です。このファイルには、次の形式の1行が含まれています。

    cacheUser/ttPassword/oraPassword
    

    このcacheUserは、TimesTenキャッシュ・マネージャ・ユーザーとして指定するユーザーです。このユーザーは、Oracle Databaseのキャッシュ管理ユーザーとして指定したユーザーと同じ名前にする必要があります。このキャッシュ管理ユーザーは、すでにOracle Databaseに存在している必要があります。TimesTen cacheUserユーザー(TimesTenキャッシュ・マネージャ)のTimesTenパスワードとしてttPasswordを指定します。oraPasswordは、Oracle DatabaseでcacheUserユーザーを作成したときに指定したOracle Databaseパスワードです。

    オペレータは、ttpasswordを持つcacheUserユーザーをTimesTenデータベースに作成します。このcacheUserユーザーは、TimesTenデータベースのキャッシュ・マネージャ・ユーザーとしての役割を果たします。(このTimesTenユーザーは作成する必要がありません。その操作は、オペレータが実行します)。

    Oracle Databaseユーザーの詳細は、『Oracle TimesTen Application-Tier Database Cacheユーザーズ・ガイド』のOracle Databaseユーザーの作成に関する項を参照してください。また、cacheUserメタデータ・ファイルの詳細は、「cacheUser」を参照してください。

  • cachegroups.sql: cachegroups.sqlファイルは必須です。このファイルの内容は、CREATE CACHE GROUPの定義です。このファイルには、LOAD CACHE GROUP文と、キャッシュ・グループ表(ttOptEstimateStatsttOptUpdateStatsなど)の統計を更新する組込みプロシージャを含めることもできます。このファイルの詳細は、「cachegroups.sql」を参照してください。

  • tnsnames.ora: tnsnames.oraファイルは必須です。このファイルでは、アプリケーションが接続するOracle Net Servicesを定義します。TimesTen Cacheの場合は、このファイルでTimesTenとOracle Database (データのキャッシュ元)の間の接続を構成します。このコンテキストでは、TimesTenがOracle Databaseに接続するアプリケーションです。このファイルの詳細は、「tnsnames.oraファイル」を参照してください。

  • sqlnet.ora: sqlnet.oraファイルは必須ではありません。Oracle Databaseの構成に応じて必要になることがあります。このファイルでは、クライアント・アプリケーションがOracle Databaseと通信する方法のオプションを定義します。このコンテキストでは、TimesTenがアプリケーションです。tnsnames.orasqlnet.oraの両方のファイルで、アプリケーションがOracle Databaseと通信する方法を定義します。このファイルの詳細は、「sqlnet.oraファイル」を参照してください。

  • db.ini: db.iniファイルは必須です。このファイルの内容には、TimesTenデータベースのTimesTen接続属性が含まれます。その内容は、TimesTenのsys.odbc.iniファイルに含めることになります。このファイルでは、接続属性のOracleNetServiceNameDatabaseCharacterSetを指定する必要があります。DatabaseCharacterSet値は、Oracleデータベースの文字セット値と一致している必要があります。このファイルの詳細は、「db.iniファイル」を参照してください。

  • schema.sql: schema.sqlファイルは場合に応じて必須になります。TimesTen Cacheでは、1人または複数のキャッシュ表ユーザーがキャッシュ表を所有します。このキャッシュ表ユーザーがキャッシュ・マネージャ・ユーザーでない場合は、schema.sqlファイルを指定する必要があります。さらに、このファイルにスキーマ・ユーザーを含めて、そのスキーマ・ユーザーに適切な権限を割り当てることも必要です。たとえば、Oracle Databaseでorattスキーマ・ユーザーが作成されていたときに、このユーザーがTimesTenキャッシュ・マネージャ・ユーザーでない場合は、このファイルにTimesTen orattユーザーを作成する必要があります。Oracle Databaseのスキーマ・ユーザーの詳細は、「Oracle Databaseユーザーの作成」を参照してください。また、schema.sqlファイルの詳細は、「schema.sqlファイル」を参照してください。

    インスタンス管理者は、ttIsqlユーティリティを使用して、このファイルをデータベースの作成直後に実行します。このファイルはオペレータがTimesTen Cacheまたはレプリケーションを構成する前に実行されるため、このファイルにキャッシュ定義が含まれていないことを確認してください。

オペレータは、TimesTenコンテナの/ttconfigディレクトリにcacheUserファイルとcachegroups.sqlファイルがあるかどうかを調べて、TimesTen Cacheの構成が必要になるかどうかを判断します。該当するファイルが存在する場合、オペレータはTimesTenキャッシュ・マネージャを(cacheUserファイルの内容から)作成して、キャッシュ・エージェントを起動します。その後で、キャッシュ・マネージャがttIsqlユーティリティを使用して、cachegroups.sqlファイルを実行します。

cachegroups.sqlファイルの内容は、スタンバイに複製される前にアクティブ・データベースで実行されます。cachegroups.sqlファイルで指定した自動リフレッシュ・キャッシュ・グループが存在する場合、そのグループはアクティブ・データベースをスタンバイに複製する前にエージェントによって一時停止されます。複製プロセスが完了すると、該当する自動リフレッシュ・キャッシュ・グループは再度有効化されます。

TimesTenデータベースのアクティブ・スタンバイ・ペアが作成されてロールアウトされると、オペレータはTimesTen Cacheの監視または管理を実行しなくなります。具体的には、オペレータはキャッシュ・エージェントの状態を監視しなくなり、それらのエージェントを起動または停止するための追加の処理を実行することもなくなります。さらに、オペレータは、TimesTenデータベースとOracle Databaseの間でデータが正しく伝播されていることを検証しません。

TimesTenClassicオブジェクトを削除することでデータベースを削除すると、オペレータは、Oracle Databaseメタデータを自動的にクリーン・アップします。ただし、Oracle Databaseメタデータの保持が必要な場合は、TimesTenClassicオブジェクト定義内でcacheCleanUpフィールドを指定し、その値をfalseに設定します。詳細は、「Oracle Databaseのキャッシュ・メタデータのクリーン・アップ」および表11-3「TimesTenClassicSpecSpec」cacheCleanUpエントリを参照してください。

メタデータ・ファイルとKubernetes機能の作成

メタデータ・ファイルのcacheUsercachegroups.sqltnsnames.orasqlnet.oradb.iniおよびschema.sqlは、1つ以上のKubernetes機能(たとえば、Kubernetes Secret、ConfigMapまたは初期化コンテナ)に含めることができます。これにより、メタデータ・ファイルがTimesTenコンテナの/ttconfigディレクトリに確実に移入されます。この/ttconfigディレクトリにメタデータ・ファイルを配置する方法についての要件はありません。詳細は、「/ttconfigディレクトリの移入」を参照してください。

この例では、ConfigMap機能を使用して、TimesTenコンテナに/ttconfigディレクトリを移入します。

Linux開発ホストで、次のことを実行します。

  1. 選択したディレクトリから、メタデータ・ファイル用に空のサブディレクトリを作成します。この例では、cm_cachetestサブディレクトリを作成します。(今後、この例では、このディレクトリを表す場合にcm_cachetestディレクトリを使用します)。

    % mkdir -p cm_cachetest
    
  2. ConfigMapディレクトリに移動します。

    % cd cm_cachetest
    
  3. このConfigMapディレクトリ(この例ではcm_cachetest)にcacheUserメタデータ・ファイルを作成します。cacheUserファイルには、cacheuser/ttpassword/orapasswordという形式の1つの行を含める必要があります。cacheuserは、TimesTenデータベースでキャッシュ・マネージャ・ユーザーとして指定するユーザーです。ttpasswordは、このユーザーに割り当てるTimesTenパスワードです。また、orapasswordは、すでにOracle Databaseキャッシュ管理ユーザーに割り当てられているOracle Databaseパスワードです。このファイル内のcacheUser名は、Oracle Databaseキャッシュ管理ユーザーと一致する必要があります。

    この例では、パスワードがoraclepwdcacheuser2ユーザーが、すでにOracle Databaseに作成されています。そのため、TimesTenキャッシュ・マネージャ・ユーザーとしてcacheuser2を指定します。このTimesTenキャッシュ・マネージャ・ユーザーには、任意のTimesTenパスワードを割り当てることができます。この例では、ttpwdを割り当てます。

    vi cacheuser
    
    cacheuser2/ttpwd/oraclepwd
    
  4. このConfigMapディレクトリ(この例ではcm_cachetest)にcachegroups.sqlメタデータ・ファイルを作成します。cachegroups.sqlファイルには、キャッシュ・グループ定義が含まれています。この例では、動的AWTキャッシュ・グループと読取り専用キャッシュ・グループが作成されます。また、LOAD CACHE GROUP文も含まれています。この文は、Oracle Databaseのoratt.readtabキャッシュ表からTimesTenデータベースのoratt.readtabキャッシュ表に行をロードするためのものです。

    vi cachegroups.sql
    
    CREATE DYNAMIC ASYNCHRONOUS WRITETHROUGH CACHE GROUP writecache
    FROM oratt.writetab (
      pk NUMBER NOT NULL PRIMARY KEY,
      attr VARCHAR2(40)
    );
     
    CREATE READONLY CACHE GROUP readcache
    AUTOREFRESH
      INTERVAL 5 SECONDS
    FROM oratt.readtab (
      keyval NUMBER NOT NULL PRIMARY KEY,
      str VARCHAR2(32)
    );
     
    LOAD CACHE GROUP readcache COMMIT EVERY 256 ROWS;
    
  5. このConfigMapディレクトリ(この例ではcm_cachetest)にtnsnames.oraメタデータ・ファイルを作成します。このファイルの詳細は、「tnsnames.oraファイル」を参照してください。

    vi tnsnames.ora
    
    OraTest =   
     (DESCRIPTION = 
       (ADDRESS = (PROTOCOL = TCP)(HOST = database.myhost.svc.cluster.local)
         (PORT = 1521))     
       (CONNECT_DATA =       
         (SERVER = DEDICATED)       
         (SERVICE_NAME = OraTest.my.domain.com)))
    OraCache =  
     (DESCRIPTION =   
       (ADDRESS = (PROTOCOL = TCP)(HOST = database.myhost.svc.cluster.local)
         (PORT = 1521))     
       (CONNECT_DATA =       
         (SERVER = DEDICATED)       
         (SERVICE_NAME = OraCache.my.domain.com)))
    
  6. このConfigMapディレクトリ(この例ではcm_cachetest)にsqlnet.oraメタデータ・ファイルを作成します。このファイルの詳細は、「sqlnet.oraファイル」を参照してください。

    vi sqlnet.ora
    
    NAME.DIRECTORY_PATH= {TNSNAMES, EZCONNECT, HOSTNAME}
    SQLNET.EXPIRE_TIME = 10
    SSL_VERSION = 1.2
    
  7. このConfigMapディレクトリ(この例ではcm_cachetest)にdb.iniファイルを作成します。このdb.iniファイルでは、接続属性のPermSizeDatabaseCharacterSetおよびOracleNetServiceNameを定義します。DatabaseCharacterSet値は、Oracle Databaseのデータベース文字セット値と一致している必要があります。nls_database_parametersシステム・ビューを問い合せてOracle Databaseのデータベース文字セットを確認する方法の詳細は、「キャッシュされるOracle Database表の作成」を参照してください。この例では、値はAL32UTF8です。

    vi db.ini
    
    PermSize=200
    DatabaseCharacterSet=AL32UTF8
    OracleNetServiceName=Oracache
    
  8. このConfigMapディレクトリ(この例ではcm_cachetest)にschema.sqlファイルを作成します。この例では、orattユーザーを作成します。(この例では、このorattユーザーは以前にOracle Databaseで作成されたものと仮定しています)。Oracle Databaseのorattユーザーの詳細は、「Oracle Databaseユーザーの作成」を参照してください。

    vi schema.sql
    
    create user oratt identified by ttpwd;
    grant admin to oratt;
    
  9. ConfigMapを作成します。cm_cachetestディレクトリ内のファイルは、ConfigMapに含めておくことで、TimesTenコンテナで使用できるようにします。

    この例では次のとおりです。

    • ConfigMapの名前はcachetestです。cachetestは適宜の名前に置き換えます(この例では、cachetest太字で表示しています)。

    • この例では、ConfigMapにコピーするファイルが存在しているディレクトリとしてcm_cachetestを使用しています。別のディレクトリを使用する場合、cm_cachetestは目的のディレクトリの名前に置き換えます(この例では、cm_cachetest太字で表示しています)。

    kubectl createコマンドを使用して、ConfigMapを作成します。

    % kubectl create configmap cachetest --from-file=cm_cachetest
    configmap/cachetest created
    
  10. kubectl describeコマンドを使用して、ConfigMap (この例ではcachetest)の内容を確認します。メタデータ・ファイルは太字で表示しています。

    % kubectl describe configmap cachetest;
    Name:         cachetest
    Namespace:    mynamespace
    Labels:       <none>
    Annotations:  <none>
     
    Data
    ====
    tnsnames.ora:
    ----
    
    OraTest =   
     (DESCRIPTION = 
       (ADDRESS = (PROTOCOL = TCP)(HOST = database.myhost.svc.cluster.local)
         (PORT = 1521))     
       (CONNECT_DATA =       
         (SERVER = DEDICATED)       
         (SERVICE_NAME = OraTest.my.domain.com)))
    OraCache =  
     (DESCRIPTION =   
       (ADDRESS = (PROTOCOL = TCP)(HOST = database.myhost.svc.cluster.local)
         (PORT = 1521))     
       (CONNECT_DATA =       
         (SERVER = DEDICATED)       
         (SERVICE_NAME = OraCache.my.domain.com)))
     
    cacheUser:
    ----
    cacheuser2/ttpwd/oraclepwd
     
    cachegroups.sql:
    ----
    CREATE DYNAMIC ASYNCHRONOUS WRITETHROUGH CACHE GROUP writecache
    FROM oratt.writetab (
      pk NUMBER NOT NULL PRIMARY KEY,
      attr VARCHAR2(40)
    );
     
    CREATE READONLY CACHE GROUP readcache
    AUTOREFRESH
      INTERVAL 5 SECONDS
    FROM oratt.readtab (
      keyval NUMBER NOT NULL PRIMARY KEY,
      str VARCHAR2(32)
    );
     
    LOAD CACHE GROUP readcache COMMIT EVERY 256 ROWS;
     
    db.ini:
    ----
    permSize=200
    databaseCharacterSet=AL32UTF8
    oracleNetServiceName=Oracache
    
    schema.sql:
    ----
    create user oratt identified by ttpwd;
    grant admin to oratt;
     
    sqlnet.ora:
    ----
    NAME.DIRECTORY_PATH= {TNSNAMES, EZCONNECT, HOSTNAME}
    SQLNET.EXPIRE_TIME = 10
    SSL_VERSION = 1.2
     
     
    Events:  <none>
    

cachetest ConfigMapの作成とデプロイが完了しました。

TimesTenClassicオブジェクトの作成

この項では、TimesTenClassicオブジェクトを作成します。TimesTenClassicオブジェクトの詳細は、TimesTenClassicオブジェクトの定義および作成およびTimesTenClassicオブジェクト・タイプを参照してください。

次のステップを実行します。

  1. 空のYAMLファイルを作成します。任意の名前を選択できますが、TimesTenClassicオブジェクトに使用した名前と同じ名前を使用することもできます。(この例では、cachetest)。YAMLファイルには、TimesTenClassicオブジェクトの定義が格納されています。このYAMLファイルで指定する必要があるフィールド、およびオプションのフィールドの詳細は、TimesTenClassicSpecSpecを参照してください。

    この例では、次のフィールドに注目してください。

    • name: cachetestはTimesTenClassicオブジェクト(太字で表示)の名前に置き換えます。

    • storageClassName: ociを、TimesTenを保持するためのPersistentVolumesの割当てに使用される記憶域クラスの名前に置き換えます。

    • storageSize: 250Gを、各ポッドがTimesTenを保持するために要求する必要がある記憶域の量に置き換えます。ノート: この例では、本番環境を想定していることから、storageSizeには250Gの値を使用しています。デモ用の場合は、50Gの値で対応できます。詳細は、表11-3「TimesTenClassicSpecSpec」storageSizeエントリとlogStorageSizeエントリを参照してください。

    • image: phx.ocir.io/youraccount/tt1814110:3は、イメージ・レジストリの場所(phx.ocir.io/youraccount)とTimesTenが含まれているイメージ(tt1814110:3)に置き換えます。

    • imagePullSecret: sekretを、KubernetesがTimesTenイメージをフェッチするために使用するイメージ・プル・シークレットに置き換えます。

    • dbConfigMap: この例では、メタデータ・ファイル(太字で表示)に1つのConfigMap (cachetest)を使用しています。

    % vi cachetest.yaml
    
    apiVersion: timesten.oracle.com/v1
    kind: TimesTenClassic
    metadata:
      name: cachetest
    spec:
      ttspec:
        storageClassName: oci
        storageSize: 250G
        image: phx.ocir.io/youraccount/tt1814110:3
        imagePullSecret: sekret
        imagePullPolicy: Always
        dbConfigMap:
        - cachetest
    
  2. kubectl createコマンドを使用して、YAMLファイル(この例ではcachetest.yaml)の内容からTimesTenClassicオブジェクトを作成します。これにより、KubernetesクラスタにあるTimesTenデータベースのアクティブ・スタンバイ・ペアをデプロイするプロセスが開始されます。

    % kubectl create -f cachetest.yaml
    timestenclassic.timesten.oracle.com/cachetest created
    

KubernetesクラスタにTimesTenClassicオブジェクトを正常に作成しました。TimesTenデータベースをデプロイするプロセスが開始されますが、まだ完了していません。

TimesTenClassicオブジェクトのデプロイメントの監視

kubectl getコマンドとkubectl describeコマンドを使用して、プロビジョニング時にアクティブ・スタンバイ・ペアの進捗状況を監視します。

  1. kubectl getコマンドを使用して、STATEフィールドを確認します。値がInitializingであることを確認します。アクティブ・スタンバイ・ペアのプロビジョニングが開始しましたが、まだ完了していません。

    % kubectl get ttc cachetest
    NAME        STATE          ACTIVE   AGE
    cachetest   Initializing   None     41s
    
  2. kubectl getコマンドを再度使用して、STATEフィールドの値が変更されているかどうかを確認します。この例では、この値はNormalで、データベースのアクティブ・スタンバイ・ペアがプロビジョニングされ、プロセスが完了したことを示しています。

    % kubectl get ttc cachetest
    NAME        STATE    ACTIVE        AGE
    cachetest   Normal   cachetest-0   3m58s
    
  3. kubectl describeコマンドを使用して、アクティブ・スタンバイ・ペアのプロビジョニングを詳細に表示します。

    次の点に注目してください。

    • cachetest Configmapは、dbConfigMapフィールドで正しく参照されています(太字で表示)。

    • キャッシュ・エージェントはアクティブ・ポッドとスタンバイ・ポッド(太字で表示)で実行されています。

    • キャッシュ管理ユーザーのUIDとパスワードは、アクティブ・ポッドとスタンバイ・ポッド(太字で表示)で設定されています。

    • アクティブ・ポッドとスタンバイ・ポッド(太字で表示)に2つのキャッシュ・グループが作成されています。

    • レプリケーション・エージェントは、アクティブ・ポッドとスタンバイ・ポッド(太字で表示)で実行されています。

    % kubectl describe ttc cachetest
    Name:         cachetest
    Namespace:    mynamespace
    Labels:       <none>
    Annotations:  <none>
    API Version:  timesten.oracle.com/v1
    Kind:         TimesTenClassic
    Metadata:
      Creation Timestamp:  2020-10-24T03:29:48Z
      Generation:          1
      Resource Version:    78390500
      Self Link:           /apis/timesten.oracle.com/v1/namespaces/mynamespace/timestenclassics/cachetest
      UID:                 2b18d81d-15a9-11eb-b999-be712d29a81e
    Spec:
      Ttspec:
        Db Config Map:
          cachetest
        Image:               phx.ocir.io/youraccount/tt1814110:3
        Image Pull Policy:   Always
        Image Pull Secret:   sekret
        Storage Class Name:  oci
        Storage Size:        250G
    Status:
      Active Pods:       cachetest-0
      High Level State:  Normal
      Last Event:        28
      Pod Status:
        Cache Status:
          Cache Agent:        Running
          Cache UID Pwd Set:  true
          N Cache Groups:     2
        Db Status:
          Db:            Loaded
          Db Id:         30
          Db Updatable:  Yes
        Initialized:     true
        Pod Status:
          Agent:                Up
          Last Time Reachable:  1603510527
          Pod IP:               10.244.7.92
          Pod Phase:            Running
        Replication Status:
          Last Time Rep State Changed:  0
          Rep Agent:                    Running
          Rep Peer P State:             start
          Rep Scheme:                   Exists
          Rep State:                    ACTIVE
        Times Ten Status:
          Daemon:          Up
          Instance:        Exists
          Release:         18.1.4.11.0
        Admin User File:   true
        Cache User File:   true
        Cg File:           true
        High Level State:  Healthy
        Intended State:    Active
        Name:              cachetest-0
        Schema File:       true
        Cache Status:
          Cache Agent:        Running
          Cache UID Pwd Set:  true
          N Cache Groups:     2
        Db Status:
          Db:            Loaded
          Db Id:         30
          Db Updatable:  No
        Initialized:     true
        Pod Status:
          Agent:                Up
          Last Time Reachable:  1603510527
          Pod IP:               10.244.8.170
          Pod Phase:            Running
        Replication Status:
          Last Time Rep State Changed:  1603510411
          Rep Agent:                    Running
          Rep Peer P State:             start
          Rep Scheme:                   Exists
          Rep State:                    STANDBY
        Times Ten Status:
          Daemon:            Up
          Instance:          Exists
          Release:           18.1.4.11.0
        Admin User File:     true
        Cache User File:     true
        Cg File:             true
        High Level State:    Healthy
        Intended State:      Standby
        Name:                cachetest-1
        Schema File:         true
      Rep Create Statement:  create active standby pair "cachetest" on 
      "cachetest-0.cachetest.mynamespace.svc.cluster.local", "cachetest" on 
      "cachetest-1.cachetest.mynamespace.svc.cluster.local" NO RETURN store 
      "cachetest" on "cachetest-0.cachetest.mynamespace.svc.cluster.local" 
      PORT 4444 FAILTHRESHOLD 0 store "cachetest" on 
     "cachetest-1.cachetest.mynamespace.svc.cluster.local" PORT 4444 
     FAILTHRESHOLD 0
      Rep Port:              4444
      Status Version:        1.0
    Events:
      Type  Reason       Age    From       Message
      ----  ------       ----   ----       -------
      -     Create       5m40s  ttclassic  Secret 
    tt2b18d81d-15a9-11eb-b999-be712d29a81e created
      -     Create       5m40s  ttclassic  Service cachetest created
      -     Create       5m40s  ttclassic  StatefulSet cachetest created
      -     StateChange  4m28s  ttclassic  Pod cachetest-0 Agent Up
      -     StateChange  4m28s  ttclassic  Pod cachetest-0 Release 18.1.4.11.0
      -     StateChange  4m28s  ttclassic  Pod cachetest-0 Daemon Up
      -     StateChange  3m18s  ttclassic  Pod cachetest-0 RepScheme None
      -     StateChange  3m18s  ttclassic  Pod cachetest-0 RepAgent Not Running
      -     StateChange  3m18s  ttclassic  Pod cachetest-0 RepState IDLE
      -     StateChange  3m18s  ttclassic  Pod cachetest-0 Database Loaded
      -     StateChange  3m18s  ttclassic  Pod cachetest-0 Database Updatable
      -     StateChange  3m18s  ttclassic  Pod cachetest-0 CacheAgent Not Running
      -     StateChange  2m57s  ttclassic  Pod cachetest-0 CacheAgent Running
      -     StateChange  2m47s  ttclassic  Pod cachetest-1 Agent Up
      -     StateChange  2m47s  ttclassic  Pod cachetest-1 Release 18.1.4.11.0
      -     StateChange  2m46s  ttclassic  Pod cachetest-0 RepAgent Running
      -     StateChange  2m46s  ttclassic  Pod cachetest-0 RepScheme Exists
      -     StateChange  2m46s  ttclassic  Pod cachetest-0 RepState ACTIVE
      -     StateChange  2m46s  ttclassic  Pod cachetest-1 Daemon Up
      -     StateChange  2m9s   ttclassic  Pod cachetest-1 CacheAgent Running
      -     StateChange  2m9s   ttclassic  Pod cachetest-1 Database Not Updatable
      -     StateChange  2m9s   ttclassic  Pod cachetest-1 Database Loaded
      -     StateChange  2m9s   ttclassic  Pod cachetest-1 RepAgent Not Running
      -     StateChange  2m9s   ttclassic  Pod cachetest-1 RepScheme Exists
      -     StateChange  2m9s   ttclassic  Pod cachetest-1 RepState IDLE
      -     StateChange  2m3s   ttclassic  Pod cachetest-1 RepAgent Running
      -     StateChange  118s   ttclassic  Pod cachetest-1 RepState STANDBY
      -     StateChange  118s   ttclassic  TimesTenClassic was Initializing, now 
    Normal
    

TimesTenデータベースのアクティブ・スタンバイ・ペアが(Normalで示されているように)正常にデプロイされました。Kubernetes環境でTimesTen Cacheを使用する準備が整いました。

Oracle Databaseのキャッシュ・メタデータのクリーン・アップ

TimesTenデータベースに特定のタイプのキャッシュ・グループを作成したときに、TimesTenは、そのキャッシュ・グループに関するメタデータをOracle Databaseに格納します。その後、そのTimesTenデータベースを削除しても、TimesTenはOracle Database内のメタデータを自動的に削除することはありません。その結果、Oracle Databaseにメタデータが蓄積される可能性があります。詳細は、『Oracle TimesTen Application-Tier Database Cacheユーザーズ・ガイド』の自動リフレッシュ・キャッシュ・グループで使用されているOracle Databaseオブジェクトの削除に関する項を参照してください。

ただし、Kubernetes環境では、TimesTenClassicオブジェクトを最初に作成するときにcacheUserメタデータ・ファイルとcachegroups.sqlメタデータ・ファイルを指定すると、そのTimesTenClassicオブジェクトを削除した場合にOracle Databaseメタデータがオペレータによって自動的にクリーン・アップされます。

オペレータがOracle Databaseを自動的にクリーン・アップしないようにするには、TimesTenClassicオブジェクト定義のcacheCleanupフィールドをfalseに設定します。詳細は、表11-3「TimesTenClassicSpecSpec」cacheCleanupエントリを参照してください。また、cacheUserファイルとcachegroups.sqlファイルの詳細は、「サポートされているメタデータ・ファイル」を参照してください。