この章では、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
ファイルの詳細は、「サポートされているメタデータ・ファイル」を参照してください。