データをキャッシュするためのOracle Databaseの設定

TimesTen Cacheを使用する前に、Oracleデータベースでのタスクを完了する必要があります。それらのタスクについては、次の項で説明します:

Oracle Databaseユーザーの作成

TimesTen Cacheを使用する前に、Oracleデータベースで次のユーザーを作成する必要があります。

  • キャッシュ管理ユーザー。このユーザーは、キャッシュ環境に関する情報を格納するOracle Databaseオブジェクトを作成およびメンテナンスします。このユーザーは、キャッシュ・グループ・タイプの事前定義済動作も実施します。

  • TimesTenデータベースにキャッシュされるOracle Database表を所有する1人または複数のスキーマ・ユーザー。

『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』Oracleデータベース・ユーザーおよびデフォルト表領域の作成を参照してください。

この例では、Oracle Databaseでcacheuser_gridキャッシュ管理ユーザーとoratt_gridスキーマ・ユーザーを作成します。

  1. Oracle Databaseにアクセスできるシェルを作成し、SQL*Plusを使用してsysユーザーとしてOracle Databaseに接続します。次に、そのスキーマ・ユーザーのデフォルト表領域と、そのキャッシュ管理ユーザーのデフォルト表領域を作成します。
    sqlplus sys/syspwd@oracache as sysdba

    スキーマ・ユーザー(oratt_grid)の表領域を作成します。

    CREATE TABLESPACE cachegridtablespace1 DATAFILE 'datattgrid1.dbf' SIZE 100M;
    出力は次のようになります。
    Tablespace created.

    キャッシュ管理ユーザー(cacheuser_grid)の表領域を作成します。

    CREATE TABLESPACE cachegridtablespace2 DATAFILE 'datattgrid2.dbf' SIZE 100M;
    出力は次のようになります。
    Tablespace created.

    『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』Oracleデータベース・ユーザーおよびデフォルト表領域の作成を参照してください。

  2. SQL*Plusを使用してスキーマ・ユーザーを作成します。このスキーマ・ユーザーには、TimesTenデータベースにキャッシュされるOracle Databaseの表を作成するために必要な最小限の権限セットを付与します。

    この例では、oratt_gridスキーマ・ユーザーを作成します。

    CREATE USER oratt_grid IDENTIFIED BY oraclepwd 
    DEFAULT TABLESPACE cachegridtablespace1 QUOTA UNLIMITED ON cachegridtablespace1;
    
    出力は次のようになります。
    User created.
    GRANT CREATE SESSION, RESOURCE TO oratt_grid;
    出力は次のようになります。
    Grant succeeded.
  3. SQL*Plusを使用してキャッシュ管理ユーザーを作成します。後で、cacheUserメタデータ・ファイル内で同じ名前を使用します。

    この例では、cacheuser_gridユーザーを作成します。

    CREATE USER cacheuser_grid IDENTIFIED BY oraclepwd 
    DEFAULT TABLESPACE cachegridtablespace2 QUOTA UNLIMITED ON cachegridtablespace2;

    出力は次のようになります。

    User created.

    コミットしてからSQL*Plusを終了します。

    commit;
    exit;
    シェルを終了します。
    exit;

キャッシュ管理ユーザーへの権限の付与

キャッシュ管理ユーザーには、TimesTenキャッシュ・グループを操作するための特定の一連の権限が必要になります。TimesTenでは、TimesTenインストール・ディストリビューションの一部としてgrantCacheAdminPrivileges.sql SQL*Plusスクリプトが用意されています。Oracleデータベースでこのスクリプトを実行して、キャッシュ操作の実行に必要な最小限の権限をキャッシュ管理ユーザーに付与します。Oracleキャッシュ管理ユーザーへの権限の付与、および『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』キャッシュ操作に必要なキャッシュ管理ユーザーの権限を参照してください。

