oracle database in-memory advisor database in-memory advisor 5 oracle corporation発行「oracle...

28
Oracle ホワイト・ペーパー 2015 7 Oracle Database In-Memory Advisor

Upload: vuonganh

Post on 28-Jul-2018

276 views

Category:

Documents


1 download

TRANSCRIPT

Oracle ホワイト・ペーパー 2015 年 7 月

Oracle Database In-Memory Advisor

Oracle Database In-Memory Advisor

2

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

免責事項 この文書では、オラクル社の一般的な製品の方向性に関する概要を説明しています。この文書の主たる目

的は情報提供であり、いかなる契約にも組み込むことはできません。資料、コードまたは機能を提供する

ものでもなく、購入の際にその根拠として使用されるものでもありません。ここで記述される Oracle 製品

に関する特徴や機能の開発、リリース、実現時期については、オラクル社の判断に委ねられます。

Oracle Database In-Memory Advisor

3

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

目次

対象読者 ......................................................................................................................................... 4

はじめに ......................................................................................................................................... 4

In-Memory Advisor について .......................................................................................................... 5

Advisor のインストール ................................................................................................................. 5

サポートされるバージョンおよびライセンス .......................................................................... 5

インストール・プロセス .......................................................................................................... 5

Advisor の実行 ................................................................................................................................ 8

Advisor の出力 ................................................................................................................................ 9

AWR データに対する Advisor の別のデータベースからの実行 .................................................. 10

Advisor のパラメータ設定の調整 ................................................................................................. 10

Advisor の削除 .............................................................................................................................. 10

PL/SQL インタフェース – DBMS_INMEMORY_ADVISOR ....................................................... 11

CREATE_TASK プロシージャ ................................................................................................ 11

ADD_SQLSET プロシージャ .................................................................................................. 12

ADD_STATISTICS プロシージャ ............................................................................................ 13

ADD_HIST_STATISTICS プロシージャ ................................................................................. 14

ASH_SQL_COVERAGE_PCT 関数 ........................................................................................ 15

EXECUTE_TASK プロシージャ ............................................................................................. 15

GENERATE_RECOMMENDATIONS プロシージャ ............................................................... 16

DROP_TASK プロシージャ .................................................................................................... 18

SET_PARAMETER プロシージャ .......................................................................................... 18

GET_PARAMETER 関数 ........................................................................................................ 19

RESET_PARAMETERS プロシージャ ................................................................................... 20

付録 1: Advisor を実行するサンプル・スクリプト ...................................................................... 21

付録 2: AWR Augment データ ...................................................................................................... 22

Augment 表 ............................................................................................................................. 24

付録 3: Advisor のパラメータ ....................................................................................................... 26

Oracle Database In-Memory Advisor

4

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

対象読者

DBA またはパフォーマンス・スペシャリストの観点で Oracle Database テクノロジーを実際に使

用した経験がある方を対象としています。

はじめに

Oracle Database 12.1.0.2 に、単一のデータベースで分析とトランザクションの混合ワークロードを効率的に

サポートする Oracle Database In-Memory が導入されました。Database In-Memory で構成された Oracle

Database は、トランザクションのパフォーマンスを最適化するとともに、リアルタイム分析とレポートを

同時にサポートします。これは、既存の Oracle のロー(行)型フォーマット(OLTP 処理用)と新しいピュ

ア・インメモリのカラム(列)型フォーマット(分析処理用に最適化)の両方でデータを保持できるよう

にする、独自の「デュアル・フォーマット」アーキテクチャにより実現されています。また、データ・マー

トとデータ・ウェアハウスの両方でさらに多くの非定型分析を実行できるため、エンドユーザーは問合せ

を同時に複数実行できるようになりました。

Oracle Database In-Memory の詳細は、Oracle ホワイト・ペーパー『Oracle Database In-Memory』および

oracle.com の Oracle Database In-Memory のページを参照してください。

このホワイト・ペーパーでは、Oracle Database In-Memory Advisor について説明します。Advisor は、ワーク

ロードを分析し、Oracle Database In-Memory の領域サイズを見積もり、In-Memory 領域へ配置することによ

り最大のメリットを発揮するオブジェクトについて、具体的な推奨値を提示します。

Oracle Database In-Memory Advisor

5

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

In-Memory Advisor について

Oracle Database In-Memory の目的は、データベースの分析処理を最適化することです。In-Memory Advisor

は、データベースで実行される分析処理のワークロードを分析し、このワークロードを最適化することに

よって見込まれるデータベース全体のメリットを見積もります。

トランザクション処理に関する Database In-Memory のメリットは、分析処理に使用する索引の削除により、

索引を維持するためのトランザクションのオーバーヘッドが減少する点です。

In-Memory Advisor は、SQL 文の実行計画のカーディナリティ、アクティブ・セッション履歴(ASH)、パ

ラレル問合せの使用、その他の統計情報に基づき、分析処理内容を詳細に分析します。

In-Memory Advisor は、統計およびヒューリスティックによって定義されている圧縮係数をベースに、オブ

ジェクトのインメモリ・サイズを見積もります。

In-Memory Advisor は、次の点に基づいて、分析処理のパフォーマンス改善度を見積もります。

• ユーザーI/O の待機、クラスタ転送の待機、バッファ・キャッシュ・ラッチ待機などの解消

• 特定の圧縮タイプと関連する特定の問合せ処理のメリット

• 特定の圧縮タイプごとの圧縮解凍コスト・ヒューリスティック

• SQL 文の実行計画の選択性、結果セットの列数など

Advisor は推奨事項レポートを生成します。このレポートには、いくつかのインメモリ・サイズのパターン

が各パフォーマンス改善率とともにリストされます。また、インメモリ列ストアに配置すべきオブジェク

トとこれらのオブジェクトのインメモリ領域内のサイズ、圧縮率が示されます。

Advisor は、インメモリに配置するオブジェクトを定義変更するための SQLPlus スクリプトも生成します。

この出力の詳細は、「Advisor の出力」の項を参照してください。

Advisor のインストール

サポートされるバージョンおよびライセンス

Advisor は、11.2.0.3 バージョン以上の Oracle Database にインストールできます。Advisor は、Oracle Tuning Pack の一部としてライセンスされます。詳細は、「ライセンス・ガイド」を参照してください。

インストール・プロセス

Advisor は、マルチテナントのデータベース、またはマルチテナントではないデータベースにもインストー

ルできます。

Advisor をマルチテナント・データベースにインストールする場合は、ルートである CDB$ROOT にインス

トール、またはプラガブル・データベース(PDB)にインストールします。

Advisor をプラガブル・データベース(PDB)またはマルチテナントではないデータベースにインストール

する場合は、インストール手順で Advisor オブジェクトを格納するためのユーザーIMADVISOR が作成され

