プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Reports ServicesレポートWeb公開ガイド
12c (12.2.1.3.0)
E90222-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

24.2 パフォーマンス分析ツール

レポートのチューニングに向けた最初の手順は、レポートの実行時にどの部分で多くの時間が費やされているかを突き止めることです。データの取出し、取り出したデータのフォーマット、ランタイム・リソースや配布の待機などの部分で、多くの時間が費やされている場合もあります。レポートのレイアウトが最大限に効率化されチューニングされていたとしても、非効率的なSQLが原因でデータの取出しに多くの時間が費やされていれば、効果は限定されます。

この項では、レポートのパフォーマンスの監視に使用できるツールについて説明します。

24.2.1 ログ・ファイル

すべてのOracle Reportsログ・ファイルは、Oracle Diagnostic Logging (ODL)形式に準拠します。この形式は、Oracle Fusion Middlewareにおいて、ログ形式、メッセージ・タイプおよびログ管理ディレクティブ用の標準であります。ログ・ファイルのエントリは、テキスト形式(デフォルト)またはXML形式です。詳細は、Oracle Fusion Middlewareの管理を参照してください

ログ・ファイルのデフォルトの場所

ログ・ファイルのデフォルトの場所は、表24-2を参照してください。

表24-2 ログ・ファイルのデフォルトの場所

コンポーネント 場所、ファイル名

Reportsスタンドアロン・サーバー

サーバー・ログ・ファイル:

$DOMAIN_HOME/diagnostics/logs/ReportsServerComponent/<reports_server_name>/rwserver_diagnostic.log

エンジン・ログ・ファイル:

$DOMAIN_HOME/diagnostics/logs/ReportsServerComponent/<reports_server_name>/rwEng-<num>_diagnostic.log

通信ログ・ファイル:

$DOMAIN_HOME/diagnostics/logs/ReportsServerComponent/<reports_server_name>/zrclient_diagnostic.log

Reportsインプロセス・サーバーおよびサーブレット・ログ・ファイル

インプロセス・サーバー:

$DOMAIN_HOME/servers/WLS_REPORTS/logs/reports/rwserver_diagnostic.log

インプロセス・サーバー・エンジン:

$DOMAIN_HOME/servers/WLS_REPORTS/logs/reports/rwEng-<num>_diagnostic.log

サーブレット:

$DOMAIN_HOME/servers/WLS_REPORTS/logs/reports/rwservlet_diagnostic.log

Reportsツール・ログ・ファイル

(Reports Builder、Reports Runtime、Reports Client)

ランタイム:

$DOMAIN_HOME/diagnostics/logs/ReportsToolsComponent/<reports_tools_name>/runtime_diagnostic.log

通信ログ・ファイル:

$DOMAIN_HOME/diagnostics/logs/ReportsToolsComponent/<reports_tools_name>/zrclient_diagnostic.log

Reports Bridgeログ・ファイル

$DOMAIN_HOME/diagnostics/logs/ReportsBridgeComponent/<reports_bridge_name>/diagnostic.log



ヒント:

rwrunrwbuilderrwclientのようなReportsツール・コンポーネントの複数のインスタンスを実行する場合、プロパティ名keepOpenを値falseとともに、次の場所にあるlogging.xmlファイルのログ・ハンドラ要素に追加する必要があります。

$DOMAIN_HOME/config/fmwconfig/components/ReportsToolsComponent/<reports_tools_name>/logging.xml

これにより、ログ・エントリが書き込まれるたびにログ・ファイルを開いて閉じることができます。


表24-3 12cのODLメッセージ・タイプと10.1.2のトレース・オプションとの比較

ODLメッセージ・タイプ: レベル
(12c)
対応するトレース・オプション
(10gリリース2 (10.1.2))
注意

INCIDENT_ERROR: 1

TRACE_EXC

例外(予期しない内部エラー)

エラー: 1

TRACE_ERR
(低トレース・レベル)

エラー

WARNING: 1

TRACE_WRN
(低トレース・レベル)

警告

NOTIFICATION: 1

TRACE_LOG
(低トレース・レベル)

デフォルト・レベル
サーバーやエンジンに対して重要なイベント

NOTIFICATION: 16

TRACE_STA
TRACE_INFO
(低トレース・レベル)

サーバーやエンジンの状態情報
構成変更の通知
正常に終了したジョブや失敗したジョブ

TRACE: 1

TRACE_PRF
(低トレース・レベル)

プロファイル情報

TRACE: 8

TRACE_DST
(低トレース・レベル)

機能領域のトレース(配布、フォント処理、印刷など)

TRACE: 16

TRACE_DBG
(低トレース・レベル)

サーバーの場合、デバッグのトレース。
エンジンの場合、エンジンの診断。

TRACE: 32

TRACE_ALLは
{
TRACE_APP +
TRACE_BRK+
TRACE_PLS +
TRACE_SQL +
TRACE_TMS +
(低トレース・レベル)
}と同等

すべてのトレース・メッセージ


Oracle Reportsログ・ファイルには、表24-4に記載された属性が記録されます。

表24-4 ログ・ファイルの属性

属性 説明

タイムスタンプ

メッセージが生成された日時です。

コンポーネントID

ReportsメッセージにはREPのコンポーネントIDがあります。

メッセージ・タイプ

メッセージは、エラー、インシデント・エラー、警告、通知およびトレースの5つのタイプに分類されます(詳細は次の表を参照)。

メッセージ・レベル

各メッセージはレベルを示す整数値(1から32)で表されます。

メッセージ・テキスト

メッセージ本文です。

メッセージID

コンポーネントIDとともに使用される一意な数値のIDです(REP 50127など)。これらのIDには十分な説明が用意されており、適切な原因と処置が関連付けられます。

実行コンテキストID

グローバルに一意の順序番号で、一連の実行に関連付けられます。発信コンポーネントが関係します。同じ一連の実行に関与する複数のコンポーネントからのメッセージを関係付けるために使用されます。このIDは他のコンポーネントに送信されたすべてのメッセージに含まれます。それが発信コンポーネントから渡されない場合、Oracle Reportsが生成します。

モジュールID

メッセージを発信した特定モジュールです。Oracle Reportsのファンクション・モジュール(サーバー、エンジン、ビルダーなど)になります。

プロセスID

オペレーティング・システムのPIDで、メッセージを生成したプロセスの識別に使用します。

スレッドID

メッセージを生成した実行における一連の実行の識別子です。


Oracle Reportsのロギング・メカニズムでは、表24-5に示すように、5つの事前定義ODLメッセージ・タイプがサポートされています。

表24-5 ODLメッセージ・タイプ

メッセージ・タイプ 説明

インシデント・エラー

内部的な原因や予期しない原因によりプログラムでエラーが発生し、その問題をOracleサポート・サービスに報告する必要がある場合に使用されます。

エラー

既知の問題が発生しシステム管理者が注意を払う必要がある場合に使用されます。

警告

確認が必要で処置を講じないとエラーが発生する可能性のあるアクションや条件が検出された場合に使用されます。

