データベース操作の作成
DBMS_SQL_MONITORパッケージ・サブプログラムを使用して、コンポジット・データベース操作を作成できます。
次の例では、DBOP_EXAMPLEという名前のデータベース操作を作成します。例では、データベース操作を開始します。顧客ごと、都市ごとに最大売上高を選択するPL/SQLプロシージャがあります。次に、2人以上の顧客がいる都市のすべての顧客の最大売上高を選択するSQL文があります。最後に、データベース操作を終了します。
例5-1 データベース操作の作成
VAR eid NUMBER
EXEC :eid := DBMS_SQL_MONITOR.BEGIN_OPERATION('DBOP_EXAMPLE');
declare
--
v1 number;
--
CURSOR c1 IS
SELECT cust_city
FROM (SELECT COUNT(*) cnt, cust_city
FROM sh.customers GROUP BY cust_city
ORDER BY 1 desc);
--
BEGIN
FOR i IN c1
LOOP
--
v1 := 0;
--
SELECT MAX(amount_sold)
INTO v1
FROM sh.sales
WHERE cust_id IN (select cust_id FROM sh.customers WHERE cust_city=i.cust_city);
--
DBMS_OUTPUT.PUT_LINE('Amount: '||v1);
--
END LOOP;
--
END;
/
SELECT MAX(asld) FROM
(SELECT MAX(amount_sold) asld, cust_id FROM sh.sales WHERE cust_id IN
(SELECT cust_id FROM sh.customers WHERE cust_city IN
(SELECT cust_city FROM
(SELECT count(*) cnt, cust_city FROM sh.customers
GROUP BY cust_city HAVING COUNT(*) > 1)
))
GROUP BY cust_id)
/
EXEC DBMS_SQL_MONITOR.END_OPERATION('DBOP_EXAMPLE',:eid);ノート:
Oracle Database19c以降では、管理権限のないデータベース・ユーザーは、DBMS_SQL_MONITORパッケージ・サブプログラムを使用してコンポジット・データベース操作を作成し、Cloud Controlの「監視されたSQL実行」ページにナビゲートすることで、実行計画やパフォーマンス・メトリックを含む、それらの操作のSQL実行の詳細を表示することもできます。
参照:
-
APIを使用したデータベース操作の監視の詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。
-
DBMS_SQL_MONITORパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。