ます。Advisor をマルチテナント・データベースのルート(CDB$ROOT)にインストールすると、ユーザー

名 C##IMADVISOR が作成されます。

Oracle Database In-Memory Advisor

6

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

次に、マルチテナントではないデータベースで Advisor をインストールする手順を説明します。PDB での

インストールも同様です。Advisor をマルチテナント・データベースの CDB$ROOT に接続すると、次に示

すプロンプトに、C##IMADVISOR というユーザー名が反映されます。

Advisor をデータベースにインストールする手順(ユーザー入力は、太字と黄色で強調表示)

$ unzip imadvisor.zip $ sqlplus sys/<password> as sysdba SQL*Plus: Release 12.1.0.2.0 Production Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL> @instimadv Welcome to the Oracle Database In-Memory Advisor (DBMS_INMEMORY_ADVISOR) installation. DBMS_INMEMORY_ADVISOR uses Active Session History (ASH), Automatic Workload Repository (AWR) and optionally SQL Tuning Sets (STS) to determine which tables, partitions and subpartitions to place In Memory for optimized analytics processing performance. DBMS_INMEMORY_ADVISOR produces a recommendation report and a SQLPlus script to implement its recommendations. This installation script will create user IMADVISOR and add object definitions to the schema including the DBMS_INMEMORY_ADVISOR package. This installation script creates user IMADVISOR using the IDENTIFIED BY password method. If you prefer to use either the IDENTIFIED EXTERNALLY or IDENTIFIED GLOBALLY method, abort this installation by pressing ̂ C. Then create user IMADVISOR using your preferred method. Add no objects to the IMADVISOR schema. Then run this installation script again. These actions will be taken on the database to which you are currently connected. Please enter the connection ID for the current database? inst1 This installation script creates a new Oracle database user and schema named IMADVISOR for the operation of DBMS_INMEMORY_ADVISOR... Please enter the password for user IMADVISOR? <パスワードは、入力しても表示されません。>

For confirmation, please re-enter the password for user IMADVISOR <パスワードは、入力しても表示されません。>

Oracle Database In-Memory Advisor

7

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

Available tablespaces: TABLESPACE_NAME ------------------------------ SYSAUX SYSEXT SYSTEM TEMP TS_DATA USERS Please enter the default tablespace name for user IMADVISOR? system Please enter the temporary tablespace name for user IMADVISOR? temp The In-Memory Advisor uses the Oracle directory object IMADVISOR_DIRECTORY by default. If you wish to create the IMADVISOR_DIRECTORY object, please enter an OS host directory path for the IMADVISOR_DIRECTORY object. If not, please press ENTER to continue. ? /usr/users/oracle/imadvisor_directory Connecting to IMADVISOR @ inst1.. Enter password: <パスワードは、入力しても表示されません。> Connected. DBMS_INMEMORY_ADVISOR installation successful. Users who will use the DBMS_INMEMORY_ADVISOR package must be GRANTed EXECUTE on the DBMS_INMEMORY_ADVISOR package. Please enter a comma separated list of Oracle Database users to whom you wish EXECUTE on the DBMS_INMEMORY_ADVISOR package to be GRANTed? scott GRANT EXECUTE ON dbms_inmemory_advisor TO scott While logged in as IMADVISOR or with sufficient privileges, you can GRANT EXECUTE ON DBMS_INMEMORY_ADVISOR to additional users as needed. DBMS_INMEMORY_ADVISOR installation and setup complete. Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

Oracle Database In-Memory Advisor

8

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

Advisor の実行

Advisor の各コンポーネントの PL/SQL インタフェースについては、後述の説明を参照してください。付録

1 に使用するデータベースで Advisor の実行に使用できるサンプル・スクリプトを示します。このサンプル・

スクリプトは、以降に説明する PL/SQL プロシージャで使用可能な追加機能が活用できるように変更する

ことができます。

マルチテナント・データベースのルート CDB$ROOT から Advisor を実行するには、CREATE_TASK プロ

シージャに PDB_NAME 値を指定する必要があります。CREATE_TASK プロシージャについては、後述し

ます。

Advisor を実行し、レポートを作成するスクリプトも imadvisor.zipファイルに含まれています。これ

は、「imadvisor_analyze_and_report.sql」というスクリプトです。CDB$ROOT から実行す

ると、PDB 名を入力するように要求されます。

付属のスクリプトを使用して Advisor を実行するには、DBMS_INMEMORY_ADVISOR パッケージの実行

権限を持つユーザーとして SQLPLUS を起動します。

$ sqlplus sys/<password> as sysdba SQL> @imadvisor_analyze_and_report Specify the IM task name The IM Advisor generates a report as imadvisor_<taskname>.html file in the current working directory The sql file is generated as imadvisor_sql_<taskname>.sql Enter value for im_task_name: IMADVISOR1 IM Task name Specified: IMADVISOR1 <マルチテナント・データベースの CDB$ROOTから、このスクリプトを実行する場合は、次のプロントの

みが表示されます。>

Enter value for pdb_name: PDB1 Enter begin time for report: -- Valid input formats: -- To specify absolute begin time: -- [MM/DD[/YY]] HH24:MI[:SS] -- Examples: 02/23/03 14:30:15 -- 02/23 14:30:15 -- 14:30:15 -- 14:30 -- To specify relative begin time: (start with '-' sign) -- -[HH24:]MI -- Examples: -1:15 (SYSDATE - 1 Hr 15 Mins) -- -25 (SYSDATE - 25 Mins) Enter value for begin_time: -60 Enter duration in minutes starting from begin time:

Oracle Database In-Memory Advisor

9

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

Defaults to SYSDATE - begin_time Enter value for duration: <ENTER> Using <YYYY-MMM-DD> 13:57:35.000000000 as report begin time Using <YYYY-MM-DD> 14:17:35.000000000 as report end time IM Advisor: Adding Statistics.. IMADVISOR: Finished Adding Statistics IMADVISOR: Finished Executing the task IM Advisor: Generating Recommendations.. imadvisor_IMADVISOR1.html imadvisor_sql_IMADVISOR1.html imadvisor_object_IMADVISOR1.html imadvisor_IMADVISOR1.sql Enter value for recommendation_directory: /scratch/output Placing recommendation files in directory /scratch/output IM Advisor generated report in imadvisor_IMADVISOR1.html IM Advisor generated DDL script in imadvisor_IMADVISOR1.sql SQL>

前述の例では、出力ファイルは生成されたレポートおよび生成された DDL スクリプトとして表示されます。

出力の内容は、次の項で説明します。

Advisor の出力

Advisor では、DBMS_INMEMORY_ADVISOR.GENERATE_RECOMMENDATIONS プロシージャを使用し

