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

TimesTen Cacheの使用に固有のメタデータ・ファイルがあります。

  • cacheUser: このファイルは必須です。このファイルのユーザーは、TimesTenデータベースで作成されたもので、キャッシュ・マネージャとしての役割を果たします。このユーザーの名前は、Oracle Databaseで作成したキャッシュ管理ユーザーの名前と一致する必要があります。Oracle Databaseのキャッシュ管理ユーザーの詳細は、「Oracle Databaseユーザーの作成」を参照してください。また、cacheUserメタデータ・ファイルの詳細は、cacheUserを参照してください。

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

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

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

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

  • schema.sql: このファイルの内容には、表、順序、ユーザーなどのデータベース・オブジェクトが含まれます。インスタンス管理者は、ttIsqlユーティリティを使用して、このファイルをデータベースの作成直後に実行します。このファイルはオペレータがTimesTen Cacheまたはレプリケーションを構成する前に実行されるため、このファイルにキャッシュ定義が含まれていないことを確認してください。

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

さらに、サポートされている次のメタデータ・ファイルも使用できます。

  • adminUser: このファイル内のユーザーは、TimesTenデータベースに作成されて、ADMIN権限を付与されます。このファイルの詳細は、adminUserを参照してください。

  • epilog.sql: このファイルの内容には、オペレータがレプリケーションを構成した後に実行する必要がある操作が含まれます。たとえば、XLAを使用する場合は、このファイルでXLA用のレプリケートされたブックマークを作成できます。このファイルは、キャッシュとレプリケーションの構成後に実行されます。このファイルの詳細は、epilog.sqlを参照してください。

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

この例では、ConfigMap機能を使用して、TimesTenコンテナに/ttconfigディレクトリを移入します。この例では、メタデータ・ファイルのadminUserdb.inischema.sqlcacheUsercachegroups.sqltnsnames.oraおよびsqlnet.oraを使用します。

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

  1. 選択したディレクトリから、メタデータ・ファイル用に空のサブディレクトリを作成します。この例では、cm_cachetestサブディレクトリを作成します。(今後、この例では、このディレクトリを表す場合にcm_cachetestディレクトリを使用します)。
    % mkdir -p cm_cachetest
  2. ConfigMapディレクトリに移動します。
    % cd cm_cachetest
  3. このConfigMapディレクトリ(この例ではcm_cachetest)にadminUserファイルを作成します。このadminUserファイルで、samplepwパスワードを使用してsampleuserユーザーを作成します。
    vi adminUser
    
    sampleuser/samplepw
  4. この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
  5. このConfigMapディレクトリ(この例ではcm_cachetest)にschema.sqlファイルを作成します。この例では、orattユーザーを作成します。このユーザーは以前にOracle Databaseで作成されたものです。Oracle Databaseのorattユーザーの詳細は、「Oracle Databaseユーザーの作成」を参照してください。
    vi schema.sql
    
    create user oratt identified by ttpwd;
    grant admin to oratt;
    
  6. このConfigMapディレクトリ(この例ではcm_cachetest)にcacheUserメタデータ・ファイルを作成します。cacheUserファイルには、cacheuser/ttpassword/orapasswordという形式の1つの行を含める必要があります。cacheuserは、TimesTenデータベースでキャッシュ・マネージャとして指定するユーザーです。ttpasswordは、このユーザーに割り当てるTimesTenパスワードです。また、orapasswordは、すでにOracle Databaseキャッシュ管理ユーザーに割り当てられているOracle Databaseパスワードです。このファイル内のcacheUser名は、前に作成したOracle Databaseキャッシュ管理ユーザーと一致している必要がある点に注意してください。Oracle Databaseキャッシュ管理ユーザーの詳細は、「Oracle Databaseユーザーの作成」を参照してください。

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

    vi cacheuser
    
    cacheuser2/ttpwd/oraclepwd
  7. この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;
  8. このConfigMapディレクトリ(この例ではcm_cachetest)に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.sample.com)))
    OraCache =  
     (DESCRIPTION =   
       (ADDRESS = (PROTOCOL = TCP)(HOST = database.myhost.svc.cluster.local)
         (PORT = 1521))     
       (CONNECT_DATA =       
         (SERVER = DEDICATED)       
         (SERVICE_NAME = OraCache.my.sample.com)))
  9. このConfigMapディレクトリ(この例ではcm_cachetest)にsqlnet.oraメタデータ・ファイルを作成します。
    vi sqlnet.ora
    
    NAME.DIRECTORY_PATH= {TNSNAMES, EZCONNECT, HOSTNAME}
    SQLNET.EXPIRE_TIME = 10
    SSL_VERSION = 1.2
  10. Linuxのlsコマンドを使用して、メタデータ・ファイルがConfigMapディレクトリ(この例ではcm_cachetest)内にあることを確認します。
    % ls
    adminUser        cacheUser  schema.sql  tnsnames.ora
    cachegroups.sql  db.ini     sqlnet.ora
  11. ConfigMapを作成します。cm_cachetestディレクトリ内のファイルは、ConfigMapに含めておくことで、TimesTenコンテナで使用できるようにします。

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

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

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

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

    % kubectl create configmap cachetest --from-file=cm_cachetest
    configmap/cachetest created
  12. kubectl describeコマンドを使用して、ConfigMap (この例ではcachetest)の内容を確認します。メタデータ・ファイルはboldで表示しています。
    % 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.sample.com)))
    OraCache =  
     (DESCRIPTION =   
       (ADDRESS = (PROTOCOL = TCP)(HOST = database.myhost.svc.cluster.local)
         (PORT = 1521))     
       (CONNECT_DATA =       
         (SERVER = DEDICATED)       
         (SERVICE_NAME = OraCache.my.sample.com)))
     
    adminUser:
    ----
    sampleuser/samplepw
     
    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の作成とデプロイが完了しました。