次の各項では、TimesTen Application-Tier Database (TimesTen)キャッシュ・アドバイザの使用方法について説明します。
TimesTenキャッシュ・アドバイザを使用することで、Oracle Databaseの顧客が、TimesTen Cache (TimesTenデータベースとも呼ばれます)を使用した場合にその既存のOracle Databaseアプリケーションのパフォーマンスを向上できるかどうかを判断できます。
キャッシュ・アドバイザは、Oracle DatabaseアプリケーションのSQL使用率に基づき、TimesTenキャッシュ・グループの定義の推奨値を生成します。これは、アプリケーションから取り込んだSQLワークロードまたは既存のSQLチューニング・セットを評価することにより、実行されます。キャッシュ・アドバイザは、この情報とOracle Databaseオブジェクトのスキーマ定義を分析して、表および列の使用パターンを決定します。また、キャッシュ・アドバイザは、指定されたTimesTenキャッシュ・サイズにおけるアプリケーションのパフォーマンスを分析するため、指定されたキャッシュのサイズに応じてキャッシュ・グループの推奨事項が異なる場合があります。SQLチューニング・セットの詳細は、『Oracle Database 2日でパフォーマンス・チューニング・ガイド』のSQLチューニング・セットの管理に関する項を参照してください。
取得したSQLアプリケーション・ワークロードまたはSQLチューニング・セットを評価する場合、キャッシュ・アドバイザでは、TimesTenアプリケーションの非同期ライトスルー(AWT)キャッシュ・グループまたは読取り専用キャッシュ・グループのいずれかを使用することが推奨されています。使用するキャッシュ・グループのタイプは、SQL SELECT
文の実行数と比較した、データ値を変更するOracle DatabaseアプリケーションのSQL文実行数に基づいて決定します。
注意: キャッシュ・アドバイザは、実行ポート問題に関してDML文(SELECT 、INSERT 、UPDATE およびDELETE )を評価しますが、TimesTenとOracle Databaseの両方でパフォーマンスを比較する際にはSELECT 文のみを評価します。
キャッシュ・アドバイザは、各SQL文を他の文から分離して評価します。必要な場合は、各文の完了後に |
アプリケーション・ワークロードまたはSQLチューニング・セットを分析し、Oracle DatabaseとTimesTen Cacheとの間のパフォーマンスを比較した後に、キャッシュ・アドバイザはHTMLレポートを生成し、このレポートには、Oracle DatabaseとTimesTen Cacheを比較したパフォーマンス統計、アプリケーションがアクセスするTimesTenキャッシュ・グループの推奨キャッシュ表の定義およびそのキャッシュ表を参照するSQL文が含まれます。また、このレポートは、ワークロードまたはSQLチューニング・セットで変更なしでTimesTen Cacheで実行できる文、および実行前に変更が必要な文も示します。発生する可能性のある違いの詳細は、付録C「TimesTenデータベースとOracle Databaseの互換性」を参照してください。
キャッシュ・アドバイザはさらに、推奨するキャッシュ・グループ定義に使用できるttIsql
スクリプトも生成します。この、ユーザーによる編集な可能なスクリプトには、CREATE CACHE GROUP
、LOAD CACHE GROUP
、CREATE INDEX
、CREATE SYNONYM
、およびCREATE VIEW
などのSQL文が含まれています。
キャッシュ・アドバイザでは最大次の3つのデータベースを使用する必要があります。
ユーザー・アプリケーションが実行され、アプリケーション・スキーマが存在するターゲットのOracle Database。SQLワークロードはここで取得します。このデータベースで実行されるワークロードは、本番データベースのワークロードとできるだけ近いものである必要があります。さらにキャッシュ・アドバイザは、TimesTenの表サイズを計算するために、ターゲットのOracle Databaseの統計を使用します。ユーザーはターゲットのOracle Databaseで統計が収集されており、それが最新のものであることを確認する必要があります。
リポジトリOracle Database。キャッシュ・アドバイザはここでターゲットのOracle Databaseで実行されるSQL文のワークロードの分析を行います。
注意: ターゲット・データベースが本番システムの一部である場合は、キャッシュ・アドバイザ・リポジトリを別の非本番データベースに置きます。ターゲット・データベースがテスト・システムの一部である場合は、設定および処理を簡略化するために、キャッシュ・アドバイザ・リポジトリをターゲットと同じデータベースに置きます。 |
TimesTenデータベース(TimesTen Cacheとも呼ばれます)では、推奨されるキャッシュ・グループをキャッシュ・アドバイザが定義して評価しますが、このキャッシュ・グループのキャッシュ表は、アプリケーション・ワークロードがアクセスするターゲットOracle Databaseのテーブルに対応しています。
キャッシュ・アドバイザを使用するには、まずTimesTenをインストールしてから、Oracle DatabaseおよびTimesTenシステムを構成する必要があります。
注意: TimesTenのインストールの詳細は、『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』を参照してください。 |
次の各項では、キャッシュ・アドバイザを実行するための各データベースおよびホストの構成方法を例示しながら説明します。この例では、SQLワークロードを実行するアプリケーションの実例としてQuick Startのサンプルを使用しています。
Oracle DatabaseおよびTimesTenのホストおよびデータベースを設定するには、次のタスクを実行します。
キャッシュ・アドバイザ環境に含まれる各ホストおよびデータベースをインストールおよび構成する際の構成オプションと使用法のガイドラインの詳細は、「キャッシュ・アドバイザの構成オプションと使用法のガイドライン」に関する項を参照してください。
ターゲットOracle Databaseでは、アプリケーション・スキーマが定義されます。これは、ユーザー・アプリケーションがアクセスするデータベースです。キャッシュ・アドバイザを使用する場合は、ターゲットのデータベースがOracle Database Enterprise Edition 10gリリース2 (10.2.0.4)以上である必要があります。
TimesTen Cacheが使用するターゲット・データベースを設定するには、TimesTenデータベース・システムのオペレーティング・システム・シェルからSQL*Plusを起動し、Oracle Databaseのsys
ユーザーとしてターゲット・データベースに接続します。この例では、ターゲット・データベースのサービス名をtargetdb
としています。
% cd TimesTen_install_dir/oraclescripts % sqlplus sys@targetdb as sysdba Enter password: password
SQL*Plusを使用して、Oracle Database timesten
ユーザーとキャッシュ管理ユーザーの両方に使用されるデフォルトの表領域を作成します。この表領域は、TimesTen Cacheのオブジェクトを保存するためにのみ使用し、他のアプリケーションと共有しないでください。この例では、デフォルトの表領域の名前をcachetblsp
としています。timesten
ユーザーの詳細は、「Oracle Databaseでのユーザーの作成」を参照してください。
SQL*PlusスクリプトTimesTen_install_dir
/oraclescripts/initCacheGlobalSchema.sql
を実行して、timesten
ユーザーとそのメタデータ表、およびこのユーザーに付与する権限を定義するTT_CACHE_ADMIN_ROLE
ロールを作成します。デフォルトの表領域を引数としてinitCacheGlobalSchema.sql
スクリプトに渡します。
SQL> CREATE TABLESPACE cachetblsp DATAFILE 'datfttuser.dbf' SIZE 100M; SQL> @initCacheGlobalSchema "cachetblsp"
次に、SQL*Plusを使用してターゲットOracle Databaseユーザーを作成します(ターゲットOracle Databaseユーザーがまだ存在していない場合)。
注意: この例ではQuick Startサンプル・プログラムを使用しているため、スキーマ所有者としてoratt が作成されます。 |
ターゲットOracle Databaseユーザーは、SQLワークロード・アプリケーションにより使用される予定で、TimesTenデータベースでのキャッシュ対象であるOracle Databaseオブジェクトを所有します。ターゲットOracle Databaseユーザーは、「Oracle Databaseでのユーザーの作成」で説明されるスキーマ・ユーザーと同じです。
このユーザーに対して、TimesTenデータベースでキャッシュされる表をOracle Databaseに作成するために必要な、少なくとも最小限の権限セットを付与します。この例では、ターゲットOracle Databaseユーザーはoratt
です。
SQL> CREATE USER oratt IDENTIFIED BY oracle; SQL> GRANT CREATE SESSION, RESOURCE TO oratt;
次に、SQL*Plusを使用してキャッシュ管理ユーザーを作成します。SQL*PlusスクリプトTimesTen_install_dir
/oraclescripts/grantCacheAdminPrivileges.sql
を実行して、キャッシュ・グループ操作を処理するために必要な最小限の権限セットをキャッシュ管理ユーザーに付与します。キャッシュ・グループの詳細は、「キャッシュ・グループおよびキャッシュ表」を参照してください。
注意: ターゲットOracle Databaseユーザーおよびキャッシュ管理ユーザーは、別のユーザーである必要があります。また、リポジトリ・キャッシュ・アドバイザ・ユーザーを作成する際には、このユーザーも別のユーザーである必要があります。 |
キャッシュ管理ユーザー名を引数としてgrantCacheAdminPrivileges.sql
スクリプトに渡します。この例では、キャッシュ管理ユーザーをcacheuser
とし、そのデフォルトの表領域の名前をcachetblsp
としています。キャッシュ管理ユーザーの詳細は、「Oracle Databaseでのユーザーの作成」を参照してください。
SQL> CREATE USER cacheuser IDENTIFIED BY oracache DEFAULT TABLESPACE cachetblsp QUOTA UNLIMITED ON cachetblsp; SQL> GRANT SELECT ANY TABLE, DELETE ANY TABLE, INSERT ANY TABLE, UPDATE ANY TABLE TO cacheuser; SQL> @grantCacheAdminPrivileges "cacheuser"
SQL*PlusスクリプトTimesTen_install_dir
/oraclescripts/ttca_setupTarget.sql
を実行して、次の操作を実行します。
ターゲットOracle Databaseユーザーに付与する権限を定義するTTCA_TARGET_ROLE
ロールを作成します。
ターゲット・データベースでのファイル処理に使用するTTCA_DIRECTORY
という名前のOracleディレクトリ・オブジェクトを作成します。ttca_setupTarget.sql
スクリプトは、ターゲット・キャッシュ・アドバイザ・ユーザーが前に作成したローカル・ディレクトリにTTCA_DIRECTORY
ディレクトリ・オブジェクトを関連付けます。Oracle Databaseディレクトリ・オブジェクトの詳細は、『Oracle Database SQL言語リファレンス』のCREATE DIRECTORYに関する説明を参照してください。
ttca_setupTarget.sql
スクリプトを実行した後に、SQL*Plusセッションを終了します。
次の例では、TTCA_DIRECTORY
オブジェクトがまだ作成されていない場合の出力を示します。
SQL> @ttca_setupTarget This script sets up your target Oracle database for use with the TimesTen Cache Advisor. The target Oracle database is the application database that you wish to cache using TimesTen Application-Tier Database Cache. This script performs the following actions: 1. Create the TTCA_TARGET_ROLE role, if it does not already exist 2. Create a new directory object on the target Oracle database, if directed by you to do so 3. Grant read and write access on a new or existing target Oracle database directory object to the TTCA_TARGET_ROLE role 4. Grant the TTCA_TARGET_ROLE role to the target Oracle database user Run this script as SYSDBA on the target database. (You will also need to configure a repository Oracle database that you set up with the ttca_setupRepository.sql script.) Please enter a target Oracle database user name to access the target database: oratt The TimesTen Cache Advisor requires the use of a directory object on the target Oracle database for DataPump and file operations. An Oracle directory object is created with the CREATE DIRECTORY Oracle Data Definition Language (DDL) statement. A directory object is identified by an Oracle object name (up to 30 alphanumeric characters) and is associated with a host-platform-specific directory path (up to 4000 characters). ******************************************************************************** *** Enter the directory path on the target system to use in the definition *** of TTCA_DIRECTORY ******************************************************************************** ? /mysystem/mydirectory/ttca_directory Create TTCA_DIRECTORY directory object succeeded. Grant READ and WRITE on TTCA_DIRECTORY directory object to TTCA_TARGET_ROLE role succeeded. Grant READ and WRITE on TTCA_DIRECTORY directory object to scott role succeeded. To revoke privileges granted by this script: REVOKE ttca_target_role FROM oratt; DROP ROLE ttca_target_role; REVOKE READ, WRITE ON DIRECTORY TTCA_DIRECTORY FROM oratt; No errors. ******************* **** All done! **** *******************
TTCA_DIRECTORY
オブジェクトがすでに作成されている場合は、次のスクリプトにより、オブジェクトがすでに存在していることが通知および確認されます。
*** The directory object used by cache Advisor (TTCA_DIRECTORY) already exists. *** Please press ENTER to continue ******************************************************************************** ?
リポジトリOracle Databaseは、ターゲットOracle Databaseで実行されるSQLワークロードの分析をキャッシュ・アドバイザが行う場所です。キャッシュ・アドバイザはリポジトリ・データベースにタスクを保管すると同時に、リポジトリ・データベースでレポートを作成し、スクリプトを生成します。タスクとは、ワークロード、パフォーマンス結果、およびユーザーが指定したキャッシュ・アドバイザ・オプションに関する情報が含まれているオブジェクトです。
ターゲット・データベースが本番システムの一部である場合は、キャッシュ・アドバイザ・リポジトリを別の非本番データベースに置きます。まずOracle Database Enterprise Edition 10gリリース2 (10.2.0.4)以上のリポジトリ・データベースをインストールして構成します。リポジトリ・データベースのバージョンが、ターゲットOracle Databaseのバージョン以上である必要があります。別のターゲットおよびリポジトリ・データベースを使用する際には、キャッシュ・アドバイザがターゲット・データベースからリポジトリ・データベースにスキーマ定義をコピーするため、別のリポジトリ・データベースをキャッシュ・アドバイザに割り当てる必要があります。キャッシュ・アドバイザ・リポジトリをクリーンアップする際には、データベースを削除します。
ターゲット・データベースがテスト・システムの一部である場合は、設定および処理を簡略化するために、キャッシュ・アドバイザ・リポジトリをターゲットと同じデータベースに置きます。キャッシュ・アドバイザ・リポジトリをクリーンアップする際には、DROP USER TTCACHEADVISOR CASCADE
文を実行します。
TimesTenデータベース・システムのオペレーティング・システム・シェルからSQL*Plusを起動し、Oracle Database sys
ユーザーとしてリポジトリ・データベースに接続します。この例では、リポジトリ・データベースのサービス名をrepositorydb
としています。
% cd TimesTen_install_dir/oraclescripts % sqlplus sys@repositorydb as sysdba Enter password: password
リポジトリ・データベースにSYSDBA
権限で接続する必要があります。
SQL*PlusスクリプトTimesTen_install_dir
/oraclescripts/ttca_setupRepository.sql
を実行して、次の操作を実行します。
ターゲットOracle Database上で実行されるSQLワークロード分析に使用されるリポジトリ・データベースに、オブジェクトを所有するユーザーを作成し、これらのオブジェクトを保管するために使用するttca_ts
表スペースを作成します。
リポジトリ・データベースでのファイル処理に使用するOracle Databaseディレクトリ・オブジェクトを作成または指定します。ttca_setupRepository.sql
スクリプトは、リポジトリ・キャッシュ・アドバイザ・ユーザーが前に作成したローカル・ディレクトリにディレクトリ・オブジェクトを関連付けます。Oracle Databaseディレクトリ・オブジェクトの詳細は、『Oracle Database SQL言語リファレンス』のCREATE DIRECTORYに関する説明を参照してください。
ttca_setupRepository.sql
スクリプトを実行した後に、SQL*Plusセッションを終了します。
SQL> @ttca_setupRepository This script sets up your repository Oracle database for use with the TimesTen Cache Advisor. The repository Oracle database is used by the TimesTen Cache Advisor as an analytical workspace. This script performs the following actions: 1. Create repository Oracle database user TTCACHEADVISOR (or other user name that you specify) 2. Grant read and write access on a new or existing repository Oracle database directory object to the repository database user 3. Create tablespace TTCA_TS, if it does not exist 4. Grant required privileges to the repository database user 5. Create required tables and views owned by the repository database user Run this script as SYSDBA on the repository database. (You will also be using a target Oracle database that you set up with the ttca_setupTarget.sql script.) Press ENTER to create the repository Oracle database user with user name TTCACHEADVISOR, or enter an alternative user name for the repository database user: Please enter a password for the TTCACHEADVISOR user: Please confirm the password for the TTCACHEADVISOR user: The TimesTen Cache Advisor requires the use of a directory object on the repository Oracle database for DataPump and file operations. An Oracle directory object is created with the CREATE DIRECTORY Oracle Data Definition Language (DDL) statement. A directory object is identified by an Oracle object name (up to 30 alphanumeric characters) and is associated with a host-platform-specific directory path (up to 4000 characters). ******************************************************************************** *** Enter the directory path on the repository system to use in the definition *** of TTCA_DIRECTORY ******************************************************************************** ? /mysystem/mydirectory/ttca_directory Create TTCA_TS tablespace succeeded. Create TTCACHEADVISOR user succeeded. Create TTCA_DIRECTORY directory object succeeded. ******************* **** All done! **** ******************* To employ other directories as directory objects on the repository database, grant READ,WRITE ON DIRECTORY <directory_name> TO TTCACHEADVISOR
TTCA_DIRECTORY
オブジェクトがすでに作成されている場合は、次のスクリプトにより、オブジェクトがすでに存在していることが通知および確認されます。
*** The directory object used by cache Advisor (TTCA_DIRECTORY) already exists. *** Please press ENTER to continue ******************************************************************************** ?
TT_CS
表領域がすでに作成されている場合、出力には次の文は表示されません。
Create TTCA_TS tablespace succeeded.
TimesTenデータベースでは、キャッシュ・アドバイザが、アプリケーション・ワークロードがアクセスするターゲットOracle Databaseの表に対応するキャッシュ表を持つ推奨キャッシュ・グループを定義し、評価します。TimesTenデータベースはキャッシュ・アドバイザのみに使用されるテスト・データベースであり、他のアプリケーションと共有しないでください。
次のデータ・ソース名(DSN)の例では、ターゲットOracle Databaseのネット・サービス名をtargetdb
とし、そのデータベース・キャラクタ・セットをAL32UTF8
としています。TimesTenのデータベース・キャラクタ・セットは、ターゲットOracle Databaseのデータベース・キャラクタ・セットに一致する必要があります。SQL*Plusで任意のユーザーとして次の問合せを実行することにより、Oracle Databaseのデータベース・キャラクタ・セットを決定できます。
SQL> SELECT value FROM nls_database_parameters WHERE parameter='NLS_CHARACTERSET';
ホーム・ディレクトリに存在する.odbc.ini
ファイルまたはTimesTen_install_dir
/info/sys.odbc.ini
ファイルにTimesTen DSN cacheadv
を作成し、次の接続属性を設定します。
注意: この例では、キャッシュ・アドバイザがCacheGridEnable 属性を「0」に設定したため、ユーザーはグリッドを作成する必要がありません。詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のCacheGridEnableに関する説明を参照してください。 |
[cacheadv] DataStore=/users/OracleCache/cacheadv PermSize=64 OracleNetServiceName=targetdb DatabaseCharacterSet=AL32UTF8 CacheGridEnable=0
注意: Oracle DatabaseからデータをキャッシュするTimesTenデータベースのDSNを定義する方法の詳細は、「TimesTenデータベースのDSNの定義」を参照してください。 TimesTen DSNの詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のTimesTenデータベースの管理に関する説明を参照してください。 |
TimesTen Cacheが使用するTimesTenデータベースをセットアップします。TimesTenインスタンス管理者ユーザーとして、オペレーティング・システム・シェルからTimesTenシステムでttIsql
ユーティリティを起動し、cacheadv
DSNに接続して、ターゲットOracle Databaseのデータをキャッシュするために使用するTimesTenデータベースを作成します。
% ttIsql cacheadv
ttIsql
を使用してキャッシュ・マネージャ・ユーザーを作成しますが、このユーザーには、同じ名前を持つコンパニオンOracle Databaseユーザーがいます。このユーザーに、キャッシュ・グループに対する操作を作成、実行するために必要な最小限の権限セットを付与します。次の例では、キャッシュ・マネージャ・ユーザー名はcacheuser
で、キャッシュ管理ユーザーは、そのコンパニオンOracle Databaseユーザーとして機能します。
Command> CREATE USER cacheuser IDENTIFIED BY ttcache; Command> GRANT CREATE SESSION, CACHE_MANAGER, CREATE ANY TABLE TO cacheuser;
次に、ttIsql
を使用して、ttCacheUidPwdSet
組込みプロシージャをコールし、キャッシュ管理ユーザーの名前およびパスワードを設定します。その後、ttIsql
セッションを終了します。
Command> call ttCacheUidPwdSet('cacheuser','oracache'); Command> exit
キャッシュ管理ユーザーの名前とパスワードは、TimesTenデータベースに1回のみ設定する必要があります。TimesTenデータベースでこの設定が使用される仕組みの詳細は、「キャッシュ管理ユーザーの名前およびパスワードの設定」を参照してください。
次の各項ではサポートされている構成オプションおよびキャッシュ・アドバイザを使用するためのガイドラインを説明します。
キャッシュ・アドバイザは、キャッシュ・アドバイザ環境に含まれるホストおよびデータベースについて次の構成オプションをサポートしています。
単一のOracle Database(Oracle Database Enterprise Edition 10gリリース2 (10.2.0.4)以上である必要がある)は、ターゲット・データベースおよびリポジトリ・データベースの両方として機能します。ターゲットOracle Databaseはテスト・データベースである必要があり、本番データベースであることはできません。
TimesTenデータベースは、より正確なパフォーマンス分析を行うために別のホスト・システムに常駐させるか、またはデモンストレーションの目的でOracle Databaseと同じホストに常駐させることができます。
これは優先される構成であり、設定および処理が最も簡単になります。
単一のOracle Database(Oracle Database Enterprise Edition 10gリリース2 (10.2.0.4)以上である必要がある)は、リポジトリまたはTimesTenデータベースなしでターゲット・データベースとして機能します。
ターゲット・データベースは、稼働中の本番データベースの一部またはテスト・システムの一部にすることができます。この構成は、-export
コマンド・ライン・オプションでのみサポートされています。
この構成では、遅延分析でのアプリケーションSQLワークロードおよびスキーマ定義を取得できます。-import
オプションを他のサポートされている構成のいずれかとともに使用して、遅延分析を実行します。
Oracle Database Enterprise Edition 10gリリース2 (10.2.0.4)以上のターゲットOracle Database、Oracle Database Enterprise Edition 10gリリース2 (10.2.0.4)以上のリポジトリOracle DatabaseおよびTimesTenデータベースはすべて、同じまたは別のホスト・システムに存在する別のデータベースです。
ターゲットOracle DatabaseはリポジトリOracle Databaseよりも新しいバージョンであることはできません。-evalSqlPerf
コマンド・ライン・オプションを使用してパフォーマンス分析を行う場合、TimesTenデータベースは別のホストに存在して、ターゲットOracle Databaseはテスト・システムの一部である必要があり、稼働中の本番システムであることはできません。クリーンアップを使用可能にするためには、リポジトリ・データベースをキャッシュ・アドバイザに割り当てる必要があります。
この構成では、リソースを柔軟に割り当てることができます。
キャッシュ・アドバイザで推奨されるキャッシュ・スキーマの設計では、ユーザー・アプリケーションがTimesTenデータベースへの接続とは別に、ターゲットOracle Databaseへの接続を確立することを前提としています。
キャッシュ・アドバイザはほとんどのTimesTen DSN属性設定をサポートしています。ただし、キャッシュ・アドバイザは次の属性設定をサポートしていません。
Temporary=1
(TimesTen一時データベースまたはTimesTen非永続データベース)
TypeMode=1
(TimesTenデータ型)
DDLCommitBehavior=1
(DDL文を自動的にコミットしない)
DuplicateBindMode=1
(同じ名前を持つパラメータを同一とみなす)
PLSQL=0
(TimesTen PL/SQLの使用を無効にする)
DynamicLoadEnable=0
(Oracle Database表からTimesTenキャッシュ表へのデータの動的なロードを無効にする)
この例では、ターゲットOracle DatabaseでSQLワークロードを生成するのにスループット・ベンチマークのOCIバージョン(tptbmOCI
)を使用しています。
TimesTenシステム上の任意のオペレーティング・システム・ユーザーとしてデモ・プログラムをビルドし、実行します。ターゲット・データベースのネット・サービス名はtargetdb
です。ターゲットOracle Databaseユーザーはoratt
です。oratt
ユーザーのパスワードはoracle
です。アプリケーション表には252 = 625行のデータが投入され、1トランザクション当たりのSQL文の最大数は1000です。
% cd TimesTen_install_dir/quickstart/sample_code/oci % make tptbmOCI % tptbmOCI -service targetdb -user oratt -key 25 -max 1000 Enter password for oratt : password ... Load the oratt.vpn_users table with 625 rows of data Run 10000 txns with 1 process: 80% read, 20% update, 0% insert, 0% delete
tptbmOCI
ワークロード・アプリケーションがターゲットOracle Databaseで実行中に、別のウィンドウでインスタンス管理者ユーザーとしてオペレーティング・システム・シェルからTimesTenシステムに対してttCacheAdvisor
ユーティリティを実行します。評価に含めるターゲットOracle Database、リポジトリOracle Database、およびTimesTenデータベースを指定します。
% ttCacheAdvisor -oraTarget -oraConn "oratt@targetdb" \ -oraRepository -oraConn "ttcacheadvisor@repositorydb" \ -ttConn "DSN=cacheadv;UID=cacheuser" \ -report /home/ttuser/CAreport -task sampletask -captureCursorCache 10 \ -evalSqlPerf Enter password for Oracle user oratt@targetdb: password 31.16:21:03 Info: beginning Oracle batch operation checkAuthorization on oratt@targetdb 31.16:21:03 Info: Oracle batch operation checkAuthorization completed Enter password for Oracle user ttcacheadvisor@repositorydb: password 31.16:21:05 Info: beginning Oracle batch operation checkAuthorization on ttcacheadvisor@repositorydb 31.16:21:06 Info: Oracle batch operation checkAuthorization completed 31.16:21:06 Info: beginning Oracle batch operation checkOraUser on oratt@targetdb 31.16:21:06 Info: Oracle batch operation checkOraUser completed 31.16:21:06 Info: beginning TimesTen batch operation checkUserExists on "dsn=cacheadv;uid=cacheuser" 31.16:21:07 Info: TimesTen batch operation checkUserExists completed Enter password for TimesTen user cacheuser (dsn=cacheadv): password 31.16:21:10 Info: beginning TimesTen batch operation checkTTuserAuthorization on "dsn=cacheadv;uid=cacheuser" 31.16:21:11 Info: TimesTen batch operation checkTTuserAuthorization completed Enter password for Oracle user cacheuser@targetdb: password 31.16:21:14 Info: beginning Oracle batch operation checkTToraclepwdAttribute on cacheuser@targetdb 31.16:21:14 Info: Oracle batch operation checkTToraclepwdAttribute completed 31.16:21:14 Info: beginning Oracle batch operation verifyTargetConfig on oratt@targetdb 31.16:21:25 Info: Oracle batch operation verifyTargetConfig completed ...
前の例では、次のようにttCacheAdvisor
ユーティリティを使用していました。
-oraTarget
オプションはターゲットOracle Databaseを識別します。-oraTarget
の-oraConn
オプションは、ターゲット・データベースのターゲットOracle Databaseユーザーとネット・サービス名を接続文字列で指定します。
-oraRepository
オプションはリポジトリOracle Databaseを識別します。-oraRepository
の-oraConn
オプションは、ターゲットOracle Databaseに対して実行されるSQLワークロード分析に使用されるリポジトリ・データベース内のオブジェクトを所有しているユーザーと、リポジトリ・データベースのネット・サービス名を接続文字列で指定します。
-ttConn
オプションはTimesTenデータベースを識別します。DSNおよびキャッシュ・マネージャ・ユーザーを接続文字列で指定します。
-report
オプションは、レポート・ファイルが存在するデフォルト・ディレクトリの場所をオーバーライドします。
-task
オプションはデフォルトのタスク名をオーバーライドします。
-captureCursorCache
オプションは、10分の取得ウィンドウ期間にターゲット・データベースで実行されるSQLワークロードをttCacheAdvisor
ユーティリティが取得するように指定します。SQL文の一部で取得できないことがある場合は、取得期間を長くしてください。
-evalSqlPerf
オプションは、ターゲットOracle DatabaseとTimesTenデータベース上で実行されているワークロード間のパフォーマンス比較を生成するために指定されます。
各データベースについて接続文字列でパスワードが指定されていない場合、ttCacheAdvisor
ユーティリティは、キャッシュ・アドバイザの評価で使用されるTimesTenデータベースとOracle Databaseに接続している各ユーザーのパスワードを求めるプロンプトを出します。
この例では、次のユーザー・パスワードが要求されます。
ターゲットOracle Databaseユーザーのパスワード。この例では、oratt@targetdb
のパスワードはoracle
です。
ターゲットOracle Databaseに対して実行されるSQLワークロード分析に使用されるリポジトリOracle Databaseで、複数のオブジェクトを所有しているユーザーのパスワード。この例では、ttcacheadvisor@repositorydb
のパスワードはttca
です。
TimesTenキャッシュ・マネージャ・ユーザーのパスワード。この例では、cacheuser
のパスワードはttcache
です。
キャッシュ管理ユーザーのパスワード。この例では、cacheuser@targetdb
のパスワードはoracache
です。このパスワードが要求されるのは、ターゲットOracle DatabaseとTimesTenデータベース上で実行されるワークロード間のパフォーマンス比較を生成するために、-evalSqlPerf
オプションが指定されているからです。
ttCacheAdvisor
ユーティリティは、ターゲット・データベースで実行中のアプリケーション・ワークロードを分析する際、定期的にステータス・メッセージを生成します。
ttCacheAdvisor
が完了すると、パフォーマンス統計および、ワークロードのどのSQL文がTimesTenで実行できるか、または実行できないかなどの情報を示すHTMLレポートが作成されます。デフォルトで、レポートを構成する各ファイルは、このユーティリティが起動されたtask-nameディレクトリに存在します。この例では、-report
オプションを使用してこのディレクトリが指定されます。レポートを表示するには、レポート・ファイルのディレクトリにあるindex.htm
ファイルをWebブラウザから開きます。デフォルトで、タスク名はuserName_hostName_timestamp
です。この例では、タスク名が-task
オプションによってオーバーライドされます。
また、ttCacheAdvisor
ユーティリティは、-report
オプションで指定されたディレクトリにttCacheAdvisor_
taskName_timestamp
.sql
という名前の実装スクリプト・ファイルも生成します。このスクリプトは、アプリケーションがアクセスしたOracle Databaseオブジェクトのキャッシュを実装するために使用されるTimesTenデータベースにオブジェクトを作成するために、ttIsql
ユーティリティにより実行できます。
% ttIsql -f ttCacheAdvisor_sampletask_20120531164101.sql "DSN=cacheadv;UID=cacheuser;OraclePWD=oracache"
レポートと実装スクリプトの詳細は、「キャッシュ・アドバイザ・レポートの表示」を参照してください。
ttCacheAdvisor
の構文については、『Oracle TimesTen In-Memory Databaseリファレンス』のttCacheAdvisorに関する説明を参照してください。
注意: この項で説明されているオプションについては、『Oracle TimesTen In-Memory Databaseリファレンス』のttCacheAdvisorに関する説明を参照してください。 |
キャッシュ・アドバイザは、DataPumpを使用してデータベースとの間でデータを移動します。DataPumpでは、ネットワークに接続されていないローカルな関連ディレクトリ・パスを持つOracleディレクトリ・オブジェクトが必要になります。キャッシュ・アドバイザは、デフォルトで、設定スクリプトにより作成されるTTCA_DIRECTORY
Oracleディレクトリ・オブジェクトを-export
および-import
オプションを指定して使用することにより、DataPumpを使用して情報のエクスポートおよびインポートを行います。さらにキャッシュ・アドバイザは、デフォルトで、OCI接続を-oraConn
オプションを指定して使用することにより、ファイルの転送を行います。さらに便利に簡単に使用するために、OCI接続を介してファイルを転送するためにキャッシュ・アドバイザが使用するメカニズムでは、NFSまたはftp
より速度を約3倍遅くすることができます。ファイル転送のパフォーマンスは、ターゲットおよびリポジトリが別のデータベースに存在する場合は、-export
、-import
または-captureCursorCache
の各オプションのみに影響を受けます。
注意: 必要に応じて、データ・ファイル転送オプションを-oraDirNfs または-ftp として構成できますが、これが関係するのはファイル転送のパフォーマンスを向上させる場合のみです。 |
ファイル転送のパフォーマンスを向上させるために、必要に応じて-oraDirNfs
または-ftp
オプションを使用できます。TTCA_DIRECTORY
ディレクトリ・オブジェクトを使用する際は、-oraDirNfs
または-ftp
オプションでは構成しません。このため、-oraDirNfs
または-ftp
オプションを使用する際には、別のディレクトリ・オブジェクトを-oraDirObject
オプションで指定して構成する必要があります。
ディレクトリを構成するには、次の手順を実行します。
Oracle Databaseにログオンして、新しいディレクトリ・オブジェクトを作成します。ディレクトリ・オブジェクトを作成するには、次のコマンドを実行します。
CREATE DIRECTORY dir_name AS /local_dir_path/subdir_path;
指定するディレクトリ・パスはローカル・ディレクトリにする必要があり、ネットワークに接続することはできません。
ターゲットまたはリポジトリOracle Databaseが存在するホスト・システムにログオンし、Oracleディレクトリ・オブジェクトに関連付けられているディレクトリ・パスを持つディレクトリを作成します。このディレクトリは、ターゲット・システム上のどのオペレーティング・システム・ユーザーでも作成できます。このディレクトリは、ホスト・システムに対してローカルで、ネットワークに接続されていないデバイス上に作成する必要があります。
このディレクトリの所有者を、キャッシュ・アドバイザ・ユーザーと呼びます。次の例では、ターゲット・キャッシュ・アドバイザ・ユーザーはca_usr
で、ディレクトリは/local/ca_usr/ca_dir
です。
% mkdir /local/ca_usr/ca_dir
ディレクトリが存在するファイル・システムを決定します。Linuxシステムでは、df
オペレーティング・システム・コマンドを実行してこの情報を取得できます。この例では、/local/ca_usr/ca_dir
ディレクトリが存在するファイル・システムを/dev/sda1
としています。
キャッシュ・アドバイザがホスト・システムのDataPumpダンプ・ファイルを分析するためには、その内容にアクセスできる必要があります。ただし、それらのファイルにはDataPumpにより権限が設定されているため、NFSはファイルにアクセスしたりftpを使用してファイルをリポジトリに転送することはできません。リポジトリ・システムからダンプ・ファイルにアクセスするには、ターゲット・システム上のファイルが存在する予定のディレクトリに、アクセス・コントロール・リスト(ACL)を設定します。
オペレーティング・システム・ルート・ユーザーとして、ファイル・システムに対するACLの設定を有効化します。
# mount -o remount,acl /dev/sda1
キャッシュ・アドバイザ・ユーザーのみがそのディレクトリの読取りおよび書込みができるように、ディレクトリに対する権限を変更します。次に、キャッシュ・アドバイザ・ユーザーおよびホスト・システム上のOracle Databaseサーバーを実行しているオペレーティング・システム・ユーザー(通常はoracle
ユーザー)に対して、読取り、書込みおよび実行を行うために、そのディレクトリおよびディレクトリに作成されるすべてのファイルに対してACLを設定します。Linuxシステムでは、オペレーティング・システムのsetfacl
コマンドを実行してACLを設定できます。
% chmod 700 /local/ca_usr/ca_dir % setfacl -m u:ca_usr:rwx /local/ca_usr/ca_dir % setfacl -m d:u:ca_usr:rwx /local/ca_usr/ca_dir % setfacl -m u:oracle:rwx /local/ca_usr/ca_dir % setfacl -m d:u:oracle:rwx /local/ca_usr/ca_dir
この項では、キャッシュ・アドバイザにより生成されるレポート・ページの例を示します。レポートは次のWebブラウザを使用して表示できます。
Firefox 3.6以上
Chrome 7以上
Safari 4以上
レポートを表示するには、レポート・ファイルのディレクトリにあるindex.htm
ファイルをWebブラウザから開きます。
ttCacheAdvisor
ユーティリティが実行されたときに-evalSqlPerf
オプションが指定されていた場合、レポートはターゲットOracle Databaseで実行されたSQL SELECT
文の平均応答時間を示します。また、ユーザーが指定したキャッシュ・サイズを持つTimesTenデータベースでこれらの文が実行されたときの平均応答時間も示します。TimesTenの完全なキャッシュ・サイズは、SQLワークロードによってアクセスされたすべてのオブジェクトをキャッシュするために必要であり、TimesTenがサポートできるTimesTenデータベースの最小サイズです。
ワークロードで実行されたSQL文は、ホーム・ページ上にあるワークロード内の文の数を示すSQL文列の下のリンクをクリックすることにより、表示できます。この場合は、「2/2」という意味の最初の2のリンクをクリックします。
個々のSQL文をクリックすれば、その文の応答時間やその他の統計値を表示できます。この例では、2番目の文のリンクをクリックしたときにSELECT
文に関する次の情報が表示されます。
キャッシュ・グループの名前をクリックすると、キャッシュ・グループとキャッシュ表の定義およびそのキャッシュ・グループを参照したSQL文を表示できます。この例では、CG1_USERSPECCACHE
リンクをクリックしたときに次のレポート・ページが表示されます。
ホーム・ページから「Configure an TimesTen Cache for your application」リンクをクリックすることで、実装スクリプトのテキストにアクセスできます。その後、次のページから「Implementation Script」リンクをクリックします。
次に、実装スクリプトの例を示します。
SHOW ERRORS; SET ECHO OFF; SET DEFINE ON; SET SERVEROUTPUT ON; PROMPT Welcome to the TimesTen CacheAdvisor (ttCacheAdvisor). PROMPT PROMPT ttCacheAdvisor generated this script to implement its recommendations. PROMPT The first step is to create the necessary TimesTen user accounts to PROMPT receive the recommended cache groups and associated indexes, views, PROMPT materialized views and sequences. This script will now prompt you for PROMPT the password for each account to be created. Be sure to use the same PROMPT password for each TimesTen user account as on Oracle. PROMPT PROMPT NOTE: If an error occurs or for any reason, you can abort this script at PROMPT any time by pressing the control and C keys (^C) simultaneously. PROMPT Sometimes it is necessary to press ^C multiple times followed by PROMPT pressing ENTER. ACCEPT ORAUSER_pwd CHAR PROMPT 'Enter user ORAUSER password (use same password as on Oracle)? 'HIDE ACCEPT ORAUSER_pwd2 CHAR PROMPT 'Confirm user ORAUSER password? ' HIDE COMMIT; EXEC createUser ('ORAUSER','&&ORAUSER_pwd','&&ORAUSER_pwd2'); COMMIT; DROP PROCEDURE createUser; ACCEPT answer CHAR PROMPT 'Press ENTER to continue, ^C to abort:' EXEC execImmediate ('CALL ttCacheStart'); EXEC execImmediate ('CALL ttRepStop'); EXEC execImmediate ('DROP CACHE GROUP CG1_USERSPECCACHE'); COMMIT; COMMIT; CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP CG1_USERSPECCACHE FROM ORAUSER.VPN_USERS ( VPN_ID NUMBER(5,0) NOT NULL, VPN_NB NUMBER(5,0) NOT NULL, DIRECTORY_NB CHAR(10 BYTE) NOT NULL, LAST_CALLING_PARTY CHAR(10 BYTE) NOT NULL, DESCR CHAR(100 BYTE) NOT NULL, PRIMARY KEY (VPN_ID, VPN_NB) ); COMMIT; LOAD CACHE GROUP CG1_USERSPECCACHE COMMIT EVERY 256 ROWS; COMMIT; CALL ttOptUpdateStats ('ORAUSER.VPN_USERS',1); COMMIT; COMMIT; COMMIT; EXEC execImmediate ('CALL ttRepStart'); COMMIT;
スクリプトの名前はttCacheAdvisor_
task-name_
timestamp.sql
であり、ttCacheAdvisor
ユーティリティが起動されたディレクトリに存在します。このスクリプトは、アプリケーションがアクセスしたOracle Databaseオブジェクトのキャッシュを実装するために使用されるTimesTenデータベースにオブジェクトを作成するために、ttIsql
ユーティリティにより実行できます。
% ttIsql -f ttCacheAdvisor_sampletask_20120531164101.sql "DSN=cacheadv;UID=cacheuser;OraclePWD=oracache"
ターゲットOracle Database (ワークロード収集)、リポジトリOracle DatabaseおよびTimesTenデータベース(クライアント)に関するデータベース情報およびシステム情報を取得するには、ホーム・ページから「Click here for information about the configuration that was used to generate this report」リンクをクリックします。
次の各タスクを実行して、ターゲットOracle Databaseに対して実行されたアプリケーション・ワークロードの評価が完了した後に、Oracle DatabaseおよびTimesTenシステムを元の状態に復元します。
TimesTenデータベース・システムのオペレーティング・システム・シェルからSQL*Plusを起動し、sys
ユーザーとしてターゲットOracle Databaseに接続します。その後で、SQL*Plusを使用して次のようにターゲットOracle Databaseおよびそのホスト・システムをクリーンアップします。
timesten
ユーザー、oratt
ターゲットOracle Databaseユーザー(ターゲット・データベースの構成前にこのユーザーが存在しなかったため、作成した場合)およびcacheuser
キャッシュ管理ユーザーを削除します。
% sqlplus sys@targetdb as sysdba
Enter password: password
SQL> DROP USER timesten CASCADE;
SQL> DROP USER oratt CASCADE;
SQL> DROP USER cacheuser CASCADE;
注意: DROP USER 文のCASCADE を指定すると、ユーザーそのものが削除される前にすべてのオブジェクト(そのユーザーが所有する表など)が削除されます。 |
TT_CACHE_ADMIN_ROLE
ロール、TTCA_TARGET_ROLE
ロールおよびTTCA_DIRECTORY
ディレクトリ・オブジェクトを削除します。
SQL> DROP ROLE TT_CACHE_ADMIN_ROLE; SQL> DROP ROLE TTCA_TARGET_ROLE; SQL> DROP DIRECTORY TTCA_DIRECTORY; SQL> exit
timesten
ユーザーおよびキャッシュ管理ユーザーが使用するcachetblsp
デフォルト表領域(表領域の内容およびそのデータ・ファイルを含む)を削除します。SQL*Plusセッションを終了します。
SQL> DROP TABLESPACE cachetblsp INCLUDING CONTENTS AND DATAFILES; SQL> exit
注意: 前述の手順では、キャッシュ・アドバイザによりワークロード用に作成されたスキーマは削除されません。このスキーマを別のアプリケーション・ワークロードで使用できるように保持して、同じスキーマを使用する場合、またはユーザーおよび表領域の再作成後に同じワークロードを再実行する場合に使用できます。保持しない場合は、作成されたスキーマを手動で削除するか、またはそのデータベースを破棄する(ターゲット・データベースがテスト・データベースの場合)ことができます。 |
リポジトリが別の割当て済Oracle Databaseに存在する場合は、リポジトリ・データベースを削除します。
リポジトリがターゲットと同じOracle Databaseに存在する場合は、TimesTenデータベース・システムのオペレーティング・システム・シェルからSQL*Plusを起動し、sys
ユーザーとしてリポジトリOracle Databaseに接続します。SQL*Plusを次のように使用して、リポジトリOracle Databaseおよびそのホスト・システムをクリーンアップします。
ttcacheadvisor
ユーザーを削除します(ターゲットOracle Databaseで実行されるSQLワークロードの分析に使用されるリポジトリ・データベース内のオブジェクトの所有者です)。
% sqlplus sys@repositorydb as sysdba
Enter password: password
SQL> DROP USER ttcacheadvisor CASCADE;
TTCA_DIRECTORY
ディレクトリ・オブジェクトを削除します。
SQL> DROP DIRECTORY TTCA_DIRECTORY;
ttCacheAdvisor
ユーザーが使用したttca_ts
表領域を、その表領域の内容と、そのデータ・ファイルを含めて削除します。SQL*Plusセッションを終了します。
SQL> DROP TABLESPACE ttca_ts INCLUDING CONTENTS AND DATAFILES; SQL> exit
ttIsql
ユーティリティを開始して、cacheadv
DSNに、TimesTenインスタンス管理者ユーザーとして接続します。TimesTenデータベースをクリーンアップするには、次の手順を実行します。
ttIsql
を使用して、DROP ANY TABLE
権限をキャッシュ・マネージャ・ユーザーに付与し、このユーザーがキャッシュ・グループを削除するときに基礎となるキャッシュ表を削除できるようにします。その後、ttIsql
セッションを終了します。
% ttIsql cacheadv Command> GRANT DROP ANY TABLE TO cacheuser; Command> exit
ttIsql
ユーティリティを起動して、cacheadv
DSNにキャッシュ・マネージャ・ユーザーとして接続します。TimesTenキャッシュ・マネージャ・ユーザーcacheuser
のパスワードはttcache
です。ttIsql
を使用してttRepStop
組込みプロシージャをコールし、TimesTenデータベースのレプリケーション・エージェントを停止します。cg1_userspeccache
AWTキャッシュ・グループを削除します。ttCacheStop
組込みプロシージャをコールして、TimesTenデータベースのキャッシュ・エージェントを停止します。このttIsql
セッションを終了します。
% ttIsql "DSN=cacheadv;UID=cacheuser;OraclePWD=oracache"
Enter password for 'cacheuser': password
Command> call ttRepStop;
Command> DROP CACHE GROUP cg1_userspeccache;
Command> call ttCacheStop;
Command> exit
ttDestroy
ユーティリティを使用してcacheadv
DSNに接続し、TimesTenデータベースを破棄します。
% ttDestroy cacheadv