次のステップに従って、grantCacheAdminPrivileges.sqlスクリプトを実行します。

  1. Oracle Databaseにアクセスできるシェルを作成して、任意のディレクトリから空のサブディレクトリを作成します。この例では、oraclescriptsサブディレクトリを作成します。
    mkdir -p oraclescripts
  2. Linux開発ホストからkubectl cpコマンドを使用して、Linux開発ホストのinstallation_dir/oraclescriptsディレクトリにあるgrantCacheAdminPrivileges.sqlスクリプトを前の手順で作成したoraclescriptsディレクトリにコピーします。

    ノート:

    installation_dir/oraclescripts/grantCacheAdminPrivileges.sqlディレクトリを取得するには、TimesTenディストリビューションを解凍する必要があります。
    kubectl cp /installation_dir/oraclescripts/grantCacheAdminPrivileges.sql 
    database-oracle:oraclescripts/grantCacheAdminPrivileges.sql
  3. (オプション): シェルから、このスクリプトがoraclescriptsディレクトリに配置されていることを確認します。
    ls oraclescripts
    出力は次のようになります。
    grantCacheAdminPrivileges.sql
  4. database-oracle:oraclescriptsディレクトリに移動します。次に、SQL*Plusを使用してsysユーザーとしてOracle Databaseに接続します。次は、grantCacheAdminPrivileges.sqlスクリプトを実行します。
    cd oraclescripts
    sqlplus sys/syspwd@oracache as sysdba

    SQL*Plusで、そのSQLスクリプトを実行します。

    @grantCacheAdminPrivileges "cacheuser_grid";
    出力は次のようになります。
    Please enter the administrator user id
    The value chosen for administrator user id is cacheuser_grid
    
    TT_CACHE_ADMIN_ROLE role already exists
    ***************** Initialization for cache admin begins ******************
    0. Granting the CREATE SESSION privilege to CACHEUSER_GRID
    1. Granting the TT_CACHE_ADMIN_ROLE to CACHEUSER_GRID
    2. Granting the DBMS_LOCK package privilege to CACHEUSER_GRID
    3. Granting the DBMS_DDL package privilege to CACHEUSER_GRID
    4. Granting the DBMS_FLASHBACK package privilege to CACHEUSER_GRID
    5. Granting the CREATE SEQUENCE privilege to CACHEUSER_GRID
    6. Granting the CREATE CLUSTER privilege to CACHEUSER_GRID
    7. Granting the CREATE OPERATOR privilege to CACHEUSER_GRID
    8. Granting the CREATE INDEXTYPE privilege to CACHEUSER_GRID
    9. Granting the CREATE TABLE privilege to CACHEUSER_GRID
    10. Granting the CREATE PROCEDURE  privilege to CACHEUSER_GRID
    11. Granting the CREATE ANY TRIGGER  privilege to CACHEUSER_GRID
    12. Granting the GRANT UNLIMITED TABLESPACE privilege to CACHEUSER_GRID
    13. Granting the DBMS_LOB package privilege to CACHEUSER_GRID
    14. Granting the SELECT on SYS.ALL_OBJECTS privilege to CACHEUSER_GRID
    15. Granting the SELECT on SYS.ALL_SYNONYMS privilege to CACHEUSER_GRID
    16. Checking if the cache administrator user has permissions on the default
    tablespace
         Permission exists
    18. Granting the CREATE TYPE privilege to CACHEUSER_GRID
    19. Granting the SELECT on SYS.GV$LOCK privilege to CACHEUSER_GRID
    20. Granting the SELECT on SYS.GV$SESSION privilege  to CACHEUSER_GRID
    21. Granting the SELECT on SYS.DBA_DATA_FILES privilege  to CACHEUSER_GRID
    22. Granting the SELECT on SYS.USER_USERS privilege  to CACHEUSER_GRID
    23. Granting the SELECT on SYS.USER_FREE_SPACE privilege  to CACHEUSER_GRID
    24. Granting the SELECT on SYS.USER_TS_QUOTAS privilege  to CACHEUSER_GRID
    25. Granting the SELECT on SYS.USER_SYS_PRIVS privilege  to CACHEUSER_GRID
    26. Granting the SELECT on SYS.V$DATABASE privilege  to CACHEUSER_GRID
    (optional)
    27. Granting the SELECT on SYS.GV$PROCESS privilege  to CACHEUSER_GRID
    (optional)
    28. Granting the SELECT ANY TRANSACTION privilege to CACHEUSER_GRID
    29. Creating the CACHEUSER_GRID.TT_07_ARDL_CG_COUNTER table
    30. Granting SELECT privilege on CACHEUSER_GRID.TT_07_ARDL_CG_COUNTER table to
    PUBLIC
    ********* Initialization for cache admin user done successfully *********
    

    SQL*Plusとシェルを終了します。

    exit;
    exit;

これで、スクリプトの実行によるキャッシュ管理ユーザーへの権限付与が完了しました。

キャッシュするOracle Database表の作成

この例では、oratt_gridユーザー・スキーマにreadtab表を作成します。その後、その表は読取り専用キャッシュ・グループにキャッシュされるようになります。

  1. Oracle Databaseにアクセスできるシェルを作成し、SQL*Plusを使用してsysユーザーとしてOracle Databaseに接続します。次に、oratt_grid.readtab表を作成します。
    sqlplus sys/syspwd@oracache as sysdba
    CREATE TABLE oratt_grid.readtab (keyval NUMBER NOT NULL PRIMARY KEY,str VARCHAR2(32));
    出力は次のようになります。
    Table created.
  2. SQL*Plusを使用してoratt_grid.readtab表に行を挿入します。その後、行が挿入されていることを確認します。
    INSERT INTO oratt_grid.readtab VALUES (1,'Hello');
    INSERT INTO oratt_grid.readtab VALUES (2,'World');
    コミットします。
    commit;

    行が表に挿入されていることを確認します。

    SELECT * FROM oratt_grid.readtab;
    出力は次のようになります。
    KEYVAL STR
    ---------- --------------------------------
             1 Hello
             2 World
    
  3. SQL*Plusを使用してoratt_grid.readtab表に対するSELECT権限を付与します。
    GRANT SELECT ON oratt_grid.readtab TO cacheuser_grid;
    出力は次のようになります。
    Grant succeeded.
  4. SQL*Plusを使用して、nls_database_parametersシステム・ビューを問い合せて、Oracle Databaseのデータベース文字セットを確認します。Oracle Databaseのデータベース文字セットは、TimesTenのデータベース文字セットと一致している必要があります。

    この例では、問合せによってAL32UTF8データベース文字セットが返されます。

     SELECT value FROM nls_database_parameters WHERE parameter='NLS_CHARACTERSET';
    出力は次のようになります。
    VALUE
    --------------------------------------------------------------------------------
    AL32UTF8

    SQL*Plusとシェルを終了します。

    exit;
    exit;

これで、Oracle Database表の作成が完了しました。その後、この表はTimesTenキャッシュ・グループにキャッシュされるようになります。