ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Reportsレポート作成のためのユーザーズ・ガイド
11gリリース1(11.1.1)
B61376-01
  ドキュメント・ライブラリへ
ライブラリ
製品リストへ
製品
目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

4.16 Oracle Reports Builderの管理

この項では、Oracle Reports Builderを管理する際に実行する可能性がある次のタスクの手順について説明します。

4.16.1 データベース・ロールの設定

この手順を開始する前に、データベース管理者によってロールが作成されて権限がそのロールに付与されていることと、承認されたエンド・ユーザーにそのロールが付与されていることを確認します。詳細は、『Oracleアプリケーション開発者ガイド』を参照してください。

レポートにデータベース・ロールを設定するには:

  1. オブジェクト・ナビゲータで、レポートのプロパティ・アイコンをダブルクリックして、プロパティ・インスペクタを表示します。

  2. レポート」ノードで、「ロール名」プロパティをデータベース管理者がデータベースで定義したとおりに設定します。

  3. 必要に応じて、ロールのパスワードを設定するには、「ロール名」値フィールド内のボタンをダブルクリックして、「ロール設定」ダイアログ・ボックスを表示します。

使用に関する注意

  • コマンドラインでReports Runtime(rwrun)を使用してロールを指定すると、レポートでのロール設定は無視されます。

  • 1つのレポートに設定できるロールは1つのみです。複数のロールを設定するには、他のロールが付与されているロールを設定する必要があります。


    注意:

    PL/SQLトリガーでロールを設定しないでください。PL/SQLがコンパイルできなくなります。

関連項目

第2.9.1項「データベース・ロールについて」

4.16.2 別のフォーマットへの変換

1つ以上のレポート定義またはPL/SQLライブラリを別のファイル・フォーマットに変換するには:

  • Oracle Reports Builderで、「ツール」→「ファイル変換」を選択し、「変換」ダイアログ・ボックスを表示します。

  • Windowsのコマンドラインで、%ORACLE_HOME%\bin\rwconverterと入力し、続けてレポート名と必要な引数を指定します。

4.16.3 SQL文を使用したパフォーマンスの改善

Oracle Reports Builderの機能やPL/SQLより、SQLのほうがすばやく操作を実行できる場合があります。SQLを使用してパフォーマンスが改善される最も一般的な例は、次のとおりです。

  • グループ・フィルタまたはフォーマット・トリガーのかわりに、WHERE句を使用してレコードを除外します。

  • Oracle Reports Builderで文字列を切り捨てるかわりに、SUBSTRファンクションを使用して文字列を切り捨てます。

  • 式やサマリーではなく、問合せで直接計算を実行します。

    理論的説明: SQLでは、サマリーや式よりもすばやく計算を実行できます。WHEREおよびSUBSTRを使用すると、データの取得後ではなく取得中にデータを操作するため、不必要なフェッチが削減されます。少数のレコードを取得する場合と比較して、大量のレコードを取得する場合、パフォーマンスの改善がより顕著になります。

4.16.4 WHERE句を使用したパフォーマンスの改善

複数の問合せを含むデータ・モデルのマトリックス・セル問合せに、WHERE句を追加するとします。複数の問合せを含むデータ・モデルを使用しており、ディメンション問合せがWHERE句によって制限されている場合、WHERE句をマトリックス・セル問合せに追加すると、必要以上のレコードが取得されないようにできます。たとえば、ディメンションに次の問合せがあるとします。

Q_Dept

SELECT DEPTNO FROM DEPT
WHERE DEPTNO < 100

Q_Job

SELECT DISTINCT JOB FROM EMP
WHERE DEPTNO < 100

Q_Filler

セル問合せで必要なレコードのみが取得されるように、次のSELECT文を記述します。

SELECT DEPTNO, JOB, SUM(SAL) FROM EMP
WHERE DEPTNO IN (SELECT DEPTNO FROM DEPT
WHERE DEPTNO < 100) AND JOB IN (SELECT
DISTINCT JOB FROM EMP WHERE DEPTNO < 100)
GROUP BY DEPTNO, JOB

この問合せにWHERE句を追加しない場合、Q_DeptとQ_Jobでの選択にかかわらず、すべての行がデータベースから取得されます。


注意:

副問合せを使用しないWHERE句(WHERE EMP.DEPTNO = DEPT.DEPTNOなど)を追加した場合、問合せはクロス積の値の組合せごとに1度実行されます。この結果、クロス積に多数の組合せがある場合は、Q-Fillerでの問合せが過度に実行されることになります。