て出力が生成されます。このプロシージャでは、次の出力が生成されます。

imadvisor_TASKNAME.html

Advisor のサマリー・レポートの名前は、「taskname」という Advisor に指定したタスク名を含む

「imadvisor_taskname.html」です。

このレポートには、複数のセクションがあります。

上部は、レポートで分析されたデータベースの合計時間のサマリーで、分析処理に起因するデータベース

時間の割合が示されます。

「In-Memory Sizes」というラベルの付いたセクションには、使用可能な In-Memory のサイズを示す表と、

In-Memory の各サイズからの予想される効果が記載されています。

このセクションの下には、メモリに含むオブジェクトの推奨事項を概要表があります。ここには、推奨さ

れる圧縮タイプと予想される効果も提示されます。

レポートの下部には、Advisor を実行したデータベースについての情報の表があります。

メインのレポートは、インメモリ化が推奨されるすべてのオブジェクトを示すページにリンクされていま

す。このページには、推奨される圧縮タイプと予想されるメリットが示されています。

Oracle Database In-Memory Advisor

10

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

imadvisor_TASKNAME.sql

html 形式のレポートに加え、ターゲット・データベースで実行できる SQL を含むスクリプト・ファイルが、

推奨される圧縮タイプとともに生成されます。このスクリプトは、In-Memory に含むことが推奨されるオ

ブジェクトの定義変更に使用します。必要に応じて、DDL を変更して、デフォルト以外のパラメータの詳

細なチューニングや別の圧縮方式を選択することができます。

AWR データに対する Advisor の別のデータベースからの実行

$ORACLE_HOME/rdbms/admin/awrextr.sql スクリプトを使用して、データベースから自動ワークロード・リ

ポジトリ(AWR)データを取得できます。この操作は、Data Pump のダンプ・ファイルの中に AWR デー

タを取得します。その後、admin/awrload.sql スクリプトを使用してこのデータを別のデータベースにロード

することができます。1 つのデータベースから AWR データを抽出し、別のデータベースにロードする方法

の詳細は、『Oracle Database パフォーマンス・チューニング・ガイド』の自動ワークロード・リポジトリ・

データの転送の項を参照してください。

ロードされた AWR データには、Advisor に必要ないくつかの情報がありません。ロードされた AWR デー

タとともに Advisor を使用するには、Advisor の AWR 補完機能を使用して AWR データを拡張する必要が

あります。AWR 補完データを取得するには、$ORACLE_HOME/rdbms/admin/awrextr.sql スクリプトを使用

したデータベースで、imadvisor_awr_augment_export.sql スクリプトを使用します。

$ORACLE_HOME/rdbms/admin/awrextr.sql スクリプトで使用した時間枠と同じものを

imadvisor_awr_augment_export.sql でも使用し、可能であれば両スクリプトを続けて実行するのが最も効果的

な方法です。augment データをロードするには、$ORACLE_HOME/rdbms/admin/awrload.sql スクリプトを使

用するデータベースで、imadvisor_awr_augment_import.sql スクリプトを使用できます。AWR 補完データを

ロードしたあと、IMADVISOR.IMADVISOR_AWR_AUGMENTS ビューでどのワークロードが拡張されたか

問い合せることができます。

AWR 補完データに含まれるデータの詳細は、付録 2 を参照してください。

Advisor のパラメータ設定の調整

Advisor では、インメモリ化によるパフォーマンスを見積もるためにいくつかのヒューリスティックパラ

メータ(適切な推奨値を算出するための閾値)を利用し、最小サイズを基準にしたインメモリの有効性を

出力します。パラメータ設定を取得し変更できるようにするインタフェースについては、以降に説明され

る GET_PARAMETER, SET_PARAMETER PL/SQL パッケージを参照してください。付録 3:Advisor のパラ

メータの表には、使用できるパラメータ設定がリストされています。

Advisor の削除

データベースから Advisor を削除する場合は、DBA 権限で次の文を実行します。 drop user imadvisor cascade;

マルチテナント・データベースのルート CDB$ROOT から Advisor を削除するには、次の文を実行します。 drop user c##imadvisor cascade;

Oracle Database In-Memory Advisor

11

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

PL/SQL インタフェース – DBMS_INMEMORY_ADVISOR

この項では、Oracle Database In-Memory Advisor の各コンポーネントの PL/SQL インタフェースのプロシー

ジャおよび関数について説明します。

CREATE_TASK プロシージャ

CREATE_TASK は、DBMS_INMEMORY_ADVISOR タスクを作成します。

構文:

PROCEDURE create_task (

task_name IN VARCHAR2,

task_desc IN VARCHAR2 := NULL,

dbid IN NUMBER := NULL,

instance_number IN NUMBER := NULL);

パラメータ:

パラメータ 説明

task_name DBMS_INMEMORY_ADVISOR タスクの一意の名前には、30 文字まで使用できます。

task_desc オプションのタスクの説明。説明には 256 文字まで使用できます。

dbid 統計情報の取得元であるデータベースの識別子(SID)。デフォルト、または NULLを指定した場合の統計情報は、CREATE_TASK の実行者が接続されるローカル・データベースから取得されます。

また、(たとえば、using the admin/awrload.sql スクリプトを使用して)自動ワークロード・リポジトリ(AWR)データがローカル・データベースにロードされるデータベースの識別子を指定することもできます。その場合は、imadvisor_awr_augment_import.sql スクリプトを使用して、AWR データを拡張する必要もあります。詳細は、「AWR データに対する Advisor の別のデータベースからの実行」を参照してください。

instance_number 統計情報の取得元であるデータベースのインスタンス番号。デフォルト、またはローカル・データベースで NULL を指定した場合の統計情報は、CREATE_TASK の実行者が接続されるインスタンスから取得されます。AWR のロード元であるデータベースの識別子(dbid)を指定する場合、imadvisor_awr_augment_export.sq スクリプトを使用して AWR augment を実行したインスタンスが、デフォルトのデータベース・インスタンスになります。

pdb_name インメモリに関する推奨事項が提示される PDB の名前。このパラメータは、マルチテナント(CDB)データベースにのみ適用されます。

現在のデータベースのワークロードに対してこのプロシージャを実行する場合(デフォルトの DBID を使用)

CDB ルートから実行する場合は、pdb_name を指定する必要があります。このパラメータは、現在のマルチテナント・データベースに含まれるいずれかの PDB と一致する必要があります。

PDB から実行する場合、デフォルトで接続された PDB の名前が pdb_nameに設定されます。pdb_name を指定する場合、接続された PDB の名前と一致する必要があります。

AWR 補完データのインポートに対して実行する場合(このインポートに対応するDBID を使用)