通知

ログインが正常に行われたなど、通常の操作やイベントを報告する際に使用されます。

トレース

すべてのデバッグ文が示されます。


24.2.1.1 ログ・ファイルの表示

ログ・ファイルは、次のいずれかの方法で表示できます。


注意:

デフォルトでは、ログ・ファイルがXMLフォーマットである場合、そのログ・ファイルをMicrosoft Internet Explorerで開くことはできません。Microsoft Internet ExplorerでXMLファイルを開くには、次のような最上位レベルの要素を持つラッパー・ファイルを作成し、その中にログ・ファイルを追加する必要があります。
.
<?xml version="1.0"?>
<!DOCTYPE LOG [
<!ENTITY log0 SYSTEM "log.xml">
]>
<LOG>
&log0;
</LOG>
.

WLSTコマンドの使用

第24.2.3項「ロギング関連のWLSTコマンド」を参照してください。

コマンドラインの使用

コマンド・ラインから次のディレクトリに移動し、ログファイルを開いて表示します。

  • Reports Serverの場合:

    $DOMAIN_HOME/diagnostics/logs/ReportsServerComponent/<reports_server_name>
    
  • Oracle Reports Bridgeの場合:

    $DOMAIN_HOME/diagnostics/logs/ReportsBridgeComponent/<reports_bridge_name>/
    

    注意:

    Reports Bridgeコンポーネント・ディレクトリはデフォルトでは作成されません。これは、Reports Bridgeの作成時に作成されます。

  • Reports Toolsコンポーネントの場合(rwrunrwbuilderrwclientを含む):

    $DOMAIN_HOME/diagnostics/logs/ReportsToolsComponent/<reports_tools_name>/
    
  • Oracle Reports Servletの場合(Reportsアプリケーションの場合):

    $DOMAIN_HOME/servers/WLS_REPORTS/logs/reports
    

    注意:

    logging.xmlファイルを変更し、Reportsコンポーネントに対するトレース情報を有効化する必要があります。

    logging.xmlファイルの場所の詳細は、第24.2.5項「レポート実行のトレース」を参照してください。


24.2.1.2 ログ・ファイルの管理

Oracle Enterprise Managerで用意されている次の機能を使用して、ログ・ファイルを管理できます。

  • ロギング情報を指定する機能。

  • ログ・エントリの様々な属性に基づいてログ・ファイル内部を検索する機能

  • 傾向メトリック(すなわち、ログ・ファイルに記録された各種タイプのエラー件数(たとえば、INCIDENT_ERROR(インシデント・エラー)が1件、ERROR(エラー)が20件、WARNING(警告)が35件など))を表示する機能

第6章「Oracle Enterprise ManagerによるOracle Reports Servicesの管理」第6.13.1項「ロギング情報の指定」を参照してください。

24.2.1.3 監査ログ・ファイル

Oracle Reportsでは、次のような重要なイベントを監査します。

  • インプロセス・サーバーとスタンドアロン・サーバーに対する認証と認可の成功と失敗

  • Reportsサーブレットに対するユーザーのロールに基づいたWebコマンド・チェックの成功と失敗

監査ログ・ファイルの構成

監査ログを構成する手順は、次のとおりです。

  • J2EEアプリケーションの場合(インプロセス・サーバー): Enterprise Managerを使用して、監査ログ構成ファイルを変更します。第6.7項「Reports Server監査構成の変更」を参照してください。

  • J2SEアプリケーションの場合(スタンドアロン・サーバー): $DOMAIN_HOME/config/fmwconfig/jps-config-jse.xmlファイルのaudit.filterPresetプロパティを次のように編集します。

    <property name="audit.filterPreset" value="None"/>

    変更後

    <property name="audit.filterPreset" value="All"/>

監査ログ・ファイルの場所

Oracle Reports監査ログ・ファイルは、次の場所にあります。

  • J2EEアプリケーションの場合: $DOMAIN_HOME/servers/WLS_REPORTS/logs/auditlogs/ReportsServer/audit.log

  • J2SEコンポーネントの場合: $DOMAIN_HOME/auditlogs/ReportsServer/<reports_server_name>/audit.log

監査ログの例

監査ログの例を次に示します。

2008-09-10 13:15:32.263  - "CheckAuthorization" true "Authorization of user <username> passed for webcommand showjobs." - "0000HlCPYyE2VOJpMkH7ie18lwWx000001,0" - - - - "12" - - - - - - 
2008-09-10 13:15:25.247  - "UserLogin" true "Authentication of user <username>  passed." - "0000HlCPYyE2VOJpMkH7ie18lwWx000001,0" - - - - "12" - - - - - - 
2008-09-10 13:15:25.310  - "CheckAuthorization" true "Authorization of user <username>  passed for webcommand showjobs." - "0000HlCPYyE2VOJpMkH7ie18lwWx000001,0" - - - - "12" - - - - - - 
 
2008-09-10 13:15:32.263  - "CheckAuthorization" true "Authorization of user <username> failed  for webcommand showjobs." - "0000HlCPYyE2VOJpMkH7ie18lwWx000001,0" - - - - "12" - - - - - - 
2008-09-10 13:15:25.247  - "UserLogin" true "Authentication of user <username>  failed." - "0000HlCPYyE2VOJpMkH7ie18lwWx000001,0" - - - - "12" - - - - - - 
2008-09-10 13:15:25.310  - "CheckAuthorization" true "Authorization of user <username>  failed for webcommand showjobs." - "0000HlCPYyE2VOJpMkH7ie18lwWx000001,0" - - - - "12" - - - - - - 

24.2.2 WLSTについて

WebLogic Scripting Tool (WLST)はコマンド・ライン・スクリプト・インタフェースです。このツールにより、管理作業の実行、およびWebLogic Serverのインスタンスとドメインに対して行うWebLogic Server構成の変更が容易になります。

WLSTシェルは次のコマンドを実行すると起動できます。

ORACLE_HOME/oracle_common/common/bin/wlst.sh
wls:/offline> connect("weblogic","weblogic", "hostname:7001")
wls:/domain2/serverConfig> domainRuntime()

24.2.2.1 システム・コンポーネントでのWLSTコマンドの使用

次のWLSTコマンドを使用して、Reportsコンポーネントを実行できます。

WLSTシェルは次のコマンドを実行すると起動できます。

ORACLE_HOME/oracle_common/common/bin/wlst.sh
wls:/offline> connect("weblogic","weblogic", "hostname:7001")
wls:/domain2/serverConfig> domainRuntime()
wls:/domain2/domainRuntime> listLogs(target="ReportsServer_hostname_cinst56"))
file://hostname/scratch/rrpai/cinst56/diagnostics/logs/ReportsServerComponent/ReportsServer_hostname_cinst56/server_diagnostic.log
2008-10-27 02:59:47                    302K server_diagnostic.log
file://hostname/scratch/rrpai/cinst56/diagnostics/logs/ReportsServerComponent/ReportsServer_hostname_cinst56/rwEng-0_diagnostic.log
2008-10-27 02:59:13                    7.3K rwEng-0_diagnostic.log
 
