メタデータ・ファイルと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_gridスキーマ・ユーザーが作成されており、このユーザーがTimesTenキャッシュ・マネージャ・ユーザーでない場合は、このファイル内にTimesTenのoratt_gridユーザーを作成する必要があります。Oracle Databaseのスキーマ・ユーザーの詳細は、「Oracle Databaseユーザーの作成」を参照してください。また、schema.sqlファイルの詳細は、schema.sqlも参照してください。

また、TimesTenScaleoutオブジェクトの場合は次のメタデータ・ファイルを使用します:

  • *.connect: ファイルの拡張子が.connectである場合は、それが、TimesTen Scaleoutでデータベースへのダイレクト・モード・アクセスに使用される直接接続可能オブジェクトであることを表しています。接頭辞*は、接続可能オブジェクト用に選択した名前です。複数定義できます。*.connectを参照してください。

  • *.csconnect: ファイルの拡張子が.csconnectである場合は、それが、TimesTen Scaleoutでデータベースへのクライアント/サーバー・アクセスに使用されるクライアント/サーバー接続可能オブジェクトであることを表しています。接頭辞*は、接続可能オブジェクト用に選択した名前です。複数定義できます。*.csconnectを参照してください。

  • adminUser (オプション): このファイル内のユーザーは、TimesTenデータベースで作成され、ADMIN権限を付与されます。このファイルの詳細は、「adminUser」を参照してください。

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

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

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

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

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

    vi cacheuser_grid
    
    cacheuser_grid/ttpwd/oraclepwd
  7. このConfigMapディレクトリにcachegroups.sqlメタデータ・ファイルを作成します。cachegroups.sqlファイルには、キャッシュ・グループ定義が含まれています。この例では、読取り専用キャッシュ・グループが作成されます。また、Oracle Database内のoratt_grid.readtab表からTimesTenデータベース内のoratt_grid.readtabキャッシュ表に行をロードするために、LOAD CACHE GROUP文が含まれています。
    vi cachegroups.sql
    
    CREATE READONLY CACHE GROUP readcache
    AUTOREFRESH
      INTERVAL 5 SECONDS
    FROM oratt_grid.readtab (
      keyval NUMBER NOT NULL PRIMARY KEY,
      str VARCHAR2(32)
    );
    
    LOAD CACHE GROUP readcache COMMIT EVERY 256 ROWS;
    
  8. このConfigMapディレクトリにtnsnames.oraメタデータ・ファイルを作成します。
    vi tnsnames.ora
    
    OraTest =   
     (DESCRIPTION = 
       (ADDRESS = (PROTOCOL = TCP)(HOST = database.mynamespace.svc.cluster.local)
         (PORT = 1521))     
       (CONNECT_DATA =       
         (SERVER = DEDICATED)       
         (SERVICE_NAME = OraTest.my.sample.com)))
    OraCache =  
     (DESCRIPTION =   
       (ADDRESS = (PROTOCOL = TCP)(HOST = database.mynamespace.svc.cluster.local)
         (PORT = 1521))     
       (CONNECT_DATA =       
         (SERVER = DEDICATED)       
         (SERVICE_NAME = OraCache.my.sample.com)))
  9. このConfigMapディレクトリにsqlnet.oraメタデータ・ファイルを作成します。
    vi sqlnet.ora
    
    
    NAME.DIRECTORY_PATH= {TNSNAMES, EZCONNECT, HOSTNAME}
    SQLNET.EXPIRE_TIME = 10
    SSL_VERSION = 1.2
  10. 直接接続可能オブジェクトを作成します。
    vi cachegriddirect.connect
    
    ConnectionCharacterSet=AL32UTF8
  11. クライアント/サーバー接続可能オブジェクトを作成します。
    vi cachegridclient.csconnect
    
    ConnectionCharacterSet=AL32UTF8
    TTC_Timeout=30
  12. (オプション): Linuxのlsコマンドを使用して、メタデータ・ファイルがConfigMapディレクトリにあることを確認します。
    ls
    出力は次のようになります。
    adminUser                  cachegroups.sql  schema.sql
    cachegridclient.csconnect  cacheUser        sqlnet.ora
    cachegriddirect.connect    db.ini           tnsnames.ora
  13. ConfigMapを作成します。

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

    • このConfigMapの名前はcachegridです。cachegridを任意の名前に置き換えてください。

    • この例では、このConfigMapファイル用のディレクトリとしてcm_cachegridを使用します。別のディレクトリを使用する場合は、cm_cachegridを、使用するディレクトリの名前に置き換えます。

    kubectl create configmap cachegrid --from-file .

    cm_cachegridディレクトリ内のファイルはConfigMapに組み込まれ、後でTimesTenコンテナで使用できるようになります。

  14. kubectl describeコマンドを使用してこのConfigMapの内容を確認します。
    kubectl describe configmap cachegrid
    出力は次のようになります。
    Name:         cachegrid
    Namespace:    mynamespace
    Labels:       <none>
    Annotations:  <none>
    
    Data
    ====
    cachegroups.sql:
    ----
    CREATE READONLY CACHE GROUP readcache
    AUTOREFRESH
      INTERVAL 5 SECONDS
    FROM oratt_grid.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
    
    sqlnet.ora:
    ----
    NAME.DIRECTORY_PATH= {TNSNAMES, EZCONNECT, HOSTNAME}
    SQLNET.EXPIRE_TIME = 10
    SSL_VERSION = 1.2
    
    
    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)))
    
    adminUser:
    ----
    adminuser_grid/adminuserpwd
    
    cachegridclient.csconnect:
    ----
    ConnectionCharacterSet=AL32UTF8
    TTC_Timeout=30
    
    cachegriddirect.connect:
    ----
    ConnectionCharacterSet=AL32UTF8
    
    cacheUser:
    ----
    cacheuser_grid/ttpwd/oraclepwd
    
    schema.sql:
    ----
    create user oratt_grid identified by ttpwd;
    grant admin to oratt_grid;
    
    Events:  <none>
    

これで、cachegrid ConfigMapの作成とデプロイが完了しました。