マルチテナントではないデータベースからの AWR 補完データのエクスポートは、非 CDB または CDB$ROOT にインポートできます。

Oracle Database In-Memory Advisor

12

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

CDB$ROOT からの AWR 補完データのエクスポートは、CDB$ROOT またはマルチテナントではないデータベースにインポートできます。

AWR 補完データのワークロードの PDB へのエクスポートまたはインポートは実行できません。

マルチテナントではないデータベースからの AWR 補完データのインポートでは、pdb_name は指定しないでください。

CDB ルートからの AWR 補完データのインポートでは、pdb_name を指定する必要があります。このパラメータは、エクスポート元であるマルチテナント・データベースに含まれるいずれかのPDBと一致する必要があります。

例:

EXEC dbms_inmemory_advisor.create_task ('MYTASK');

ADD_SQLSET プロシージャ

ADD_SQLSET は、取得した SQL チューニング・セットを上記で指定したタスクに追加します。

ADD_STATISTICS は自動ワークロード・リポジトリ(AWR)から SQL ワークロードを取得するため、SQL

チューニング・セットの追加指定は常にオプション指定になります。ただし、AWR SQL ワークロードには、

最もホットな SQL 文(最大量のリソースを使用する SQL 文)のみが含まれています。したがって、AWR

の SQL ワークロードから多数の SQL 文が削除される可能性があります。SQL ワークロードの大部分が

AWR の SQL ワークロードから削除されている場合でも、SQL チューニング・セットを追加すると、より

正確な結果を得ることができます。この状況が発生する可能性が最も高いのは、個別の SQL 文が多数ある

場合、または非定型クエリの場合です。

ADD_STATISTICS の実行後、ASH_SQL_COVERAGE_PCT をコールし、最初からやり直して、広範囲の SQL

ワークロードを処理する SQL チューニング・セットを追加することが必要かどうかを判断できます。

構文:

PROCEDURE add_sqlset (

task_name IN VARCHAR2,

sqlset_name IN VARCHAR2,

sqlset_owner IN VARCHAR2 := NULL);

パラメータ:

パラメータ 説明

task_name 統計情報の追加先となるタスクの名前。

sqlset_name 追加する SQL チューニング・セットの名前。

sqlset_owner 追加する SQL チューニング・セットの所有者の名前。

使用上の注意:

1. このプロシージャの実行前に、CREATE_TASK プロシージャを実行する必要があります。

2. ADD_SQLSET プロシージャは任意で実行してください。ADD_SQLSET は、ADD_STATISTICS の

前に実行する必要があります。

Oracle Database In-Memory Advisor

13

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

3. DBMS_INMEMORY_ADVISOR.ADD_STATISTICS は、自動ワークロード・リポジトリ(AWR)

から SQL データを取得します。したがって、

DBMS_SQLTUNE.SELECT_WORKLOAD_REPOSITORY を使用して AWR から SQL チューニン

グ・セットを追加することはお薦めしません。かわりに、

DBMS_SQLTUNE.CAPTURE_CURSOR_CACHE_SQLSET または他の手段を使用して、広範囲の

SQL ワークロードを含む SQL チューニング・セットを作成します。

例:

EXEC dbms_inmemory_advisor.add_sqlset ('MYTASK', 'MYSQLSET', USER);

ADD_STATISTICS プロシージャ

ADD_ STATISTICS は、指定された取得時間帯から ASH や AWR および他の統計を前述で指定されたタス

クに追加します。DBMS_INMEMORY_ADVISOR.EXECUTE_TASK を使用する前に、1 つの統計時間帯を

追加する必要があります。

構文:

PROCEDURE add_statistics (

task_name IN VARCHAR2,

capture_window_start IN TIMESTAMP := NULL,

capture_window_end IN TIMESTAMP := NULL);

パラメータ:

パラメータ 説明

task_name 統計情報の追加先となるタスクの名前。

capture_window_start タスクに追加する ASH および AWR 統計の取得時間帯の開始日時。デフォルト、または NULL を指定した場合の時間帯は使用できる日付の最も古い統計で開始します。

capture_window_end タスクに追加する ASH および AWR 統計の取得時間帯の終了日時。デフォルト、または NULL を指定した場合の時間帯は使用できる日付の最も新しい統計で終了します。

使用上の注意:

1. このプロシージャの実行前に、CREATE_TASK プロシージャを実行する必要があります。

2. ADD_SQLSET プロシージャは任意で実行してください。ADD_SQLSET は、ADD_STATISTICS の

前に実行する必要があります。

3. EXECUTE_TASK を実行する前に、ADD_STATISTICS または ADD_HIST_STATISTICS のいずれ

かを使用して、統計を一度追加する必要があります。ADD_STATISTICS は、タイムスタンプを使

用して取得時間帯を定義します。ADD_HIST_STATISTICS は、AWR スナップショット識別子を使

用して、取得時間帯を定義します。

例:

EXEC dbms_inmemory_advisor.add_statistics ('MYTASK', SYSTIMESTAMP-60, SYSTIMESTAMP);

Oracle Database In-Memory Advisor

14

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

ADD_HIST_STATISTICS プロシージャ

ADD_ HIST_STATISTICS は、指定された取得時間帯から ASH や AWR および他の統計を指定されたタス

クに追加します。DBMS_INMEMORY_ADVISOR.EXECUTE_TASK を使用する前に、1 つの統計時間帯を

追加する必要があります。

構文:

PROCEDURE add_hist_statistics (

task_name IN VARCHAR2,

start_snap_id IN NUMBER := NULL,

end_snap_id IN NUMBER := NULL);

パラメータ:

パラメータ 説明

task_name 統計情報の追加先となるタスクの名前。

start _snap_id タスクに追加する ASH および AWR 統計の取得時間帯の開始 AWR スナップショット識別子。デフォルト、または NULL を指定した場合の時間帯は使用できる日付の最も古い統計で開始します。

end_snap_id タスクに追加する ASH および AWR 統計の取得時間帯の終了 AWR スナップショット識別子。デフォルト、または NULL を指定した場合の時間帯は使用できる日付の最も新しい統計で終了します。

使用上の注意:

1. このプロシージャの実行前に、CREATE_TASK プロシージャを実行する必要があります。

2. ADD_SQLSET プロシージャは任意で実行してください。ADD_SQLSET は、

ADD_HIST_STATISTICS の前に実行する必要があります。

3. EXECUTE_TASK の実行前に、ADD_STATISTICS または ADD_HIST_STATISTICS のいずれかを

使用して、統計を 1 回で追加する必要があります。ADD_STATISTICS は、タイムスタンプを使用

して取得時間帯を定義します。ADD_HIST_STATISTICS は、AWR スナップショット識別子を使用

して、取得時間帯を定義します。