wls:/domain2/domainRuntime> displayLogs(target="opmn:cinst56/ReportsServer_hostname_cinst56", tail=10)
 
[2008-10-27T02:31:52.133-07:00] [reports] [NOTIFICATION] [] [oracle.reports.server] [host: hostname] [nwaddr: 144.20.207.149] [tid: 10] [ecid: 0000HoxdIF14EwQRyaQ5T0191Oe7000001,0] ServerConfig:logConf  <server version="11.1.1.0.0" xmlns="http://xmlns.oracle.com/reports/server">[[
   
[2008-10-27T02:44:38.684-07:00] [reports] [INCIDENT_ERROR] [REP-50125] [oracle.reports.engine] [host: hostname] [nwaddr: 144.20.207.149] [pid: 18787] [tid: 10] [ecid: 0000HoxgDPr4EwQRyaQ5T00004_Z000000,0] [EngineName: rwEng-0] REP-50125 : org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No  [[
……
 
wls:/domain2/domainRuntime> displayLogs(target="opmn:cinst56/ReportsServer_hostname_cinst56", tail=10, query="MODULE_ID equals oracle.reports.server")
 
[2008-10-27T02:31:01.085-07:00] [reports] [NOTIFICATION] [] [oracle.reports.server] [host: hostname] [nwaddr: 144.20.207.149] [tid: 10] [ecid: 0000Hoxd5lP4EwQRyaQ5T0191OdK000001,0] ServerConfig:logConf  <server version="11.1.1.0.0" xmlns="http://xmlns.oracle.com/reports/server">[[
 
[2008-10-27T02:59:47.383-07:00] [reports] [NOTIFICATION] [] [oracle.reports.server] [host: hostname] [nwaddr: 144.20.207.149] [tid: 10] [ecid: 0000HoxjfEr4EwQRyaQ5T0191P4I000001,0] ServerConfig:logConf  Reading server config file
 
wls:/domain2/domainRuntime> exit()

24.2.2.2 Java EEコンポーネントの場合のWLSTコマンドの使用

次のWLSTコマンドを使用して、Reportsコンポーネントを実行できます。

WLSTシェルは次のコマンドを実行すると起動できます。

ORACLE_HOME/oracle_common/common/bin/wlst.sh
wls:/offline> connect("weblogic","weblogic", "hostname:7001")
wls:/domain2/serverConfig> domainRuntime()
wls:/domain2/domainRuntime> listLoggers(target="WLS_REPORTS") 
-------------------------------------------------------------------------------------+-----------------
Logger                                                                               | Level           
-------------------------------------------------------------------------------------+-----------------
<root>                                                                               | WARNING:1
com.sun.xml.bind.v2.ClassFactory                                                     | <Inherited>
....
oracle.reports.adminlogconfig                                                        | <Inherited>
oracle.reports.configMbeans                                                          | <Inherited>
oracle.reports.engine                                                                | NOTIFICATION:1
oracle.reports.server                                                                | NOTIFICATION:16
oracle.reports.servlet                                                               | NOTIFICATION:1
.....
 
wls:/domain2/domainRuntime> listLoggers(pattern="oracle.reports.*", target="WLS_REPORTS")
------------------------------+-----------------
Logger                        | Level           
------------------------------+-----------------
oracle.reports.adminlogconfig | <Inherited>
oracle.reports.configMbeans   | <Inherited>
oracle.reports.engine         | NOTIFICATION:1
oracle.reports.server         | NOTIFICATION:16
oracle.reports.servlet        | NOTIFICATION:1
 
wls:/domain2/domainRuntime> listLoggers(pattern="oracle.reports.server.*", target="WLS_REPORTS")
----------------------+-----------------
Logger                | Level           
----------------------+-----------------
oracle.reports.server | NOTIFICATION:16
 
wls:/domain2/domainRuntime> listLogHandlers(target="WLS_REPORTS")
 
Handler Name: rwservlet_handler
type:   ODL
path:   /scratch/rrpai/wls55/user_projects/domains/domain2/servers/WLS_REPORTS/logs/reports/rwservlet_diagnostic.log
format: ODL-Text
maxFileSize:    1M
maxLogSize:     10M
Handler Name: wls-domain
type:   oracle.core.ojdl.weblogic.DomainLogHandler
Handler Name: odl-handler
type:   ODL
path:   /scratch/rrpai/wls55/user_projects/domains/domain2/servers/WLS_REPORTS/logs/WLS_REPORTS-diagnostic.log
maxFileSize:    10M
maxLogSize:     100M

24.2.3 ロギング関連のWLSTコマンド

次のWLSTコマンドを使用して、ログを構成します。

次のWLSTコマンドを使用して、ログを表示します。

24.2.3.1 listLoggers

listLoggersコマンドを使用して、ロガーのリストおよび各ロガーのレベルを表示できます。

表24-6に、listLoggersコマンドでサポートするパラメータを示します。

表24-6 listLoggersのパラメータ

パラメータ 説明

target

WebLogic Serverの名前。

デフォルト値は、WLSTの接続先となるサーバーです。

pattern

ロガー名のフィルタ処理に使用される正規表現パターン。デフォルト・パターンはありません。パターンを指定しないと、すべてのロガーが返されます。

runtime

操作によりランタイム・ロガーと構成ロガーのどちらがリストされるかを決定するJythonブール値(0または1)。

デフォルト値は1です。


戻り値

キーがロガー名で関連値がロガー・レベルであるPyDictionaryオブジェクト。

listLoggersコマンドの例を次に示します。

  1. listLoggers()

  2. listLoggers(pattern="oracle.*")

  3. listLoggers(runtime=0)

  4. listLoggers(target="server1")


注意:

  • listLoggersコマンドは、システム・コンポーネント(Reports ServerやReports Bridgeなど)ではサポートされていません。
  • WLSTコマンドの詳細は、WebLogic Server WLSTコマンド・リファレンスガイドを参照してください。


24.2.3.2 getLogLevel

getLogLevelコマンドを使用して、特定のロガーのログ・レベルを取得できます。

表24-7に、getLogLevelコマンドでサポートするパラメータを示します。

表24-7 getLogLevelのパラメータ

パラメータ 説明

target

WebLogic Serverの名前。

デフォルト値は、WLSTの接続先となるサーバーです。

logger

ロガーの名前。

runtime

操作によりランタイム・ロガーと構成ロガーのどちらがリストされるかを決定するJythonブール値(0または1)。

デフォルト値は1です。


戻り値

文字列としてのロガー・レベル。

getLogLevelコマンドの例を次に示します。

  1. getLogLevel(logger="oracle")

  2. getLogLevel(logger="oracle")

  3. getLogLevel(logger="oracle", target="server2")


注意:

  • getLogLevelコマンドは、システム・コンポーネント(Reports ServerやReports Bridgeなど)ではサポートされていません。
  • WLSTコマンドの詳細は、WebLogic Server WLSTコマンド・リファレンスガイドを参照してください。


24.2.3.3 setLogLevel

setLogLevelコマンドを使用して、特定のロガーのログ・レベルを設定できます。

表24-8に、setLogLevelコマンドでサポートするパラメータを示します。

表24-8 setLogLevelのパラメータ

パラメータ 説明

target

WebLogic Serverの名前。

デフォルト値は、WLSTの接続先となるサーバーです。

logger

ロガーの名前。

デフォルト値はありません。

level

レベル名。Javaレベル(INFO、FINEなど)またはODLレベル(NOTIFICATION:1、TRACE:1など)のどちらかになります。

デフォルト値はありません。

runtime

操作によりランタイム・ロガーと構成ロガーのどちらがリストされるかを決定するJythonブール値(0または1)。

デフォルト値は1です。

persist

レベルを構成ファイルに保存するかどうかを決定するJythonブール値(0または1)。

デフォルト値は1です。


戻り値

setLogLevelコマンドの戻り値はありません。

setLogLevelコマンドの例を次に示します。

  1. setLogLevel(logger="oracle.my.logger", level="NOTICATION:1")

  2. setLogLevel(logger="oracle.my.logger", level="TRACE:1", persist=0)

  3. setLogLevel(target="server1", logger="oracle.my.logger", level="WARNING", runtime=0)


    注意:

    • setLogLevelコマンドは、システム・コンポーネント(Reports ServerやReports Bridgeなど)ではサポートされていません。
    • WLSTコマンドの詳細は、WebLogic Server WLSTコマンド・リファレンスガイドを参照してください。


24.2.3.4 listLogHandlers

listLogHandlersコマンドを使用して、1つ以上のログ・ハンドラの構成を表示できます。

表24-9listLogHandlersコマンドでサポートするパラメータを示します。

表24-9 listLogHandlersのパラメータ

パラメータ 説明

target

WebLogic Serverの名前。

デフォルト値は、WLSTの接続先となるサーバーです。

name

ログ・ハンドラの名前。名前が指定されないと、すべてのハンドラがリストされます。


戻り値

ハンドラごとに1つのエントリを含むjava.util.List。各エントリは、ハンドラを説明するjavax.management.openmbean.CompositeDataオブジェクトです。

listLogHandlersコマンドの例を次に示します。

  1. listLogHandlers()

  2. listLogHandlers(name="odl-handler")

  3. listLogHandlers(target="server1")


注意:

  • listLogHandlersコマンドは、システム・コンポーネント(Reports ServerやReports Bridgeなど)ではサポートされていません。
  • WLSTコマンドの詳細は、WebLogic Server WLSTコマンド・リファレンスガイドを参照してください。


24.2.3.5 configureLogHandlers

configureLogHandlerコマンドを使用して、既存ログ・ハンドラの構成、新規ログ・ハンドラの追加または既存ハンドラの削除ができます。

表24-10configure LogHandlerコマンドでサポートするパラメータを示します。

表24-10 configure LogHandlerのパラメータ

パラメータ 説明

target

WebLogic Serverの名前。

デフォルト値は、WLSTの接続先となるサーバーです。

name

ログ・ハンドラの名前。

maxFileSize

ODLハンドラのmaxFileSize属性の値。

この値は数値を表す文字列です。その後にサイズの単位(kはキロバイト、mはメガバイト、gはギガバイト)を示す接尾辞が続く場合があります。

maxLogSize

ODLハンドラのmaxLogSize属性の値。

この値は数値を表す文字列です。その後にサイズの単位(kはキロバイト、mはメガバイト、gはギガバイト)を示す接尾辞が続く場合があります。

rotationFrequency

ODLハンドラのrotationFrequncyの値。

この値は数値を表す文字列です。その後に時間単位(分はm、時はh、日はd)を示す接尾辞が続く場合があります。デフォルトの時間単位は分(m)です。特別な値(HOUR、HOURLY、DAY、DAYLY、WEEK、WEEKLY、MONTH、MONTHLY)も指定可能で、分単位の数値に変換されます。

baseRotationTime

ベース・ローテーション時間。ローテーション頻度パラメータで使用されます。

この値は日時の値を表す文字列にする必要があります。ISO 8601の日時書式で表す完全な書式の場合と、時と分のみで表す短い書式の場合があります。デフォルトのbaseRotationTimeは00:00です。

retentionPeriod

保存期間(単位は分)。

この値は数値を表す文字列にする必要があります。その後に時間単位(分はm、時はh、日はd)を示す接尾辞が続く場合があります。デフォルトの時間単位は分(m)です。特別な値(HOUR、HOURLY、DAY、DAYLY、WEEK、WEEKLY、MONTH、MONTHLY)も指定可能で、分単位の数値に変換されます。

format

ODLハンドラのフォーマット。

この値は、ODL-TextまたはODL-XMLの文字列にする必要があります。デフォルトの書式はODL-Textです。

encoding

ログ・ファイルのキャラクタ・エンコーディング。

path

ログ・ファイルのパス。

handlerType

ハンドラの実装を用意しているJavaクラスの名前。

java.util.logging.Handlerまたはoracle.core.ojdl.logging.HandlerFactoryのインスタンスにする必要があります。

propertyName

追加するか更新するハンドラ・プロパティの名前。

プロパティ値は、propertyValueパラメータで指定します。

propertyValue

propertyNameパラメータで定義されるハンドラ・プロパティの新規値。

addProperty

Jythonブール値。propertyNameとpropertyValueのパラメータとともに使用して、ハンドラに追加する新規プロパティを定義します。

removeProperty

1つ以上の削除対象ハンドラ・プロパティのリスト。

addHandler

追加するハンドラの名前。

removeHandler

削除するハンドラの名前。

addToLogger

ロガー名のリスト。ハンドラは特定のロガー名に追加されます。

removeFromLogger

ロガー名のリスト。ハンドラは特定のロガーから削除されます。



注意:

listLogHandlersコマンドは、システム・コンポーネント(Reports ServerやReports Bridgeなど)ではサポートされていません。

WLSTコマンドの詳細は、WebLogic Server WLSTコマンド・リファレンスガイドを参照してください。


24.2.3.6 listLogs

listLogsコマンドを使用して、1つ以上のコンポーネントのリストを表示できます。

表24-11に、listLoggersコマンドでサポートするパラメータを示します。

表24-11 listLogsのパラメータ

パラメータ 説明

target

システム・コンポーネントまたはWebLogic Serverの名前。

接続モードでは、デフォルト・ターゲットはWebLogicドメインです。切断モードでは、デフォルトはありません。

unit

レポートのファイル・サイズに使用する単位を定義します。有効値はB(バイト)、K(キロバイト)、M(メガバイト)、G(ギガバイト)またはH(判読可能形式で表した表示サイズで、UNIXのls -hオプションに類似)です。

デフォルト値はHです。

fulltime

Jythonブール値。

デフォルト値はfalseです。


戻り値

各ログに1つの要素を含むPyArray。配列の要素は各ログを説明するjavax.management.openmbean.CompositeDataオブジェクトです。

listLoggersコマンドの例を次に示します。

  1. listLogs()

  2. listLogs(target="server1")

  3. listLogs(target="opmn:instance1/ohs1")

  4. listLogs(oracleInstance="/middleware/user_projects/domains/base_domain", target="server1")


注意:

  • listLogsコマンドは、Java EE対応のコンポーネントとシステム・コンポーネントの両方でサポートされています。
  • WLSTコマンドの詳細は、Fusion Middleware WLSTコマンド・リファレンス・ガイドを参照してください。


24.2.3.7 displayLogs

displayLogsコマンドを使用して、診断ログの内容を表示できます。

表24-12に、listLoggersコマンドでサポートするパラメータを示します。

表24-12 displayLogsのパラメータ

パラメータ 説明

target

システム・コンポーネントまたはWebLogic Serverの名前。

接続モードでは、デフォルト・ターゲットはWebLogicドメインです。切断モードでは、デフォルトはありません。

query

ログ・ファイルの内容のフィルタ処理に使用される式を指定する文字列。

単純な式には<field-name> <operator> <value>の形式があります。<field-name>はログ・レコード・フィールド名で、<operator>はフィールド・タイプの適切な演算子です。


戻り値

コマンドでは、returnDataパラメータがtrueに設定されている場合にのみ値を返します。デフォルトでは、データを返しません。使用するオプションによって戻り値は異なります。

displayLogsコマンドの例を次に示します。

  1. displayLogs(tail=100)

  2. displayLogs(target='ohs1', last=60)

  3. displayLogs(groupBy=['COMPONENT_ID', 'MSG_TYPE'])

  4. displayLogs(query='MSG_TYPE equals ERROR or MSG_TEXT contains Exception")

  5. displayLogs(query='APP equals myApp', last=60)

  6. displayLogs(query='ECID equals 0000Hl9TwKUCslT6uBi8UH18lkWX000002')


注意:

  • listLogsコマンドは、Java EE対応のコンポーネントとシステム・コンポーネントの両方でサポートされています。
  • WLSTコマンドの詳細は、Fusion Middleware WLSTコマンド・リファレンス・ガイドを参照してください。


24.2.4 監査構成のWLSTコマンド

表24-13に表示されているWLSTコマンドを使用して、監査ポリシーおよび監査リポジトリ設定を表示し管理します。

表24-13 WLST監査コマンド

使用するコマンド 目的 WLSTでの使用

getAuditPolicy


監査ポリシー設定を表示します。

オンライン

setAuditPolicy


監査ポリシー設定を更新します。

オンライン

listAuditEvents


1つまたはすべてのコンポーネントに対する監査イベントのリストを作成します。

オンライン


24.2.4.1 getAuditPolicy

このオンライン・コマンドは、フィルタ初期設定、特別なユーザー、カスタム・イベント、最大ログ・ファイル・サイズ、最大ログ・ディレクトリ・サイズなどの監査ポリシー設定を表示します。Oracle Internet DirectoryやOracle Virtual Directoryなどのシステム・コンポーネントには、コンポーネントMBean名が必要です。


注意:

getNonJava EEAuditMBeanNameコマンドを使用して、システム・コンポーネントのMBean名を取得できます。

getAuditPolicyコマンドの構文を次に示します。

getAuditPolicy(['mbeanName'])
引数 定義
mbeanName システム・コンポーネントのコンポーネント監査MBeanの名前を指定します。

次のコマンドは、Java EEコンポーネントの監査設定を表示します。

wls:/domain52/serverConfig> getAuditPolicy()
Location changed to domainRuntime tree. This is a read-only tree with DomainMBean as the root.
For more help, use help(domainRuntime)
 
FilterPreset:None
Max Log File Size:104857600
Max Log Dir Size:0

24.2.4.2 setAuditPolicy

このオンライン・コマンドは、監査ポリシー設定を構成します。フィルタ初期設定、ユーザーの追加または削除、カスタム・イベントの追加または削除を実行できます。Oracle Internet DirectoryやOracle Virtual Directoryなどのシステム・コンポーネントには、コンポーネントMBean名が必要です。


注意:

getNonJava EEAuditMBeanNameコマンドを使用して、システム・コンポーネントのMBean名を取得できます。

setAuditPolicyコマンドの構文を次に示します。

setAuditPolicy(['mbeanName'],['filterPreset'],['addSpecialUsers'],
['removeSpecialUsers'],['addCustomEvents'],['removeCustomEvents'])
引数 定義
mbeanName システム・コンポーネントのコンポーネント監査MBeanの名前を指定します。
filterPreset 変更するフィルタ初期設定を指定します。
addSpecialUsers 追加する特別なユーザーを指定します。
removeSpecialUsers 削除する特別なユーザーを指定します。
addCustomEvents 追加するカスタム・イベントを指定します。
removeCustomEvents 削除するカスタム・イベントを指定します。

次のコマンドは、監査ポリシーをAllレベルに設定します。

wls:/domain52/domainRuntime> setAuditPolicy(filterPreset='All');
Already in Domain Runtime Tree
Audit Policy Information updated successfully

24.2.4.3 listAuditEvents

このオンライン・コマンドは、コンポーネントの属性および監査イベントを表示します。システム・コンポーネントの場合、コンポーネントMBean名をパラメータとして渡します。Oracle Platform Security Services (OPSS)のようなJava EEアプリケーションおよびサービスでは、MBeanパラメータは必要ありません。コンポーネント・タイプを指定しない場合、すべてのコンポーネントに適用可能な汎用属性がすべて表示されます。


注意:

getNonJava EEAuditMBeanNameコマンドを使用して、システム・コンポーネントのMBean名を取得できます。

listAuditEventsコマンドの構文を次に示します。

listAuditEvents(['mbeanName'],['componentType'])
引数 定義
mbeanName コンポーネントMBeanの名前を指定します。
componentType コンポーネント・タイプを指定します。

次のコマンドは、すべての監査イベントを表示します。

wls:/domain52/domainRuntime> listAuditEvents();
Location changed to domainRuntime tree. This is a read-only tree with DomainMBean as the root.
For more help, use help(domainRuntime)
 
Components:
DIP
JPS
OIF
OWSM-AGENT
OWSM-PM-EJB
ReportsServer
WS-PolicyAttachment
WebCache
WebServices
Attributes applicable to all components:
ComponentType
InstanceId
HostId
HostNwaddr
ModuleId
ProcessId
OracleHome
HomeInstance
ECID
RID
...

24.2.5 レポート実行のトレース

レポート・トレースを有効にすると、レポートの実行時に完了した一連の処理が記録されたテキスト・ファイルが生成されます。トレース・ファイルに記録される情報は豊富で、パフォーマンス・チューニングだけでなく、レポートのデバッグやパフォーマンスのボトルネックの特定にも役立ちます。

  • Reports Builder (rwbuilder)およびReports Runtime (rwrun)では、logging.xmlファイルでトレース・オプションを指定します。

    例:

    $DOMAIN_HOME/config/fmwconfig/components/ReportsToolsComponent/<reports_tools_name>/logging.xmlで、トレース・レベルをTrace 32に指定します。

  • Reports Server (rwserver)では、logging.xmlファイルでトレース・オプションを指定します。Reports Serverとエンジンに対して、別々にトレース・ファイルが生成されます。

    例:

    • $DOMAIN_HOME/config/fmwconfig/components/ReportsServerComponent/<reports_server_name>/logging.xmlで、トレース・レベルをTrace 32に指定します。

    11gでは、個別のレポート用ジョブ・レベルのトレースは存在しません。

  • Oracle Reports Servlet (rwservlet)の場合、次の場所にあるlogging xmlファイルでトレース・オプションを指定します。

    FMW_HOME/user_projects/domains/<domainname>/config/fmwconfig/servers/WLS_REPORTS/logging.xml

  • また、次の場所にあるlogging xmlファイルでトレース・オプションを手動で指定することもできます。

    $DOMAIN_HOME/config/fmwconfig/components/ReportsBridgeComponent/<reports_bridge_name>/logging.xml

ロギング・ファイルへの情報出力の概要は、次のとおりです。

例24-1 Oracle Reports Builder

+------------------------------------------+
| Report Builder Profiler statistics       |
+------------------------------------------+
Total Elapsed Time: 8.00 seconds
Reports Time:    7.00 seconds (87.50% of TOTAL)
ORACLE Time:     1.00 seconds (12.50% of TOTAL)
UPI:             0.00 seconds
SQL:             1.00 seconds
TOTAL CPU Time used by process: N/A

表24-14 Oracle Reports Builder

フィールド 説明

合計経過時間

レポートの実行にかかった時間。

Reports時間

取り出したデータのフォーマットにかかった時間。「合計経過時間」に対する割合も表示されます。

Oracle時間

データの取出しにかかった時間。「合計経過時間」に対する割合も表示されます。

UPI

SQL問合せのみ。データベース接続の確立およびSQLの解析と実行にかかった時間。

SQL

データベース・サーバーによるデータのフェッチにかかった時間(SRW.DO_SQL文、EXEC_SQL文、PL/SQLカーソルなどの実行にかかった時間の割合)。



注意:

データ・ソースが非SQLデータ・ソース(テキストやXMLのプラガブル・データ・ソースなど)の場合は、「Oracle時間」、「UPI」および「SQL」の値は0になります。

例24-1では、チューニング作業を、データの問合せとフェッチではなく、フォーマット(Reports時間)に絞り込めばよいことがわかります。

24.2.6 RW_SERVER_JOB_QUEUEの表

RW_SERVER_JOB_QUEUE表では、Enterprise Managerで使用できるウィンドウとは別のウィンドウがReports Serverジョブ・キューに用意されます。

Reports Serverでは、ジョブがエンキューされて終了すると、現在のレポートに関する情報がデータベースに送信されます。

この情報は、次のデータを含むRW_SERVER_JOB_QUEUE表に挿入されます。

  • ジョブの名前

  • ジョブの送信者

  • 出力フォーマット

  • ジョブの現行ステータス

  • ジョブがキューに入れられた日時、ジョブ実行の開始日時および終了日時

表24-15では、RW_SERVER_JOB_QUEUE表に含まれる情報について説明します。

表24-15 RW_SERVER_JOB_QUEUE表の構造

列名 説明

JOB_QUEUE

表示されたジョブの状態(CURRENT、PAST、SCHEDULEDのいずれか)。

JOB_ID

システム生成のジョブID番号。

JOB_TYPE

reportrwurlなどのジョブ・タイプ。Reports Server構成ファイルのrwserver.confで定義します。

JOB_NAME

ジョブ送信名(JOBNAMEに値が指定されていない場合はファイル名)。

STATUS_CODE

ジョブの現行ステータス。ステータス・コードの詳細は、表24-16を参照してください。

STATUS_MESSAGE

ステータス・コードに関連する完全なメッセージ・テキスト(レポートが終了した場合のエラー・メッセージも含む)。ステータス・コードの詳細は、表24-16を参照してください。

COMMAND_LINE

このジョブを送信するために送信される完全なコマンドライン。

OWNER

ジョブを送信したユーザー。Webでは、デフォルトのユーザーはWebサーバーを所有するOSユーザーです。

DESTYPE

レポート出力の送信先。

DESNAME

Reports Serverのキャッシュに入れない場合のレポート出力名。

SERVER

レポートの送信先のReports Server。

QUEUED

ジョブ送信が所定のReports Serverに受信され、キューに入れられた日時。

STARTED

ジョブ送信が実行された日時。

FINISHED

送信されたジョブが完了した日時。

RUN_ELAPSE

開始時刻から終了時刻までの経過時間(ミリ秒単位)。

TOTAL_ELAPSE

キューに入れられた時刻から終了時刻までの経過時間(ミリ秒単位)。

LAST_RUN

スケジュールされたジョブが前回実行された日時。

NEXT_RUN

スケジュールされたジョブが次回実行される日時。

REPEAT_INTERVAL

ジョブの実行頻度。

REPEAT_PATTERN

繰返しパターン(毎分、毎時、毎日など)。

CACHE_KEY

すでにキャッシュされている結果とリクエストの比較に使用するキャッシュ・キー。このキーは、ジョブが実行された時刻を考慮せずにレポート出力結果を一意に示す文字列です。たとえば、2つのリクエストのキーが同じ場合、これらのリクエストが同時に実行されると、(電子メールへの送信やファイルへの保存など)異なる目的で出力が使用される場合であっても、同一の出力が生成されます。

CACHE_HIT

ジョブの結果が、ジョブ自体の実行ではなく、キャッシュからフェッチされたかどうかを示します。


表24-16 ジョブ送信のステータス・コード

ステータス・コード 定義済のPL/SQL定数 ステータス・コードの説明

1

ENQUEUED

ジョブがキューで待機中。

3

RUNNING

レポートが現在実行中。

4

FINISHED

ジョブ送信が正常に完了。このコードは一度設定されると変更しません。

5

TERMINATED_W_ERR

ジョブにエラーが発生して終了。

7

CANCELED

ジョブがユーザーのリクエストによって取り消されました。

8

SERVER_SHUTDOWN

ジョブがReports Serverの停止によって取り消されました。

11

TRANSFERRED

ジョブがクラスタ内の別のサーバーに転送された(注意: 10g リリース2 (10.1.2)では、クラスタリングは非推奨)。このコードは一度設定されると変更しません。この場合、ジョブは新規ジョブとして別のReports Serverに送信されます(ユーザーは新規Reports Serverに新規ジョブのステータスを問い合せることが可能)。

12

VOID_FINISHED

ジョブは終了したが、キャッシュ容量の制限に達したため出力は無効。

13

ERROR_FINISHED

出力は正常に生成されたが、宛先への送信に失敗した。

15

EXPIRED

スケジュールされたレポートが期限切れになりました。


SELECTアクセス権が付与されているユーザーは、この表を表示できます。これによって、関心のあるジョブ送信を問い合せて、ジョブの現行ステータスを判別することができます。Reports Serverの「キュー」画面の実装によって、このデータもユーザーに表示できます。このような画面を実装するには、この表に直接基づいたレポートを作成します。そうすることによって、ユーザーによるジョブ送信としてキューのレポートが表示されます。

逆に、ジョブ送信のステータスを反映してこの表をリアルタイムで更新すると、Reports Serverでジョブを同時にリクエストしているユーザーの数を、管理者が正確に把握しやすくなります。

RW_SERVER_JOB_QUEUE表で、ジョブがキューに入れられたが完了していないことを示すステータス・コードを持つエントリの数を数えることによって、サーバー上で現在アクティブなユーザーの数を正確に返すことが可能になります。たとえば、次の問合せを使用できます。

SELECT Count(*)
FROM   RW_SERVER_JOB_QUEUE
WHERE  STATUS_CODE IN (1,     -- ENQUEUED
                      2,      -- OPENING
                      3)      -- RUNNING
AND    JOB_TYPE != 'Scheduled'

注意:

表には、レポートがキューに入れられた日時、実行された日時、および終了した日時が含まれますが、ジョブにQUEUEDおよびSTARTEDの時刻は定義されているがFINISHEDの値は定義されていない、という事実に基づいて問合せを使用することはお薦めできません。無効な入力などの予期しないエラーによってレポートが終了した場合、FINISHED列はNULLのままです。ただし、STATUS_CODESTATUS_MESSAGEの両方に、障害が生じたことが示され、障害の原因が表示されます。

24.2.6.1 キュー・アクティビティによるデータベースの更新

Reports Serverのジョブ・キューは、PL/SQL APIの使用を通じて実装されます。これには、リクエストが行われたときに、キュー情報を反映してキュー表を更新する機能があります。この実装は、次のパスで定義します。

ORACLE_HOME\reports\admin\sql\rw_server.sql

このスクリプトは、Oracle 10gデータベースに対する動作が保証されています。

キューを実装するには、次の手順を実行します。

  1. rw_server.sqlファイルをデータベースにロードします(このファイルは、Oracle Reports ServicesインストールのORACLE_HOME\reports\admin\sqlにある)。

    これによって、レポートのキュー情報を所有し、サーバーのキューAPIに対して実行権限を持つスキーマが作成されます。Oracle6i Reportsとの下位互換性のために、RW_SERVER_QUEUEというビューも作成されます。

  2. サーバー構成ファイル(スタンドアロン・サーバーの場合は${DOMAIN_HOME}/config/fmwconfig/components/ReportsServerComponent/<reports_server_name>/rwserver.conf、インプロセス・サーバーの場合は$DOMAIN_HOME/config/fmwconfig/servers/<WLS_SERVER_NAME>/applications/reports_<version>/configuration/rwserver.conf)でjobStatusRepository要素のrepositoryconnプロパティを、キュー・データを所有するスキーマの接続文字列に設定します。第7.2.1.11項「jobStatusRepository」を参照してください。

    また、Oracle Enterprise Managerを使用してjobstatusRepositoryを設定する方法もあります。

サーバーは起動時に、定義されたユーザーとして接続し、ジョブ送信をログに記録します。


注意:

Oracle Reportsでは、ジョブ・キューに関するログ情報を更新するときに、jobstatusrepository要素のdbconnプロパティを使用してデータベースに接続します。

24.2.7 SHOWJOBSコマンドライン・キーワード

コマンドラインでSHOWJOBSを使用して、rwservletを通じて実行されているレポートを対象に、Reports Serverのキュー・ステータスをWeb形式で表示できます。

第A.8.8項「SHOWJOBS」を参照してください。

24.2.8 効率的なSQL

Oracle Reportsでは、データベースからのデータの取出しにSQLが使用されます。


注意:

Oracle Reportsでは、PDSでない問合せにのみSQLを使用します。

非効率的なSQLは、特に大規模なレポートでパフォーマンスを悪化させます。したがって、Oracle Reportsチューニングの全担当者が、SQLに関して十分な実用知識を持ち、データベースでSQL文がどのように実行されるかについて理解している必要があります。SQLについて精通していない場合は、Oracle Reports Builderのデータ・ウィザードとクエリー・ビルダーを使用してください。ただし、ウィザードでは、SQLが使用可能な索引を使用しないなど、非効率的なSQLの作成を完全に回避することはできません。

レポートのSQLをチューニングするには、Oracleデータベースで使用可能なトレース機能を使用します。SQLトレースでは、データベースに送信されたSQL文を特定できるだけでなく、解析、実行およびデータのフェッチにかかった時間も確認できます。トレース・ファイルの生成後、TKPROFデータベース・ユーティリティを使用してEXPLAIN PLANマップを生成します。EXPLAIN PLANマップは、Oracleのオプティマイザにより使用された実行計画を図で表示するものです。たとえば、全表スキャンが使用された場所などが示されます。このマップにより、パフォーマンスに対する影響に応じて、その表に索引を作成する必要があるかどうかがわかります。

Oracle Reports Builder内でSQLトレースをオンにするには、次のコードで、SQL_TRACEという名前のレポート・レベル式列を追加します。

SRW.DO_SQL('ALTER SESSION SET SQL_TRACE=TRUE');
return(1);

注意:

SQL_TRACEのコールには、Before ReportトリガーまたはBefore Parameter Formトリガーを使用することもできます。

次のEXPLAIN PLANマップは、データベースのSQLトレース機能を使用して生成されたものです。詳細は、Oracle Database PL/SQL言語リファレンスを参照してください。

実行される文は次のとおりです。

SELECT e.ename, d.dname
FROM emp e, dept d
WHERE e.deptno(+) = d.deptno

生成されたEXPLAIN PLANは次のとおりです。

OPERATION            OPTIONS     OBJECT_NAME   POSITION
------------------ ----------- --------------- --------
SELECT STATEMENT
  MERGE JOIN     OUTER                                1
   SORT                  JOIN                         1
     TABLE ACCESS FULL                 DEPT           1
   SORT                  JOIN                         2
     TABLE ACCESS FULL                 EMP            1

Oracle Reportsのデータをチューニングする際、Oracle RDBMSには、コストベース・オプティマイザとルールベース・オプティマイザという2種類のオプティマイザがあるということを理解しておく必要があります。デフォルトでは、コストベース・オプティマイザは、スループットの観点から(つまり、アクセスするすべての行を最小限のリソースで処理する)最適な実行計画を作成します。チューニング担当者は、オプティマイザのアプローチと目標を設定し、コストベースの最適化に必要な統計を収集することで、オプティマイザの選択に影響を与えることができます。コストベース・オプティマイザを使用することで、SQLのチューニングに関連する煩雑さはほとんどなくなります。一方、データの配布とオプティマイザ・ルールを理解することで、任意の方法を選択でき、実行計画をより強力に制御できます。たとえば、SQL文では、次のいずれかを実行できます。

  • オプティマイザに、レスポンス時間の最適化(つまり、アクセスする最初の行を最小限のリソースを使用して処理する)を目指すというヒントを指定します。

  • 索引が必要ないことを指定します。


    注意:

    大規模な問合せの場合は、次のいずれかを必ず実行してください。
    • コストベース・オプティマイザをアクティブにし、DBMS_STATSパッケージ、COMPUTER STATISTICSオプションまたはANALYZEコマンドを使用して統計を収集します。

    • ルールベース・オプティマイザにより指定されたルールに従うすべてのSQLを最適化します。


データベース・オプティマイザの機能の詳細は、Oracle Fusion Middlewareのドキュメントを参照してください。

24.2.9 PL/SQL

ORA_PROFビルトイン・パッケージを使用して、レポートのPL/SQLプログラム・ユニットをチューニングします。ORA_PROFビルトイン・パッケージに含まれるプロシージャ、ファンクションおよび例外により、コードの実行にかかった時間を追跡できます。

PROCEDURE timed_proc (test VARCHAR2) IS
  i PLS_INTEGER;
BEGIN
  ORA_PROF.CREATE_TIMER('loop2');
  ORA_PROF.START_TIMER('loop2');
  ColorBand_Program_Unit;
  ORA_PROF.STOP_TIMER('loop2');
  TEXT_IO.PUTF('Loop executed in %s seconds.\n',
  ORA_PROF.ELAPSED_TIME('loop2'));
  ORA_PROF.DESTROY_TIMER('loop2');
END;

このプロシージャでは、まずタイマーが作成され開始されます。次に、サブプログラムが実行され、それが終了するとタイマーが停止し、サブプログラムの実行にかかった時間が表示されます。完了すると、タイマーが破棄されます。


注意:

ORAビルトイン・パッケージの詳細は、Oracle Reportsのオンライン・ヘルプを参照してください。

大量のデータベース操作を実行するPL/SQLプログラム・ユニットは、データベース・ストアド・プロシージャとして実装するようにします。ストアド・プロシージャは、Oracleデータベースで直接実行されるため、ローカルのPL/SQLプログラム・ユニットに比べて、より高速に操作を実行できます。ローカルのPL/SQLプログラム・ユニットでは、Oracle Reports BuilderのPL/SQLパーサー、データベースのSQLパーサーが使用されます。さらに、ネットワーク・トリップも含まれます。

データベース操作を実行しないPL/SQLプログラム・ユニットは、オブジェクト・ナビゲータの「プログラム・ユニット」ノードを使用して、可能なかぎりローカルにコーディングしてください。PL/SQLプログラム・ユニットのローカル化は、外部PL/SQLライブラリからPL/SQLを実行する場合よりもパフォーマンス上のメリットがあります。外部PL/SQLライブラリは、コード共有のメリットを活用できる場合にのみ使用します。

SRW.DO_SQLビルトイン・プロシージャの使用は、できるだけ控えめにしてください。SRW.DO_SQLビルトイン・プロシージャへのコールでは、毎回、通常の問合せと同様に、コマンドの解析とバインドが実行され新しいカーソルがオープンします。ただしこの操作は、SRW.DO_SQLビルトイン・プロシージャを所有するオブジェクトを起動するたびに発生する点で、通常の問合せとは異なります。

たとえば、式列内のPL/SQLブロックがSRW.DO_SQLビルトイン・プロシージャをコールし、データ・モデル・グループにより100レコードが返されたとします。この場合、解析、バインド、カーソル作成操作が100回発生します。したがって、SRW.DO_SQLビルトイン・プロシージャは、通常のSQLでは実行できない操作(一時表の作成やその他のDDL操作の実行)、および実行回数が少ないところ(各レポートで1回だけ起動されるトリガー内など)で使用してください。

SRW.DO_SQL ビルトイン・プロシージャを使用する主な理由は、一時表の作成や削除などのDDL操作の実行です。次の例では、SRW.DO_SQLビルトイン・プロシージャを使用して表を作成します。表の名前は、ランタイム・パラメータ・フォームで入力されるパラメータによって決まります。


注意:

SRW.DO_SQLビルトイン・プロシージャを含むSRWビルトイン・パッケージの詳細は、Oracle Reportsのオンライン・ヘルプを参照してください。

SRW.DO_SQL (`CREATE TABLE' || :tname ||`(ACCOUNT NUMBER
  NOT NULL PRIMARY KEY, COMP NUMBER (10,2))');

24.2.10 Javaストアド・プロシージャ

Javaストアド・プロシージャを使用すると、サーバー・レベルでビジネス・ロジックを実装できるため、アプリケーションのパフォーマンス、スケーラビリティおよびセキュリティが向上します。Oracleデータベースでは、PL/SQLストアド・プロシージャとJavaストアド・プロシージャをデータベースに格納できます。一般に、プロシージャの拡張を必要とするSQLプログラマはPL/SQLを使用し、Oracleデータへの容易なアクセスを必要とするJavaプログラマはJavaを使用します。Javaストアド・プロシージャのほうがより高い柔軟性を持ちますが、ある程度のオーバーヘッドが生じます。各自のニーズに応じて、パフォーマンスと柔軟性のトレードオフのバランスをとってください。

Javaストアド・プロシージャの詳細は、Oracle Database Java開発者ガイドを参照してください。

24.2.11 Java Importer

Oracle PL/SQLは強力で生産性の高い開発環境ですが、外部のアプリケーション・サービスやプロバイダとの統合が必要になる場合があります。こうした外部アプリケーション・サービスやプロバイダの多くで、Javaを使用した統合点を提供するケースが増えています。Oracle ReportsはOracle Java Importerと統合することで、外部の中間層Javaクラスに含まれるビジネス・ロジックの起動が容易になります。Java Importerでは、選択した各JavaクラスのPL/SQLラッパー・パッケージが宣言的に作成され、PL/SQLファンクションおよびプロシージャ経由で特定されたそのクラスのメソッドが公開されます。これにより、レポートの実行時に、Javaオブジェクトのインスタンス化、使用、破棄を行うことが可能になります。この強力な拡張によりJavaコードを自分で記述する必要はなくなりますが、ある程度のオーバーヘッドが生じます。指定したクラスごとに、別々のPL/SQLパッケージが生成されます。PL/SQLジェネレータは、JavaメソッドからPL/SQLパッケージを生成するときに型変換を行います。PL/SQLパッケージの新しいファンクションを使用してJavaオブジェクト・インスタンスが作成され、Java Importerにより生成されると、その結果は常にJOBJECT型の変数に格納されます。グローバル参照を削除せずに次々に蓄積していくと、JVMのメモリー消費が増加するため、Javaオブジェクトの永続化には注意が必要です。