Oracle® Fusion Middleware Oracle Reports ServicesレポートWeb公開ガイド 11g リリース 1 (11.1.1) B61375-02 |
|
![]() 前 |
![]() 次 |
レポートのチューニングに向けた最初の手順は、レポートの実行時にどの部分で多くの時間が費やされているかを突き止めることです。データの取出し、取り出したデータのフォーマット、ランタイム・リソースや配布の待機などの部分で、多くの時間が費やされている場合もあります。レポートのレイアウトが最大限に効率化されチューニングされていたとしても、非効率的なSQLが原因でデータの取出しに多くの時間が費やされていれば、効果は限定されます。
この項では、レポートのパフォーマンスの監視に使用できるツールについて説明します。
Oracle Enterprise Managerを使用してReports Serverの管理と監視を行う方法の詳細は、第7章「Oracle Enterprise ManagerによるOracle Reports Servicesの管理」を参照してください。
すべてのOracle Reportsログ・ファイルは、Oracle Diagnostic Logging(ODL)形式に準拠します。この形式は、Oracle Fusion Middlewareにおいて、ログ形式、メッセージ・タイプおよびログ管理ディレクティブ用の標準であります。ログ・ファイルのエントリは、テキスト形式(デフォルト)またはXML形式です。詳細は、『Oracle Fusion Middleware管理者ガイド』を参照してください。
ログ・ファイルのデフォルトの場所
ログ・ファイルのデフォルトの場所は、表24-3を参照してください。
表24-3 ログ・ファイルのデフォルトの場所
コンポーネント | 場所、ファイル名 |
---|---|
Reportsスタンドアロン・サーバー |
サーバー・ログ・ファイル:
エンジン・ログ・ファイル:
通信ログ・ファイル:
|
Reportsインプロセス・サーバーおよびサーブレット・ログ・ファイル |
インプロセス・サーバー:
インプロセス・サーバー・エンジン:
サーブレット:
|
Reportsツール・ログ・ファイル (Reports Builder、Reports Runtime、Reports Client) |
ランタイム:
通信ログ・ファイル:
|
Reports Bridgeログ・ファイル |
|
ヒント: rwrun 、rwbuilder 、rwclient のようなReportsツール・コンポーネントの複数のインスタンスを実行する場合、プロパティ名keepOpen を値false とともに、次の場所にあるlogging.xmlファイルのログ・ハンドラ要素に追加する必要があります。
これにより、ログ・エントリが書き込まれるたびにログ・ファイルを開いて閉じることができます。 |
表24-4 11gのODLメッセージ・タイプと10.1.2のトレース・オプションとの比較
ODLメッセージ・タイプ: レベル(11g) | 対応するトレース・オプション(10g リリース2(10.1.2)) | 注意 |
---|---|---|
INCIDENT_ERROR: 1 |
TRACE_EXC |
例外(予期しない内部エラー) |
ERROR: 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-5に記載された属性が記録されます。
表24-5 ログ・ファイルの属性
属性 | 説明 |
---|---|
Time stamp |
メッセージが生成された日時です。 |
Component ID |
ReportsメッセージにはREPのコンポーネントIDがあります。 |
メッセージ・タイプ |
メッセージは、エラー、インシデント・エラー、警告、通知およびトレースの5つのタイプに分類されます(詳細は次の表を参照)。 |
Message Level |
各メッセージはレベルを示す整数値(1から32)で表されます。 |
Message Text |
メッセージの本文です。 |
Message ID |
コンポーネントIDとともに使用される一意な数値のIDです(REP 50127など)。これらのIDには十分な説明が用意されており、適切な原因と処置が関連付けられます。 |
Execution Context ID |
グローバルに一意の順序番号で、一連の実行に関連付けられます。発信コンポーネントが関係します。同じ一連の実行に関与する複数のコンポーネントからのメッセージを関係付けるために使用されます。このIDは他のコンポーネントに送信されたすべてのメッセージに含まれます。このIDが発信コンポーネントから渡されないと、Oracle Reportsが生成します。 |
Module ID |
メッセージを発信した特定モジュールです。Oracle Reportsのファンクション・モジュール(サーバー、エンジン、ビルダーなど)になります。 |
Process ID |
オペレーティング・システムのPIDで、メッセージを生成したプロセスの識別に使用します。 |
Thread ID |
メッセージを生成した実行における一連の実行の識別子です。 |
Oracle Reportsのロギング・メカニズムでは、表24-6に示すように、5つの事前定義ODLメッセージ・タイプがサポートされています。
表24-6 ODLメッセージ・タイプ
メッセージ・タイプ | 説明 |
---|---|
インシデント・エラー |
内部的な原因や予期しない原因によりプログラムでエラーが発生し、その問題をOracleサポート・サービスに報告する必要がある場合に使用されます。 |
エラー |
既知の問題が発生しシステム管理者が注意を払う必要がある場合に使用されます。 |
警告 |
確認が必要で処置を講じないとエラーが発生する可能性のあるアクションや条件が検出された場合に使用されます。 |
通知 |
ログインが正常に行われたなど、通常の操作やイベントを報告する際に使用されます。 |
トレース |
すべてのデバッグ文が示されます。 |
ログ・ファイルは、次のいずれかの方法で表示できます。
注意: デフォルトでは、ログ・ファイルがXMLフォーマットである場合、そのログ・ファイルをMicrosoft Internet Explorerで開くことはできません。Microsoft Internet ExplorerでXMLファイルを開くには、次のような最上位レベルの要素を持つラッパー・ファイルを作成し、その中にログ・ファイルを追加する必要があります。. <?xml version="1.0"?> <!DOCTYPE LOG [ <!ENTITY log0 SYSTEM "log.xml"> ]> <LOG> &log0; </LOG> . |
Oracle Enterprise Managerの使用
第7章「Oracle Enterprise ManagerによるOracle Reports Servicesの管理」の第7.11.1項「ログ・ファイルの表示および検索」を参照してください。
WLSTコマンドの使用
第24.3.4項「ロギング関連のWLSTコマンド」を参照してください。
コマンドラインの使用
コマンド・ラインから次のディレクトリに移動し、ログファイルを開いて表示します。
Reports Serverの場合:
ORACLE_INSTANCE/diagnostics/logs/ReportsServerComponent/<servername>
Oracle Reports Bridgeの場合:
ORACLE_INSTANCE/diagnostics/logs/ReportsBridgeComponent/<bridgename>
注意: Reports Bridgeコンポーネント・ディレクトリは、デフォルトでは作成されず、 Reports Bridgeが作成されるときに作成されます。 |
Reportsツール・コンポーネントの場合(rwrun
、rwbuilder
、rwclient
を含む):
ORACLE_INSTANCEdiagnostics/logs/ReportsToolsComponent/ReportsTools
Oracle Reports Servletの場合(Reportsアプリケーションの場合):
$FMW_HOME/user_projects/domains/<domain_name>/servers/WLS_REPORTS/logs/reports
注意: logging.xml ファイルを変更し、Reportsコンポーネントに対するトレース情報を有効化する必要があります。
|
Oracle Enterprise Managerで用意されている次の機能を使用して、ログ・ファイルを管理できます。
ロギング情報を指定する機能
ログ・エントリの様々な属性に基づいてログ・ファイル内部を検索する機能
傾向メトリック(すなわち、ログ・ファイルに記録された各種タイプのエラー件数(たとえば、INCIDENT_ERROR
(インシデント・エラー)が1件、ERROR
(エラー)が20件、WARNING
(警告)が35件など))を表示する機能
詳細は、第7章「Oracle Enterprise ManagerによるOracle Reports Servicesの管理」の第7.18.1項「ロギング情報の指定」を参照してください。
Oracle Reportsでは、次のような重要なイベントを監査します。
インプロセス・サーバーとスタンドアロン・サーバーに対する認証と認可の成功と失敗
Reportsサーブレットに対するユーザーのロールに基づいたWebコマンド・チェックの成功と失敗
監査ログ・ファイルの構成
監査ログを構成する手順は、次のとおりです。
J2EEアプリケーションの場合(インプロセス・サーバー): Enterprise Managerを使用して、監査ログ構成ファイルを変更します。詳細は、第7.12項「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コンポーネントの場合: $ORACLE_INSTANCE/auditlogs/ReportsServer/<ReportsServerComponent>/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" - - - - - -
WebLogic Scripting Tool(WLST)はコマンド・ライン・スクリプト・インタフェースです。このツールにより、管理作業の実行、およびWebLogic Serverのインスタンスとドメインに対して行うWebLogic Server構成の変更が容易になります。
WLSTシェルは次のコマンドを実行すると起動できます。
ORACLE_HOME/common/bin/wlst.sh wls:/offline> connect("weblogic","weblogic", "hostname:7001") wls:/domain2/serverConfig> domainRuntime()
次のWLSTコマンドを使用して、Reportsコンポーネントを実行できます。
WLSTシェルは次のコマンドを実行すると起動できます。
ORACLE_HOME/common/bin/wlst.sh wls:/offline> connect("weblogic","weblogic", "hostname:7001") wls:/domain2/serverConfig> domainRuntime() wls:/domain2/domainRuntime> listLogs(target="opmn:cinst56/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()
次のWLSTコマンドを使用して、Reportsコンポーネントを実行できます。
WLSTシェルは次のコマンドを実行すると起動できます。
ORACLE_HOME/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
次のWLSTコマンドを使用して、ログを構成します。
次のWLSTコマンドを使用して、ログを表示します。
listLoggers
コマンドを使用して、ログ出力のリストおよび各ログ出力のレベルを表示できます。
表24-7に、listLoggers
コマンドでサポートするパラメータを示します。
表24-7 listLoggersのパラメータ
パラメータ | 説明 |
---|---|
target |
WebLogic Serverの名前。 デフォルト値は、WLSTの接続先となるサーバーです。 |
pattern |
ログ出力名のフィルタ処理に使用される正規表現パターン。デフォルト・パターンはありません。パターンを指定しないと、すべてのログ出力が返されます。 |
runtime |
操作によりランタイム・ログ出力と構成ログ出力のどちらがリストされるかを決定するJythonブール値(0または1)。 デフォルト値は1です。 |
戻り値
キーがログ出力名で関連値がログ出力レベルであるPyDictionaryオブジェクト。
例
listLoggers
コマンドの例を次に示します。
listLoggers()
listLoggers(pattern="oracle.*")
listLoggers(runtime=0)
listLoggers(target="server1")
注意:
|
getLogLevel
コマンドを使用して、特定のログ出力のログ・レベルを取得できます。
表24-8に、getLogLevel
コマンドでサポートするパラメータを示します。
表24-8 getLogLevelのパラメータ
パラメータ | 説明 |
---|---|
target |
WebLogic Serverの名前。 デフォルト値は、WLSTの接続先となるサーバーです。 |
logger |
ログ出力の名前。 |
runtime |
操作によりランタイム・ログ出力と構成ログ出力のどちらがリストされるかを決定するJythonブール値(0または1)。 デフォルト値は1です。 |
戻り値
文字列としてのログ出力レベル。
例
getLogLevelコマンドの例を次に示します。
getLogLevel(logger="oracle")
getLogLevel(logger="oracle")
getLogLevel(logger="oracle", target="server2")
注意:
|
setLogLevel
コマンドを使用して、特定のログ出力のログ・レベルを設定できます。
表24-9に、setLogLevel
コマンドでサポートするパラメータを示します。
表24-9 setLogLevelのパラメータ
パラメータ | 説明 |
---|---|
|
WebLogic Serverの名前。 デフォルト値は、WLSTの接続先となるサーバーです。 |
|
ログ出力の名前。 デフォルト値はありません。 |
|
レベル名。Javaレベル(INFO、FINEなど)またはODLレベル(NOTIFICATION:1、TRACE:1など)のどちらかになります。 デフォルト値はありません。 |
|
操作によりランタイム・ログ出力と構成ログ出力のどちらがリストされるかを決定するJythonブール値(0または1)。 デフォルト値は1です。 |
|
レベルを構成ファイルに保存するかどうかを決定するJythonブール値(0または1)。 デフォルト値は1です。 |
戻り値
setLogLevel
コマンドの戻り値はありません。
例
setLogLevel
コマンドの例を次に示します。
setLogLevel(logger="oracle.my.logger", level="NOTICATION:1")
setLogLevel(logger="oracle.my.logger", level="TRACE:1", persist=0)
setLogLevel(target="server1", logger="oracle.my.logger", level="WARNING", runtime=0)
注意:
|
listLogHandlers
コマンドを使用して、1つ以上のログ・ハンドラの構成を表示できます。
表24-10にlistLogHandlers
コマンドでサポートするパラメータを示します。
表24-10 listLogHandlersのパラメータ
パラメータ | 説明 |
---|---|
|
WebLogic Serverの名前。 デフォルト値は、WLSTの接続先となるサーバーです。 |
|
ログ・ハンドラの名前。名前が指定されないと、すべてのハンドラがリストされます。 |
戻り値
ハンドラごとに1つのエントリを含むjava.util.List。各エントリは、ハンドラを説明するjavax.management.openmbean.CompositeDataオブジェクトです。
例
listLogHandlers
コマンドの例を次に示します。
listLogHandlers()
listLogHandlers(name="odl-handler")
listLogHandlers(target="server1")
注意:
|
configureLogHandler
コマンドを使用して、既存ログ・ハンドラの構成、新規ログ・ハンドラの追加または既存ハンドラの削除ができます。
表24-11にconfigure LogHandler
コマンドでサポートするパラメータを示します。
表24-11 configure LogHandlerのパラメータ
パラメータ | 説明 |
---|---|
|
WebLogic Serverの名前。 デフォルト値は、WLSTの接続先となるサーバーです。 |
|
ログ・ハンドラの名前。 |
|
ODLハンドラのmaxFileSize属性の値。 この値は数値を表す文字列です。その後にサイズの単位(kはキロバイト、mはメガバイト、gはギガバイト)を示す接尾辞が続く場合があります。 |
|
ODLハンドラのmaxLogSize属性の値。 この値は数値を表す文字列です。その後にサイズの単位(kはキロバイト、mはメガバイト、gはギガバイト)を示す接尾辞が続く場合があります。 |
|
ODLハンドラのrotationFrequncyの値。 この値は数値を表す文字列です。その後に時間単位(分はm、時はh、日はd)を示す接尾辞が続く場合があります。デフォルトの時間単位は分(m)です。特別な値(HOUR、HOURLY、DAY、DAYLY、WEEK、WEEKLY、MONTH、MONTHLY)も指定可能で、分単位の数値に変換されます。 |
|
ベース・ローテーション時間。ローテーション頻度パラメータで使用されます。 この値は日時の値を表す文字列にする必要があります。ISO 8601の日時書式で表す完全な書式の場合と、時と分のみで表す短い書式の場合があります。デフォルトのbaseRotationTimeは00:00です。 |
|
保存期間(単位は分)。 この値は数値を表す文字列にする必要があります。その後に時間単位(分はm、時はh、日はd)を示す接尾辞が続く場合があります。デフォルトの時間単位は分(m)です。特別な値(HOUR、HOURLY、DAY、DAYLY、WEEK、WEEKLY、MONTH、MONTHLY)も指定可能で、分単位の数値に変換されます。 |
|
ODLハンドラのフォーマット。 この値は、ODL-TextまたはODL-XMLの文字列にする必要があります。デフォルトの書式はODL-Textです。 |
|
ログ・ファイルのキャラクタ・エンコーディング。 |
|
ログ・ファイルのパス。 |
|
ハンドラの実装を用意しているJavaクラスの名前。 java.util.logging.Handlerまたはoracle.core.ojdl.logging.HandlerFactoryのインスタンスにする必要があります。 |
|
追加するか更新するハンドラ・プロパティの名前。 プロパティ値は、propertyValueパラメータで指定します。 |
|
propertyNameパラメータで定義されるハンドラ・プロパティの新規値。 |
|
Jythonブール値。propertyNameとpropertyValueのパラメータとともに使用して、ハンドラに追加する新規プロパティを定義します。 |
|
1つ以上の削除対象ハンドラ・プロパティのリスト。 |
|
追加するハンドラの名前。 |
|
削除するハンドラの名前。 |
|
ログ出力名のリスト。ハンドラは特定のログ出力名に追加されます。 |
|
ログ出力名のリスト。ハンドラは特定のログ出力から削除されます。 |
注意: listLogHandlersコマンドは、システム・コンポーネント(Reports ServerやReports Bridgeなど)ではサポートされていません。WLSTコマンドの詳細は、Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンスを参照してください。 |
listLogs
コマンドを使用して、1つ以上のコンポーネントのリストを表示できます。
表24-12に、listLoggers
コマンドでサポートするパラメータを示します。
表24-12 listLogsのパラメータ
パラメータ | 説明 |
---|---|
target |
システム・コンポーネントまたはWebLogic Serverの名前。 接続モードでは、デフォルト・ターゲットはWebLogicドメインです。切断モードでは、デフォルトはありません。 |
oracleInstance |
切断モードでは、oracleInstanceによってORACLE_INSTANCE(Java EEでないインスタンス・ホームまたはWebLogicドメイン・ホーム)へのパスが定義されます。 このパラメータは接続モードでは無視され、切断モードでは必須です。 |
unit |
レポートのファイル・サイズに使用する単位を定義します。有効値はB(バイト)、K(キロバイト)、M(メガバイト)、G(ギガバイト)またはH(判読可能形式で表した表示サイズで、UNIXのls -hオプションに類似)です。 デフォルト値はHです。 |
fulltime |
Jythonブール値。 デフォルト値はfalseです。 |
戻り値
各ログに1つの要素を含むPyArray。配列の要素は各ログを説明するjavax.management.openmbean.CompositeDataオブジェクトです。
例
listLogs
コマンドの例を次に示します。
listLogs()
listLogs(target="server1")
listLogs(target="opmn:instance1/ohs1")
listLogs(oracleInstance="/middleware/user_projects/domains/base_domain", target="server1")
注意:
|
displayLogs
コマンドを使用して、診断ログの内容を表示できます。
表24-13に、listLoggers
コマンドでサポートするパラメータを示します。
表24-13 displayLogsのパラメータ
パラメータ | 説明 |
---|---|
target |
システム・コンポーネントまたはWebLogic Serverの名前。 接続モードでは、デフォルト・ターゲットはWebLogicドメインです。切断モードでは、デフォルトはありません。 |
oracleInstance |
切断モードでは、oracleInstanceによってORACLE_INSTANCE(Java EEでないインスタンス・ホームまたはWebLogicドメイン・ホーム)へのパスが定義されます。 このパラメータは接続モードでは無視され、切断モードでは必須です。 |
query |
ログ・ファイルの内容のフィルタ処理に使用される式を指定する文字列。 単純な式には |
戻り値
コマンドでは、returnDataパラメータがtrueに設定されている場合にのみ値を返します。デフォルトでは、データを返しません。使用するオプションによって戻り値は異なります。
例
displayLogsコマンドの例を次に示します。
displayLogs(tail=100)
displayLogs(target='opmn:instance1/ohs1', last=60)
displayLogs(groupBy=['COMPONENT_ID', 'MSG_TYPE'])
displayLogs(query='MSG_TYPE equals ERROR or MSG_TEXT contains Exception")
displayLogs(query='APP equals myApp', last=60)
displayLogs(query='ECID equals 0000Hl9TwKUCslT6uBi8UH18lkWX000002')
注意:
|
次のWLSTコマンドを使用してメトリックを表示します。
displayMetricTableNames
コマンドを使用して、ネイティブWebLogicメトリックなどの表示可能メトリック表名のリストを表示できます。
表24-14に、displayMetricTableNames
コマンドのパラメータを示します。
表24-14 displayMetricTableNamesのパラメータ
パラメータ | 説明 |
---|---|
|
メトリックを取り出す管理対象サーバーを指定します。これはオプションです。指定可能な値は管理対象サーバー名のリストです。 |
例:
次のコマンドを使用してWLSTシェルを起動します。
ORACLE_HOME/common/bin/wlst.sh > connect('weblogic','weblogic','hostname:7001') wls:/domain1/serverConfig > displayMetricTableNames() ContextManager JVM JVM_ClassLoader JVM_Compiler JVM_GC JVM_Memory JVM_MemoryPool JVM_MemorySet JVM_OS JVM_Runtime JVM_Thread JVM_ThreadStats Reports_Server_Information Reports_Server_Performance Reports_Server_Response Reports_Servlet_Response dms_cProcessInfo opmn opmn_component:ResourceUsage opmn_component:ResourceUsage_by_component opmn_component:ResourceUsage_no_rate opmn_component:Response opmn_connect opmn_header opmn_host_statistics opmn_ias_component opmn_ias_instance opmn_ipmon opmn_ons opmn_ons_connections
注意: displayMetricTableNames コマンドの使用方法の詳細は、Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンスを参照してください。 |
dumpMetrics
コマンドを使用して、表示可能なすべてのメトリックを表示できます。対象メトリックには、WebLogicメトリックと内部DMSメトリックが含まれます。
表24-15に、dumpMetrics
コマンドでサポートするパラメータを示します。
表24-15 dumpMetricsのパラメータ
パラメータ | 説明 |
---|---|
|
コマンド出力フォーマットを定義します。 これはオプションで、指定可能な値はrawおよびxmlです。 デフォルトはrawフォーマットです。 |
|
メトリックを取り出す管理対象サーバーを指定します。 これはオプションで、指定可能な値は管理対象サーバー名のリストです。 |
例:
次のコマンドを使用してWLSTシェルを起動します。
ORACLE_HOME/common/bin/wlst.sh > connect('weblogic','weblogic','hostname:7001') wls:/domain1/serverConfig > dumpmetrics() ContextManager JVM JVM_ClassLoader JVM_Compiler JVM_GC JVM_Memory JVM_MemoryPool JVM_MemorySet JVM_OS JVM_Runtime JVM_Thread JVM_ThreadStats Reports_Server_Information Reports_Server_Performance Reports_Server_Response Reports_Servlet_Response dms_cProcessInfo opmn opmn_component:ResourceUsage ......
注意: dumpMetrics コマンドの使用方法の詳細は、Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンスを参照してください。 |
displayMetricTables
コマンドを使用して、指定したメトリック表を表示できます。
表24-16に、displayMetricTables
コマンドでサポートするパラメータを示します。
表24-16 displayMetricTablesのパラメータ
パラメータ | 説明 |
---|---|
メトリック表名のオプション・リストです。 デフォルトでは、表示可能なすべてのメトリックを表示します。 |
|
|
メトリック集計パラメータを定義します。これはオプションです。 使用可能値は、Jythonマップの名前/値ペアのセットです。 |
|
メトリックを取り出す管理対象サーバーを指定します。 これはオプションです。指定可能な値は管理対象サーバー名のリストです。 |
例:
次のコマンドを使用してWLSTシェルを起動します。
ORACLE_HOME/common/bin/wlst.sh > connect('weblogic','weblogic','hostname:7001') wls:/domain1/serverConfig> displayMetricTables('Reports_Server_Performance') -------------------------- Reports_Server_Performance -------------------------- Active_Engines.value: 1 Available_Connections.value: 50 Average_Elapsed_Time.value: 0.0 msec Average_Engines.value: 1.0 Average_Response_Time.value: 0.0 msec CurrentJobLoad.value: 0 Current_Jobs.value: 0 Failed_Jobs.value: 0 Failed_Jobs_Ratio.value: 0.0 Finished_Jobs.value: 0 Host: hostname JobLoad.value: 0 Jobs_Queue_Time.value: 0.0 LongRunning_Jobs.value: 0 Maximum_Engines.value: 1 Maximum_Queue_Size.value: 1000 Name: Reports_Server_Performance Parent: /reports/rwserver Potential_Runaway_Jobs.value: 0 Process: ReportsServerComponent:8591386:/cinst48/ReportsServer_hostname_cinst48 Reports_Server_Auth_Time.value: 0.0 Reports_Server_Security.value: 0 Reports_Server_Start_Time.value: 1223884972408 msecs Reports_Version.value: 11.1.1.0.0 Scheduled_Jobs.value: 0 ServerName: /cinst48/ReportsServer_hostname_cinst48 Transferred_Jobs.value: 0 Used_Connections.value: 0 wls:/domain1/serverConfig> displayMetricTables('Reports_Server_Response') ----------------------- Reports_Server_Response ----------------------- Host: hostname Name: Reports_Server_Response Parent: /reports/rwserver Process: ReportsServerComponent:8591386:/cinst48/ReportsServer_hostname_cinst48 Reports_Server_Status.value: 1 Reports_Server_Type.value: 1 ServerName: /cinst48/ReportsServer_hostname_cinst48
注意: displayMetricTables コマンドの使用方法の詳細は、Oracle Fusion Middleware WebLogic Scripting Toolコマンド・リファレンスを参照してください。 |
表24-17に示すWLSTコマンドを使用して、監査ポリシーおよび監査リポジトリ構成を表示および管理します。
表24-17 WLST監査コマンド
使用するコマンド | 用途 | WLSTとの使用 |
---|---|---|
|
監査ポリシー設定を表示します。 |
オンライン |
|
監査ポリシー設定を更新します。 |
オンライン |
|
1つまたはすべてのコンポーネントに対する監査イベントのリストを作成します。 |
オンライン |
このオンライン・コマンドは、フィルタ初期設定、特別なユーザー、カスタム・イベント、最大ログ・ファイル・サイズ、最大ログ・ディレクトリ・サイズなどの監査ポリシー設定を表示します。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
このオンライン・コマンドは、監査ポリシー設定を構成します。フィルタ初期設定、ユーザーの追加または削除、カスタム・イベントの追加または削除を実行できます。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
このオンライン・コマンドは、コンポーネントの属性および監査イベントを表示します。システム・コンポーネントの場合、コンポーネント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 ...
レポート・トレースを有効にすると、レポートの実行時に完了した一連の処理が記録されたテキスト・ファイルが生成されます。トレース・ファイルに記録される情報は豊富で、パフォーマンス・チューニングだけでなく、レポートのデバッグやパフォーマンスのボトルネックの特定にも役立ちます。
Reports Builder(rwbuilder
)およびReports Runtime(rwrun
)では、logging.xml
ファイルでトレース・オプションを指定します。
例:
$ORACLE_INSTANCE/diagnostics/logs/ReportsToolsComponent/ReportsTools/logging.xml
で、トレース・レベルをTrace 32
に指定します。
Reports Server(rwserver
)では、logging.xmlファイルでトレース・オプションを指定します。Reports Serverとエンジンに対して、別々にトレース・ファイルが生成されます。
例:
$ORACLE_INSTANCE/config/ReportsServerComponent/<servername>/logging.xml
で、トレース・レベルをTrace 32
に指定します。
11gでは、個別のレポート用ジョブ・レベルのトレースは存在しません。かわりに、ジョブのECIDに基づいてEnterprise Managerでジョブを検索することのみが可能です。
Oracle Reports Servlet(rwservlet
)の場合、次の場所にあるlogging xmlファイルでトレース・オプションを指定します。
FMW_HOME/user_projects/domains/<domainname>/config/fmwconfig/servers/WLS_REPORTS/logging.xml
Oracle Reports Bridgeトレースの場合、Oracle Enterprise Managerでトレース・オプションを指定します。また、次の場所にあるlogging xmlファイルでトレース・オプションを手動で指定することもできます。
$ORACLE_INSTANCE/config/ReportsBridgeComponent/<ReportsBridgeName>/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-18 Oracle Reports Builder
注意: データソースが非SQLデータソース(テキストやXMLのプラッガブル・データソースなど)の場合は、「Oracle時間」、「UPI」および「SQL」の値は0になります。 |
例24-1では、チューニング作業を、データの問合せとフェッチではなく、フォーマット(Reports時間)に絞り込めばよいことがわかります。
RW_SERVER_JOB_QUEUE
表では、Enterprise Managerで使用できるウィンドウとは別のウィンドウがReports Serverジョブ・キューに用意されます。
Reports Serverでは、ジョブがエンキューされて終了すると、現在のレポートに関する情報がデータベースに送信されます。
この情報は、次のデータを含むRW_SERVER_JOB_QUEUE
表に挿入されます。
ジョブの名前
ジョブの送信者
出力フォーマット
ジョブの現行ステータス
ジョブがキューに入れられた日時、ジョブ実行の開始日時および終了日時
表24-19では、RW_SERVER_JOB_QUEUE
表に含まれる情報について説明します。
表24-19 RW_SERVER_JOB_QUEUE表の構造
列名 | 説明 |
---|---|
JOB_QUEUE |
表示されたジョブの状態(CURRENT、PAST、SCHEDULEDのいずれか)。 |
JOB_ID |
システム生成のジョブID番号。 |
JOB_TYPE |
|
JOB_NAME |
ジョブ送信名(JOBNAMEに値が指定されていない場合はファイル名)。 |
STATUS_CODE |
ジョブの現行ステータス。ステータス・コードの詳細は、表24-20を参照してください。 |
STATUS_MESSAGE |
ステータス・コードに関連する完全なメッセージ・テキスト(レポートが終了した場合のエラー・メッセージも含む)。ステータス・コードの詳細は、表24-20を参照してください。 |
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-20 ジョブ送信のステータス・コード
ステータス・コード | 定義済の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_CODE とSTATUS_MESSAGE の両方に、障害が生じたことが示され、障害の原因が表示されます。 |
Reports Serverのジョブ・キューは、PL/SQL APIの使用を通じて実装されます。これには、リクエストが行われたときに、キュー情報を反映してキュー表を更新する機能があります。この実装は、次のパスで定義します。
ORACLE_HOME\reports\admin\sql\rw_server.sql
このスクリプトは、Oracle 10gデータベースに対する動作が保証されています。
キューを実装するには、次の手順を実行します。
rw_server.sql
ファイルをデータベースにロードします(このファイルは、Oracle Reports ServicesインストールのORACLE_HOME
\reports\admin\sql
にある)。
これによって、レポートのキュー情報を所有し、サーバーのキューAPIに対して実行権限を持つスキーマが作成されます。Oracle6i Reportsとの下位互換性のために、RW_SERVER_QUEUE
というビューも作成されます。
サーバー構成ファイル(スタンドアロン・サーバーの場合はORACLE_INSTANCE\config\ReportsServerComponent\server_name\rwserver.conf
、インプロセス・サーバーの場合は$DOMAIN_HOME/config/fmwconfig/servers/<WLS_SERVER_NAME>/applications/reports_<version>/configuration/rwserver.conf
)でjobStatusRepository
要素のrepositoryconn
プロパティを、キュー・データを所有するスキーマの接続文字列に設定します。詳細は第8.2.1.12項「jobStatusRepository」を参照してください。
また、Oracle Enterprise Managerを使用してjobstatusRepository
を設定する方法もあります。
サーバーは起動時に、定義されたユーザーとして接続し、ジョブ送信をログに記録します。
注意: Oracle Reportsでは、ジョブ・キューに関するログ情報を更新するときに、jobstatusrepository 要素のdbconn プロパティを使用してデータベースに接続します。 |
コマンドラインでSHOWJOBS
を使用して、rwservlet
を通じて実行されているレポートを対象に、Reports Serverのキュー・ステータスをWeb形式で表示できます。
詳細は、第A.8.8項「SHOWJOBS」を参照してください。
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文では、次のいずれかを実行できます。
オプティマイザに、レスポンス時間の最適化(つまり、アクセスする最初の行を最小限のリソースを使用して処理する)を目指すというヒントを指定します。
索引が必要ないことを指定します。
注意: 大規模な問合せの場合は、次のいずれかを必ず実行してください。
|
データベース・オプティマイザの機能の詳細は、Oracle Fusion Middlewareのドキュメントを参照してください。
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))');
Javaストアド・プロシージャを使用すると、サーバー・レベルでビジネス・ロジックを実装できるため、アプリケーションのパフォーマンス、スケーラビリティおよびセキュリティが向上します。Oracleデータベースでは、PL/SQLストアド・プロシージャとJavaストアド・プロシージャをデータベースに格納できます。一般に、プロシージャの拡張を必要とするSQLプログラマはPL/SQLを使用し、Oracleデータへの容易なアクセスを必要とするJavaプログラマはJavaを使用します。Javaストアド・プロシージャのほうがより高い柔軟性を持ちますが、ある程度のオーバーヘッドが生じます。各自のニーズに応じて、パフォーマンスと柔軟性のトレードオフのバランスをとってください。
Javaストアド・プロシージャの詳細は、Oracle Database Java開発者ガイドを参照してください。
Oracle PL/SQLは強力で生産性の高い開発環境ですが、外部のアプリケーション・サービスやプロバイダとの統合が必要になる場合があります。こうした外部アプリケーション・サービスやプロバイダの多くで、Javaを使用した統合点を提供するケースが増えています。Oracle ReportsはOracle Java Importerと統合することで、外部の中間層Javaクラスに含まれるビジネス・ロジックの起動が容易になります。Java Importerでは、選択した各JavaクラスのPL/SQLラッパー・パッケージが宣言的に作成され、PL/SQLファンクションおよびプロシージャ経由で特定されたそのクラスのメソッドが公開されます。これにより、レポートの実行時に、Javaオブジェクトのインスタンス化、使用、破棄を行うことが可能になります。この強力な拡張によりJavaコードを自分で記述する必要はなくなりますが、ある程度のオーバーヘッドが生じます。指定したJavaクラスごとに、別々のPL/SQLパッケージが生成されます。PL/SQLジェネレータは、JavaメソッドからPL/SQLパッケージを生成するときに型変換を行います。PL/SQLパッケージの新しいファンクションを使用してJavaオブジェクト・インスタンスが作成され、Java Importerにより生成されると、その結果は常にJOBJECT
型の変数に格納されます。グローバル参照を削除せずに次々に蓄積していくと、JVMのメモリー消費が増加するため、Javaオブジェクトの永続化には注意が必要です。