4. AWR スナップショット識別子および対応付け時間の情報は、DBA_HIST_SNAPSHOT で使用でき

ます。

例:

EXEC dbms_inmemory_advisor.add_hist_statistics ('MYTASK', 177, 282);

Oracle Database In-Memory Advisor

15

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

ASH_SQL_COVERAGE_PCT 関数

ASH_SQL_COVERAGE_PCT は、SQL 統計でカバーされる ASH サンプルの割合(0~100%)を返します。

50%以下の場合は、SQL チューニング・セットを追加して、より多くの SQL 統計を使用してやり直すこと

ができます。SQL チューニング・セットがすでに追加されている場合は、より長い取得時間帯を使用して

処理をやり直すことができます。

構文:

FUNCTION ash_sql_coverage_pct (

task_name IN VARCHAR2) RETURN NUMBER;

パラメータ:

パラメータ 説明

task_name DBMS_INMEMORY_ADVISOR タスクの一意の名前は、30 文字まで使用できます。

戻り値: SQL 統計でカバーされる ASH サンプルの割合(0~100%)。

EXECUTE_TASK プロシージャ

EXECUTE_TASK は、指定されたタスクに追加された、使用可能なデータおよび統計を分析します。

構文:

PROCEDURE execute_task (

task_name IN VARCHAR2);

パラメータ:

パラメータ 説明

task_name 分析するタスクの名前。

使用上の注意:

このプロシージャの実行前に、CREATE_TASK プロシージャおよび ADD_STATISTICS プロシージャを

実行する必要があります。

例:

EXEC dbms_inmemory_advisor.execute_task ('MYTASK');

Oracle Database In-Memory Advisor

16

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

GENERATE_RECOMMENDATIONS プロシージャ

指定されたタスクの分析に基づき、複数の出力ファイルを生成します。

1. 複数のファイルが含まれた html 形式の推奨事項のレポート

2. DDL コマンドを使用して推奨事項を実装する SQLPlus スクリプト

構文:

PROCEDURE generate_recommendations (

task_name IN VARCHAR2,

directory_name IN VARCHAR2 := ‘IMADVISOR_DIRECTORY’,

inmemory_size IN NUMBER := NULL,

single_page_report IN BOOLEAN := FALSE);

パラメータ:

パラメータ 説明

task_name 推奨事項を生成するタスクの名前。

directory_name 推奨事項ファイルの配置に使用するOracleディレクトリ・オブジェクトの名前。Oracle ディレクトリ・オブジェクトは、データベースからデータベース・サーバー・ホスト上のディレクトリへのポータルを定義します。

デフォルトは、IMADVISOR_DIRECTORY です。ディレクトリ・オブジェクトIMADVISOR_DIRECTORY は、In-Memory Advisor のインストール時に作成することができます。

NULL を指定した場合、推奨事項はデータベース・サーバー・ファイルに配置されません。推奨事項は、常に In-Memory Advisor のタスク・データに格納されます。imadvisor_fetch_recommendations.sql スクリプトを使用して、推奨事項を In-Memory Advisor のタスク・データからクライアント・ディレクトリのファイルに転送する方法は、以降の説明を参照してください。

inmemory_size インメモリ・ストレージに使用するサイズ(単位はバイト)。Oracle Database In-Memory Advisor は、SGA メモリの 2 倍のサイズをデフォルトで使用します。生成されたレポートの先頭ページには、最も適したインメモリ・サイズの選択に役立つ情報が含まれています。そのため、デフォルトのインメモリ・サイズを使用して、レポートを生成することができます。別のインメモリ・サイズを使用する場合は、再度 GENERATE_RECOMMENDATIONS をコールし、使用したいインメモリ・サイズを指定します。

single_page_report TRUE に設定すると、レポートは 1 つのファイルとして生成されます。

使用上の注意:

1. このプロシージャの実行前に、CREATE_TASK プロシージャおよび EXECUTE_TASK プロシー

ジャを実行する必要があります。さらに、このプロシージャの実行前に、ADD_STATISTICS プロ

シージャまたは ADD_HIST_STATISTICS プロシージャも実行する必要があります。

2. directory_name パラメータを使用して、推奨事項ファイルをデータベース・サーバーのディレクト

リに配置する、または GENERATE_RECOMMENDATIONS の実行後に、

imadvisor_fetch_recommendations.sql スクリプトを使用して推奨事項をフェッチし、現在の作業ディ

レクトリに書き込むことができます。後者の実行には、クライアントの現在の作業ディレクトリ

への書込み権限が必要です。

Oracle Database In-Memory Advisor

17

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

3. 推奨事項レポート・ファイルの名前には、次の形式を使用します。

imadvisor_*<task_name>.html

推奨事項を実装するスクリプトの名前

imadvisor_<task_name>.sql

4. 次に示す元の GENERATE_RECOMMENDATIONS インタフェースは非推奨です。

PROCEDURE generate_recommendations (

task_name IN VARCHAR2,

html_top_page OUT CLOB,

html_sql_benefit OUT CLOB,

html_object_benefit OUT CLOB,

sqlplus_ddl_script OUT CLOB,

inmemory_size IN NUMBER := NULL);

非推奨のインタフェースは引き続きサポートされますが、まもなく削除されます。

さらに、現行のインタフェースとは異なり、非推奨のインタフェースを使用する場合、作成され

る推奨事項は In-Memory Advisor のタスク・データに格納されません。

例 1:

-- Place the recommendations in the current working directory on the -- client. EXEC dbms_inmemory_advisor.generate_recommendations ('MYTASK', NULL, 50000000000); @imadvisor_fetch_recommendations Enter value for im_task_name: MYTASK HOST firefox imadvisor_MYTASK.html @imadvisor_MYTASK.sql

例 2:

-- Place the recommendations in directory /scratch/my_oracle_dir on -- database server host orasvr. For this to work, /net/orasvr must -- be NFS mounted on the client host and directory /scratch/my_oracle_dir -- must be created on the database server host with write access to -- the database server and read access to the client user. CREATE DIRECTORY my_directory ‘/scratch/my_oracle_dir/’; EXEC dbms_inmemory_advisor.generate_recommendations ('MYTASK', ‘my_directory’, 50000000000); HOST firefox /net/orasvr/scratch/my_oracle_dir/imadvisor_MYTASK.html @/net/orasvr/scratch/my_oracle_dir/imadvisor_MYTASK.sql

Oracle Database In-Memory Advisor

18

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

DROP_TASK プロシージャ

DROP_TASK は、DBMS_INMEMORY_ADVISOR タスクを削除します。

構文:

PROCEDURE drop_task (

task_name IN VARCHAR2,

force IN BOOLEAN := FALSE);

パラメータ:

パラメータ 説明

