データベース管理において、Oracle は非常に一般的に使用される重要なデータベースです。運用とメンテナンスでは、データベースの実行、特に実行された SQL ステートメントを監視することが必要になることが多く、これは SQL パフォーマンスの追跡と最適化に非常に役立ちます。この記事では、Oracle データベースで実行されている SQL ステートメントをクエリする方法を紹介します。
アクティブな SQL ステートメントをクエリするためのツール
Oracle は、アクティブな SQL ステートメントをクエリするためのツールをいくつか提供しています。これらのツールには次のものが含まれます。
実行中の SQL ステートメントをクエリするための SQL スクリプト
Oracle データベースでは、2 つのシステム ビュー V$SESSION および V$SQL を使用して、アクティブな SQL ステートメントをクエリできます。
V$SESSION ビューには、各セッションで実行されている SQL 文の識別子である各セッションの SQL_ID を含む、現在アクティブなセッション情報がすべて含まれます。
V$SQL ビューには、SQL_ID、SQL_TEXT など、コンパイルされたすべての SQL ステートメントに関する情報が含まれています。
実行中の SQL ステートメントをクエリするための SQL スクリプトをいくつか示します:
SELECT s. sid 、s.serial#、s.sql_id、s.sql_child_number、t.sql_text
FROM v$session s、v$sqltext_with_newlines t
WHERE s.sql_id = t.sql_id
AND s.status = ' ACTIVE'
AND s.username <> 'SYS';
このスクリプトは、すべてのアクティブなセッションによって実行された SQL_ID と対応する SQL テキストを返します。
SELECT s.sid、s.serial#、s.username、s.status、t.sql_id、 t .sql_text、
s.last_call_et、s.logon_time、s.program、s.module、s.action
FROM v$session s、v$sqltext_with_newlines t
WHERE s.sql_id = t.sql_id
AND s.status = 'ACTIVE'
AND s.username <> 'SYS';
このスクリプトは、アクティブなセッションによって実行された SQL_ID と、ユーザーを含む詳細な SQL 情報を返します。名前、ステータス、最近の実行時間、プログラム名、アクション、SQL テキストなど。
SELECT s.sid、s.serial#、s.username、s.status、t.sql_id、t 。 sql_text,
s.last_call_et, s.logon_time, s.program, s.module, s.action
FROM v$session s, v$sqltext_with_newlines t
WHERE s.sql_id = t.sql_id
AND s.status = 'ACTIVE'
AND s.username = 'your_username';
このスクリプトは、ユーザーによって実行されている SQL ステートメントと、対応する詳細情報を返します。
SELECT s.sid、s.serial#、s.username、s.status、t.sql_id、t.sql_text、
s.last_call_et、s.logon_time、s.program、s.module、s.action
FROM v$session s、v$sqltext_with_newlines t
WHERE s.sql_id = t.sql_id
AND s.STATUS = 'ACTIVE'
AND s.username <> 'SYS'
AND s.sql_id IN (
SELECT MIN(sql_id)
FROM v$session
WHERE ユーザー名<> 'SYS'
AND STATUS = 'ACTIVE'
GROUP BY username
);
このスクリプトは、ユーザー名とステータス、最近の状態を含む、最初に実行された SQL ステートメントを返します。実行時間、プログラム名、アクション、SQL テキストなど。
SELECT s.sid、s.serial#、s.username、s.status、t.sql_id、t.sql_text、
s.last_call_et、s.logon_time、s.program、s.module、s.action
FROM v$session s、v$sqltext_with_newlines t
WHERE s.sql_id = t.sql_id
AND s.STATUS = 'ACTIVE'
AND s.username <> 'SYS'
AND s.sql_id IN (
SELECT MAX(sql_id)
FROM v$session
WHERE ユーザー名<> 'SYS'
AND STATUS = 'ACTIVE'
GROUP BY username
);
このスクリプトは、ユーザー名、ステータス、最近の内容を含む、最後に実行された SQL ステートメントを返します。実行時間、プログラム名、アクション、SQLテキストなど。
概要
Oracle データベース管理では、実行中の SQL ステートメントをクエリする必要があることがよくあります。 Oracle は、アクティブな SQL 文をクエリするためのシステム ビューを提供します。これらのビューをクエリし、SQL スクリプトを使用することで、アクティブな SQL 文と関連情報を簡単にクエリして、SQL パフォーマンスを最適化および監視できます。同時に、Oracle Enterprise Manager および Oracle SQL Developer は、個人のニーズに応じて選択して使用できる SQL 文のクエリ機能も提供します。
以上がOracleクエリ実行SQLの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。