この章では、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文と、キャッシュ・グループ表(ttOptEstimateStatsやttOptUpdateStatsなど)の統計を更新する組込みプロシージャを含めることもできます。このファイルの詳細は、「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.oraとsqlnet.oraの両方のファイルで、アプリケーションがOracle Databaseと通信する方法を定義します。このファイルの詳細は、「sqlnet.oraファイル」を参照してください。
db.ini: db.iniファイルは必須です。このファイルの内容には、TimesTenデータベースのTimesTen接続属性が含まれます。その内容は、TimesTenのsys.odbc.iniファイルに含めることになります。このファイルでは、接続属性のOracleNetServiceNameとDatabaseCharacterSetを指定する必要があります。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エントリを参照してください。
メタデータ・ファイルのcacheUser、cachegroups.sql、tnsnames.ora、sqlnet.ora、db.iniおよびschema.sqlは、1つ以上のKubernetes機能(たとえば、Kubernetes Secret、ConfigMapまたは初期化コンテナ)に含めることができます。これにより、メタデータ・ファイルがTimesTenコンテナの/ttconfigディレクトリに確実に移入されます。この/ttconfigディレクトリにメタデータ・ファイルを配置する方法についての要件はありません。詳細は、「/ttconfigディレクトリの移入」を参照してください。
この例では、ConfigMap機能を使用して、TimesTenコンテナに/ttconfigディレクトリを移入します。
Linux開発ホストで、次のことを実行します。
選択したディレクトリから、メタデータ・ファイル用に空のサブディレクトリを作成します。この例では、cm_cachetestサブディレクトリを作成します。(今後、この例では、このディレクトリを表す場合にcm_cachetestディレクトリを使用します)。
% mkdir -p cm_cachetest
ConfigMapディレクトリに移動します。
% cd cm_cachetest
このConfigMapディレクトリ(この例ではcm_cachetest)にcacheUserメタデータ・ファイルを作成します。cacheUserファイルには、cacheuser/ttpassword/orapasswordという形式の1つの行を含める必要があります。cacheuserは、TimesTenデータベースでキャッシュ・マネージャ・ユーザーとして指定するユーザーです。ttpasswordは、このユーザーに割り当てるTimesTenパスワードです。また、orapasswordは、すでにOracle Databaseキャッシュ管理ユーザーに割り当てられているOracle Databaseパスワードです。このファイル内のcacheUser名は、Oracle Databaseキャッシュ管理ユーザーと一致する必要があります。
この例では、パスワードがoraclepwdのcacheuser2ユーザーが、すでにOracle Databaseに作成されています。そのため、TimesTenキャッシュ・マネージャ・ユーザーとしてcacheuser2を指定します。このTimesTenキャッシュ・マネージャ・ユーザーには、任意のTimesTenパスワードを割り当てることができます。この例では、ttpwdを割り当てます。
vi cacheuser cacheuser2/ttpwd/oraclepwd
この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;
この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)))
このConfigMapディレクトリ(この例ではcm_cachetest)にsqlnet.oraメタデータ・ファイルを作成します。このファイルの詳細は、「sqlnet.oraファイル」を参照してください。
vi sqlnet.ora
NAME.DIRECTORY_PATH= {TNSNAMES, EZCONNECT, HOSTNAME}
SQLNET.EXPIRE_TIME = 10
SSL_VERSION = 1.2
このConfigMapディレクトリ(この例ではcm_cachetest)にdb.iniファイルを作成します。このdb.iniファイルでは、接続属性のPermSize、DatabaseCharacterSetおよびOracleNetServiceNameを定義します。DatabaseCharacterSet値は、Oracle Databaseのデータベース文字セット値と一致している必要があります。nls_database_parametersシステム・ビューを問い合せてOracle Databaseのデータベース文字セットを確認する方法の詳細は、「キャッシュされるOracle Database表の作成」を参照してください。この例では、値はAL32UTF8です。
vi db.ini
PermSize=200 DatabaseCharacterSet=AL32UTF8 OracleNetServiceName=Oracache
この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;
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
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オブジェクト・タイプを参照してください。
次のステップを実行します。
空の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
kubectl createコマンドを使用して、YAMLファイル(この例ではcachetest.yaml)の内容からTimesTenClassicオブジェクトを作成します。これにより、KubernetesクラスタにあるTimesTenデータベースのアクティブ・スタンバイ・ペアをデプロイするプロセスが開始されます。
% kubectl create -f cachetest.yaml timestenclassic.timesten.oracle.com/cachetest created
KubernetesクラスタにTimesTenClassicオブジェクトを正常に作成しました。TimesTenデータベースをデプロイするプロセスが開始されますが、まだ完了していません。
kubectl getコマンドとkubectl describeコマンドを使用して、プロビジョニング時にアクティブ・スタンバイ・ペアの進捗状況を監視します。
kubectl getコマンドを使用して、STATEフィールドを確認します。値がInitializingであることを確認します。アクティブ・スタンバイ・ペアのプロビジョニングが開始しましたが、まだ完了していません。
% kubectl get ttc cachetest NAME STATE ACTIVE AGE cachetest Initializing None 41s
kubectl getコマンドを再度使用して、STATEフィールドの値が変更されているかどうかを確認します。この例では、この値はNormalで、データベースのアクティブ・スタンバイ・ペアがプロビジョニングされ、プロセスが完了したことを示しています。
% kubectl get ttc cachetest NAME STATE ACTIVE AGE cachetest Normal cachetest-0 3m58s
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を使用する準備が整いました。
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ファイルの詳細は、「サポートされているメタデータ・ファイル」を参照してください。