task_name DBMS_INMEMORY_ADVISOR の一意のタスク名です。30 文字まで使用できます。

force デフォルトでは、drop_task はアクティブなタスクを削除しません。しかしながら、タスクがクラッシュした場合には、そのタスクがアクティブな状態で残ってしまいます。クラッシュしたタスクを削除するには、FORCE=>TRUE を指定します。

例: EXEC dbms_inmemory_advisor.drop_task ('MYTASK');

SET_PARAMETER プロシージャ

アドバイザのパラメータを設定します。使用可能なパラメータについては、付録 3 で説明します。

構文:

PROCEDURE set_parameter (

parameter_name IN VARCHAR2,

parameter_value IN NUMBER,

task_name IN VARCHAR2 := NULL);

パラメータ:

パラメータ 説明

parameter_name 設定を変更するパラメータの名前。

parameter_value 新しいパラメータ設定の値。

task_name パラメータ設定が適用されるタスクの名前。

task_name を指定しない、または NULL に指定すると、このパラメータ設定は、パラメータ名に対するタスク固有の設定が指定されていないすべての Oracle Database In-Memory Advisor のタスクに適用されます。

使用上の注意:

1. ADD_STATISTICS プロシージャまたは ADD_HIST_STATISTICS プロシージャの実行前に、

SET_PARAMETER プロシージャを実行し、パラメータ設定を有効にする必要があります。

Oracle Database In-Memory Advisor

19

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

例:

DBMS_INMEMORY_ADVISOR.SET_PARAMETER ('READ_BENEFIT_FACTOR', 15.0); -- set for all tasks DBMS_INMEMORY_ADVISOR.SET_PARAMETER ('CPU_BENEFIT_FACTOR', 3.0, 'my_task'); -- set for ‘my_task’ only

GET_PARAMETER 関数

アドバイザのパラメータ値を返します。使用可能なパラメータについては、付録 3 で説明します。

構文:

FUNCTION get_parameter (

parameter_name IN VARCHAR2,

task_name IN VARCHAR2 := NULL);

パラメータ:

パラメータ 説明

parameter_name 現在の設定を取得するパラメータの名前。

task_name パラメータ設定の取得元となるタスクの名前。

task_name を指定しない、または NULL に指定すると、指定したパラメータ名に対して、特定の値を設定していないすべての Oracle Database In-Memory Advisor タスクで利用される、デフォルト値が取得されます。

例:

rbf := DBMS_INMEMORY_ADVISOR.GET_PARAMETER ('READ_BENEFIT_FACTOR'); -- obtain default value for all tasks cbf := DBMS_INMEMORY_ADVISOR.SET_PARAMETER ('CPU_BENEFIT_FACTOR', ‘my_task’); -- obtain value from ‘my_task’

Oracle Database In-Memory Advisor

20

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

RESET_PARAMETERS プロシージャ

Oracle Database In-Memory Advisor のすべてのパラメータを、元のデフォルト設定にリセットします。

構文:

PROCEDURE reset_parameters (

task_name IN VARCHAR2 := NULL);

パラメータ:

パラメータ 説明

task_name パラメータ設定を再設定するタスクの名前。

task_name を指定しない、NULL に指定すると、Oracle Database In-Memory Advisor のすべてのタスクでパラメータ設定がリセットされます。

使用上の注意:

1. ADD_STATISTICS プロシージャまたは ADD_HIST_STATISTICS プロシージャの実行前に、

RESET_PARAMETERS プロシージャを実行し、パラメータのリセットを有効にする必要がありま

す。

例:

DBMS_INMEMORY_ADVISOR.RESET_PARAMETERS ('my_task'); -- reset for ‘my_task’ DBMS_INMEMORY_ADVISOR.RESET_PARAMETERS(); -- reset for all tasks

Oracle Database In-Memory Advisor

21

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

付録 1: Advisor を実行するサンプル・スクリプト

このサンプル・スクリプトを使用して、Advisor を実行し推奨事項を生成します。

SET SERVEROUTPUT ON; DECLARE sql_coverage_pct NUMBER; BEGIN BEGIN dbms_inmemory_advisor.drop_task ('my_task', force=>TRUE); EXCEPTION WHEN OTHERS THEN NULL; END; dbms_inmemory_advisor.create_task ('my_task'); dbms_inmemory_advisor.add_statistics ('my_task'); sql_coverage_pct := dbms_inmemory_advisor.ash_sql_coverage_pct ('my_task'); dbms_output.put_line ('sql_coverage_pct='||sql_coverage_pct); dbms_inmemory_advisor.execute_task ('my_task'); dbms_inmemory_advisor.generate_recommendations ('my_task'); END; / DEFINE im_task_name='my_task'; @imadvisor_fetch_recommendations.sql HOST firefox imadvisor_my_task.html @imadvisor_my_task.sql PROMPT All done!

Oracle Database In-Memory Advisor

22

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

付録 2: AWR 補完データ

imadvisor_awr_augmentsビューには、imadvisor_awr_augment_import.sqlでインポートされ

た自動ワークロード・リポジトリ(AWR)のワークロードの補完データがリストされます。

列名 説明 データ型

augment_schema AWR augment データが格納されたローカル・データベースのスキーマの名前。

VARCHAR2(128)

augment_date ソース・データベースで AWR augment が取得された日付と時間。

DATE

augment_enabled 「Y」は、ローカル・データベースの In-Memory Advisor で使用するために、AWR augment が有効になっていることを示します。「N」は AWR augment が無効であることを示します。

同じ DBID に対して複数の補完データをロードしている場合、その DBID に対して In-Memory Advisor を使用したい 1 つの補完データ以外は、無効にする必要があります。

augment を無効にする場合:

UPDATE <augment_schema> . imadvisor_awr_augment SET augment_enabled = ‘N’;

COMMIT;

<augment_schema>は、このビューの augment_schema 列に存在する値です。

augment を再び有効にする場合:

UPDATE <augment_schema> . imadvisor_awr_augment SET augment_enabled = ‘Y’;

COMMIT;

imadvisor_awr _augment_version

ソース・データベースで augment の取得に使用した In-Memory Advisor のバージョン。

VARCHAR2(30)

awr_loaded 「Y」は、AWR のワークロードがロードされていることを示します。

「N」は、AWR のワークロードがロードされていないため、In-Memory Advisor ではこの augment が使用できないことを示します。

AWR のワークロードをロードするには、$ORACLE_HOME/rdbms/admin/awrload.sql を使用します。

VARCHAR2(1)

local_db_augment 「Y」は、この augment がこのローカル・データベースから取得されたことを示します。したがって、この augment の DBIDはローカル・データベースと同じです。

「N」は、この augment が現在のローカル・データベースとは異なるデータベースから取得されたことを示します。

ローカルな augment は不要です。In-Memory Advisor ではローカルな augment を使用しません。

VARCHAR2(1)

dbid augment が取得されたデータベースの識別子。 (v$database.dbid)

NUMBER

db_name augment が取得されたデータベースの名前。 (v$database.name)

VARCHAR2(30)

Oracle Database In-Memory Advisor

23

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

db_created augment が取得されたデータベースの作成日時。 (v$database.created)

DATE

instance_number augment が取得されたデータベース・インスタンスのインスタンス番号。(v$instance.instance_number)

NUMBER

instance_name augment が取得されたデータベース・インスタンスの名前。(v$instance.instance_name)

VARCHAR2(30)

instance_version augment が取得されたデータベース・インスタンスのバージョン。(v$instance.version)

VARCHAR2(30)

Instance _version_banner

augment が取得されたデータベース・インスタンスのバージョンのバナー。(v$version.banner WHERE banner LIKE 'Oracle Database %')

VARCHAR2(80)

Compatible _version augment が取得されたデータベース・インスタンスの互換性のあるバージョンの設定。(v$parameter.value WHERE name=’compatible’; 見つからない場合は、instance_version に設定)

VARCHAR2(30)

service_name 補完データが取得されたデータベース・インスタンスのサービス名。(v$listener_network.value WHERE type='SERVICE NAME')

VARCHAR2(1024)

sga_max_size augment が取得されたデータベース・インスタンスの SGA の最大サイズ。(v$parameter.value WHERE name = 'sga_max_size';見つからない場合は、NULL に設定)

NUMBER

inmemory_size augment が取得されたデータベース・インスタンスに対するIn-Memory サイズの設定。(v$parameter.value WHERE name=’inmemory_size’; 見つからない場合は、0 に設定)

NUMBER

Inmemory _unused_space

augment が取得されたデータベース・インスタンスの未使用のインメモリ領域。(inmemory_size - v$inmemory_area . SUM(used_bytes); 見つからない場合は、0 に設定)

NUMBER

ash_sample _interval

augment が取得されたデータベース・インスタンスのアクティブ・セッション履歴のサンプリング間隔。(v$parameter.value WHERE name = '_ash_sample_interval'; 見つからない場合は1000 に設定)

NUMBER

ash_diskfilter _ratio アクティブ・セッション履歴の disk filter ratio。(v$parameter.value WHERE name = '_ash_disk_filter_ratio';見つからない場合は 10 に設定)

NUMBER

db_supports _inmemory

「Y」は、augment が取得されたデータベース・インスタンスがIn-Memory 機能をサポートすることを示します。

「N」は、In-Memory 機能がサポートされないことを示します。

注意: この列には、In-Memory 機能のライセンスが購入についての情報は示されません。

(LIKE ‘V%$INMEMORY%’という名前のビューが存在する場

合は「Y」。存在しない場合は「N」。)

VARCHAR2(1)

Oracle Database In-Memory Advisor

24

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

Augment 表

Database 11.2

dba_objects (owner, object_name, subobject_name, object_type, object_id, data_object_id, temporary)

dba_sqlset (owner, name, id, created, last_modified, statement_count)

dba_sqlset_plans (sqlset_id, sql_id, force_matching_signature, plan_hash_value, id, cardinality, operation, options,

object_instance, object_owner, object_name, object_type, optimizer)

dba_tables (owner, table_name, blocks, avg_row_len, num_rows, empty_blocks, compression, compress_for)

dba_part_tables (owner, table_name, partitioning_type, subpartitioning_type, partition_count, def_subpartition_count,

def_compression, def_compress_for)

dba_tab_partitions (table_owner, table_name, partition_name, avg_row_len, num_rows, blocks, composite,

subpartition_count, empty_blocks, compression, compress_for)

dba_tab_subpartitions (table_owner, table_name, partition_name, subpartition_name, avg_row_len, num_rows,

blocks, empty_blocks, compression, compress_for)

dba_users (user_id, username)

Database 12.1

cdb_objects (owner, object_name, subobject_name, object_type, object_id, data_object_id, temporary, con_id)

cdb_sqlset (owner, name, id, created, last_modified, statement_count, con_dbid,con_id)

cdb_sqlset_plans (sqlset_id, sql_id, force_matching_signature, plan_hash_value, id, cardinality, operation, options,

object_instance, object_owner, object_name, object_type, optimizer, con_dbid, con_id)

cdb_tables (owner, table_name, blocks, avg_row_len, num_rows, empty_blocks, compression, compress_for, con_id)

cdb_part_tables (owner, table_name, partitioning_type, subpartitioning_type, partition_count, def_subpartition_count,

def_compression, def_compress_for, con_id)

cdb_tab_partitions (table_owner, table_name, partition_name, avg_row_len, num_rows, blocks, composite,

subpartition_count, empty_blocks, compression, compress_for, con_id)

cdb_tab_subpartitions (table_owner, table_name, partition_name, subpartition_name, avg_row_len, num_rows,

blocks, empty_blocks, compression, compress_for, con_id

dba_users (user_id, username, con_id)

Oracle Database In-Memory Advisor

25

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

cdb|dba}_sqlset (

'||clone_column ('cdb_sqlset', 'con_id', 'NUMBER')||',

'||clone_column ('cdb_sqlset', 'con_dbid', 'NUMBER')||',

owner, name, id, created, last_modified, statement_count )

{cdb|dba}_sqlset_plans (

'||clone_column ('cdb_sqlset_plans', 'con_id', 'NUMBER')||',

'||clone_column ('cdb_sqlset_plans', 'con_dbid', 'NUMBER')||',

sqlset_name, sqlset_owner, sqlset_id, sql_id, force_matching_signature, plan_hash_value,

id, cardinality, operation, options, object_instance, object_owner, object_name, object_type, optimizer)

{cdb|dba}_sqlset_statements (

'||clone_column ('cdb_sqlset_statements', 'con_id', 'NUMBER')||',

'||clone_column ('cdb_sqlset_statements', 'con_dbid', 'NUMBER')||',

sqlset_name, sqlset_owner, sqlset_id, sql_id, force_matching_signature, sql_text,

parsing_schema_name, parsing_schema_id, plan_hash_value, module, action, elapsed_time, cpu_time,

buffer_gets, disk_reads, direct_writes, rows_processed, fetches, executions, end_of_fetch_count,

optimizer_cost, command_type, first_load_time, stat_period, active_stat_period, plan_timestamp)

Oracle Database In-Memory Advisor

26

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

付録 3: Advisor のパラメータ

Advisor では、インメモリ・パフォーマンスおよび適切な推奨事項のしきい値を見積もり、最小サイズに基

づいてインメモリの適応性を判断するために、多数のヒューリスティックなパラメータ設定を使用します。

パラメータ設定を取得し変更できるようにするインタフェースについては、GET_PARAMETER,

SET_PARAMETER PL/SQL パッケージを参照してください。次の表に、使用可能なパラメータ設定を示し

ます。

パラメータ名 説明 デフォルト

READ_BENEFIT_FACTOR 特定のオブジェクトの読取りアクティビティに必要なデータベース時間が、インメモリ化によって N 倍速くなると推定する。

10.0 という値は、読込みアクティビティのパフォーマンスが 10 倍向上することを意味する。

10.0

WRITE_DISADVANTAGE_FACTOR 特定のオブジェクトの書込みアクティビティに必要なデータベース時間が、インメモリ化によって N 倍遅くなると推定する(ただし、N は 1 以下)。

0.9 という値は、書込みアクティビティの場合、パフォーマンスが少なくとも 10%低下することを意味する。

0.9

CPU_BENEFIT_FACTOR 特定のオブジェクトの CPU アクティビティに必要なデータベース時間が、インメモリ化によって N 倍速くなると推定する。

2.0 という値は、CPU アクティビティのパフォーマンスが 2 倍向上することを意味する。

2.0

MIN_OVERALL_BENEFIT_FACTOR 推奨されるサイズの最大値により、パフォーマンスが著しく向上するか判断するためにしきい値を使用する。

1.05 という値は、全体のパフォーマンス(分析処理と分析以外の処理を含む)の推定される向上率が 5%以下の場合、パフォーマンスの著しい向上は見られないことを意味する。この場合、推奨事項は生成されない。

1.05

MIN_INMEMORY_OBJECT_SIZE オブジェクトのディスク上のサイズのしきい値を使用して、インメモリ化の適応性を判断する。

65536 という値は、ディスク上のサイズが 64KB 以下のオブジェクト(NUM_ROWS * AVG_ROW_LEN)は、インメモリ化に適していないことを意味する。

(注意: ディスク上のサイズの算出には、ディスク上の圧縮は含まれない。)

65536

FAVOR_HIGH_COMPRESSION デフォルトでは、Advisor は分析処理のデータベース時間が最大限短縮されるように、Oracle Database In-Memory 構成を最適化する。推奨される最大のインメモリ・サイズと比較し、小さなインメモリ・サイズを指定した場合、圧縮レベルが低く、メリットが大きいオブジェクトの数が少ないインメモリ構成が、分析時間が最も短い最適なインメモリ構成となるケースが多い。これは、圧縮レベルが低いほど、パフォーマンス上のメリットが高くなるためである。

0

Oracle Database In-Memory Advisor

27

Oracle Corporation 発行「Oracle Database In-Memory Advisor」の翻訳版です。

メモリに配置されるオブジェクトの数が少ないイン

メモリ構成は、分析時間の短縮の点では最適であるが、パフォーマンス上のメリットは、データベース・アプリケーションの特定のコンポーネントに制限される可能性がある。高い圧縮レベルを使用し、メモリに配置するオブジェクトの数が多い、インメモリ構成にする選択肢もあるが、このような構成の場合、分析時間はそれほど短縮されない可能性がある。しかし、そのメリットはデータベース・アプリケーションのより多くのコンポーネントにも適用される点にある。

圧縮レベルが高く、サイズの小さいオブジェクトを多くインメモリに配置するインメモリ構成にするには、FAVOR_HIGH_COMPRESSIONパラメータ1に設定する。

デフォルトでは、FAVOR_HIGH_COMPRESSION は 0に設定される。これは、高い圧縮レベルよりも、分析時間の短縮を優先させる設定である。

LOB_BENEFIT_REDUCTION Oracle Database In-Memory 機能は、LOB データ型の列のインメモリへの配置はサポートしない(LOB 値が表の行の外部に保存される場合)。したがって、LOBデータ型(CLOB、BLOB、BFILE)の列を持ち、値が表の行の外部に保存される表の場合は、LOB 列を参照する問合せでのパフォーマンス上のメリットは小さい。

Advisor は、メリットの減少についてヒューリスティックな見積もりをする。行の外部にストレージがある表の LOB 列の数が多いほど、メリットが減少する度合いが高くなる。この見積もりは、このパラメータで調整できる。

デフォルト値は 1。デフォルト値の場合、表のすべての列が LOB 列で、行の外部にストレージがある場合、メリットはゼロになる。

値 0 を設定すると、メリットの減少は発生しない。

0~1 の範囲の値を設定すると、メリットの減少の度合いは、デフォルト値 1 を使用した場合と比較し、わずかである。たとえば、0.5 という値を設定すると、表のすべての列が LOB 列で、行の外部にストレージがある場合、メリットは元の値の半分に減少する。

1 よりも大きい値を設定すると、メリットの減少の度合いは、デフォルト値 1 を使用した場合と比較し高くなる。たとえば、2 という値を設定すると、表の列の半分が LOB 列で、行の外部にストレージがある場合、メリットはゼロになる。

LOB 列にアクセスする頻度が低い場合は、1 未満の値を使用すると便利である。LOB 列にアクセスする頻度が高い場合は、1 以上の値を使用すると便利である。

1

Oracle is committed to developing practices and products that help protect the environment

Oracle Database In-Memory Advisor 2015 年 7 月 著者: Jack Raitto、Kurt Engeleiter、Jan Klokkers、Mark Mundy 寄稿者: Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. 海外からのお問合せ窓口: 電話: +1.650.506.7000 ファックス: +1.650.506.7200 oracle.com/solutions/SAP

Copyright © 2014、Oracle および関連会社。無断転載を禁ず。 この文書はあくまで参考資料であり、掲載されている情報は予告なしに変更されることがあります。オラク

ル社は、本ドキュメントの無謬性を保証しません。また、本ドキュメントは、法律で明示的または暗黙的に

記載されているかどうかに関係なく、商品性または特定の目的に対する適合性に関する暗黙の保証や条件を

含む一切の保証または条件に制約されません。オラクル社は、この文書の内容に関して一切の保証をしませ

ん。また、直接間接を問わず、この文書により契約上の義務が発生することはありません。本ドキュメント

は、事前の書面による承諾を得ることなく、電子的または物理的に、いかなる形式や方法によっても再生ま

たは伝送することはできません。 Oracle は Oracle Corporation または Oracle Corporation の関連会社(あるいはその両方)の登録商標です。

その他の名称は、それぞれの所有者の商標です。 Intel および Intel Xeon は、Intel Corporation の商標または登録商標です。すべての SPARC 商標はライセン

スに基づき使用される SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMD ロゴお

よび AMD Opteron のロゴは Advanced Micro Devices の商標または登録商標です。UNIX は、Open Groupの登録商標です。 Hardware and Software, Engineered to Work Together