Oracle?查看后臺(tái)正在執(zhí)行的?SQL?語句(最新推薦)
在 Oracle 數(shù)據(jù)庫(kù)中,要查看后臺(tái)正在執(zhí)行的 SQL 語句,可以通過查詢動(dòng)態(tài)性能視圖(Dynamic Performance Views)或使用監(jiān)控工具來實(shí)現(xiàn)。
1. 查詢動(dòng)態(tài)性能視圖
(1) 查看當(dāng)前活躍會(huì)話及其執(zhí)行的 SQL
使用 v$session 和 v$sql 視圖關(guān)聯(lián)查詢,獲取正在執(zhí)行的 SQL 信息:
SELECT
s.sid, s.serial#,
s.username,
s.status,
s.sql_id,
s.prev_sql_id,
q.sql_text,
s.program,
s.machine,
s.logon_time
FROM
v$session s
LEFT JOIN
v$sql q ON s.sql_id = q.sql_id
WHERE
s.status = 'ACTIVE' -- 篩選活躍會(huì)話
AND s.type != 'BACKGROUND' -- 排除后臺(tái)進(jìn)程
AND s.sql_id IS NOT NULL;關(guān)鍵字段:
sql_id:當(dāng)前正在執(zhí)行的 SQL 語句的唯一標(biāo)識(shí)。sql_text:SQL 文本內(nèi)容(可能被截?cái)?,完整?nèi)容需從v$sqlarea獲?。?/p>username:執(zhí)行 SQL 的數(shù)據(jù)庫(kù)用戶。program:發(fā)起 SQL 的客戶端程序(如 JDBC、SQL Developer 等)。

(2) 查看長(zhǎng)時(shí)間運(yùn)行的 SQL 操作
使用 v$session_longops 監(jiān)控長(zhǎng)時(shí)間運(yùn)行的操作(如全表掃描、索引重建等)
SELECT
sid, serial#,
opname,
target,
sofar,
totalwork,
ROUND(sofar / totalwork * 100, 2) AS progress_pct,
elapsed_seconds,
time_remaining
FROM
v$session_longops
WHERE
time_remaining > 0; -- 僅顯示未完成的操作SID: 會(huì)話標(biāo)識(shí)符。SERIAL#: 會(huì)話序列號(hào),與 SID 一起用于唯一標(biāo)識(shí)一個(gè)會(huì)話。OPNAME: 正在執(zhí)行的操作名稱。TARGET: 操作目標(biāo)對(duì)象名(如果適用)。TARGET_DESC: 目標(biāo)描述。SOFAR: 到目前為止已完成的工作量。TOTALWORK: 預(yù)估的總工作量。UNITS: 工作量單位。START_TIME: 操作開始的時(shí)間。LAST_UPDATE_TIME: 上次更新此記錄的時(shí)間。TIME_REMAINING: 根據(jù)當(dāng)前速度預(yù)估剩余時(shí)間(秒)。ELAPSED_SECONDS: 自操作開始以來已經(jīng)過去的秒數(shù)。CONTEXT: 內(nèi)部使用的上下文信息。MESSAGE: 描述操作狀態(tài)的消息。USERNAME: 執(zhí)行該操作的用戶名。SQL_ADDRESS: SQL 語句地址。SQL_HASH_VALUE: SQL 語句的哈希值。SQL_ID: SQL 語句的 ID。SQL_PLAN_HASH_VALUE: SQL 計(jì)劃的哈希值。QCINST_ID: 并行查詢協(xié)調(diào)器實(shí)例 ID(如果是并行操作)。QCSID: 并行查詢協(xié)調(diào)器的 SID(如果是并行操作)。QCSERIAL#: 并行查詢協(xié)調(diào)器的 SERIAL#(如果是并行操作)。

2. 查詢 SQL 執(zhí)行詳細(xì)信息
(1) 通過 v$sqlarea 查看完整的 SQL 文本
SELECT
sql_id,
sql_text,
executions,
elapsed_time / 1000000 AS elapsed_sec,
cpu_time / 1000000 AS cpu_sec,
disk_reads,
buffer_gets
FROM
v$sqlarea
WHERE
sql_id = '<your_sql_id>'; -- 替換為實(shí)際的 sql_idsql_id: 每條SQL語句在數(shù)據(jù)庫(kù)中的唯一標(biāo)識(shí)符。這個(gè)ID可以幫助你識(shí)別和追蹤特定的SQL語句。sql_text: 這是完整的SQL語句文本。它顯示了實(shí)際被執(zhí)行的SQL語句內(nèi)容。executions: 表示這條SQL語句已經(jīng)被執(zhí)行了多少次。每次執(zhí)行都會(huì)增加這個(gè)計(jì)數(shù)器。elapsed_time / 1000000 AS elapsed_sec:elapsed_time字段表示SQL語句執(zhí)行所花費(fèi)的總時(shí)間(微秒),通過除以1,000,000轉(zhuǎn)換為秒,并將其重命名為elapsed_sec以便更直觀地理解時(shí)間單位。cpu_time / 1000000 AS cpu_sec:cpu_time字段表示SQL語句執(zhí)行期間消耗的CPU時(shí)間(微秒),同樣通過除以1,000,000轉(zhuǎn)換為秒,并將其重命名為cpu_sec。disk_reads: 這個(gè)字段表示SQL語句執(zhí)行過程中發(fā)生的物理讀取次數(shù),即從磁盤讀取數(shù)據(jù)的次數(shù)。較高的值可能指示性能瓶頸。buffer_gets: 表示邏輯讀的數(shù)量,即SQL語句執(zhí)行過程中從數(shù)據(jù)庫(kù)緩沖區(qū)緩存中獲取的數(shù)據(jù)塊數(shù)量。高數(shù)值可能表明該語句對(duì)系統(tǒng)資源有較高需求。

(2) 查看 SQL 執(zhí)行計(jì)劃
通過 v$sql_plan 分析 SQL 的執(zhí)行計(jì)劃:
SELECT
*
FROM
v$sql_plan
WHERE
sql_id = '<your_sql_id>';3. 使用 Oracle Enterprise Manager (OEM)
Oracle 提供的圖形化工具 Enterprise Manager (OEM) 可以直觀監(jiān)控 SQL 執(zhí)行:
登錄 OEM 控制臺(tái)。
導(dǎo)航到 Performance > SQL Monitoring。
查看實(shí)時(shí) SQL 執(zhí)行的詳細(xì)信息,包括資源消耗、執(zhí)行計(jì)劃等。
4. 使用 Active Session History (ASH)
通過 v$active_session_history 查詢歷史活動(dòng)會(huì)話信息(采樣頻率為每秒一次):
SELECT
sql_id,
session_id,
session_serial#,
sample_time,
event,
wait_time
FROM
v$active_session_history
WHERE
sql_id IS NOT NULL
ORDER BY
sample_time DESC;快速定位問題 SQL
-- 查看消耗最多 CPU 的 SQL
SELECT
sql_id,
sql_text,
executions,
cpu_time / 1000000 AS cpu_sec,
elapsed_time / 1000000 AS elapsed_sec
FROM
v$sqlarea
ORDER BY
cpu_time DESC
FETCH FIRST 10 ROWS ONLY;sql_id: 每條SQL語句在數(shù)據(jù)庫(kù)中的唯一標(biāo)識(shí)符。通過這個(gè)ID可以追蹤和分析特定的SQL語句。sql_text: 這是SQL語句的實(shí)際文本內(nèi)容,顯示了被執(zhí)行的SQL語句的具體內(nèi)容。executions: 表示這條SQL語句已經(jīng)被執(zhí)行了多少次。每次執(zhí)行都會(huì)增加這個(gè)計(jì)數(shù)器,可以幫助你了解該語句的使用頻率。cpu_time / 1000000 AS cpu_sec:cpu_time字段表示SQL語句執(zhí)行期間消耗的CPU時(shí)間(微秒)。通過除以1,000,000將時(shí)間單位轉(zhuǎn)換為秒,并將其重命名為cpu_sec以便更直觀地理解時(shí)間單位。這有助于評(píng)估SQL語句對(duì)CPU資源的占用情況。elapsed_time / 1000000 AS elapsed_sec:elapsed_time字段表示SQL語句執(zhí)行所花費(fèi)的總時(shí)間(微秒),通過除以1,000,000轉(zhuǎn)換為秒,并將其重命名為elapsed_sec。它包括等待時(shí)間和執(zhí)行時(shí)間,可用于評(píng)估SQL語句的整體執(zhí)行效率。
到此這篇關(guān)于Oracle 查看后臺(tái)正在執(zhí)行的 SQL 語句的文章就介紹到這了,更多相關(guān)oracle查詢正在執(zhí)行的sql內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- oracle數(shù)據(jù)庫(kù)慢查詢SQL實(shí)例詳解
- Oracle查詢sql錯(cuò)誤信息的控制和定位
- oracle sql語言模糊查詢--通配符like的使用教程詳解
- 使用SQL語句查詢MySQL,SQLServer,Oracle所有數(shù)據(jù)庫(kù)名和表名,字段名
- oracle 查詢當(dāng)天數(shù)據(jù)的sql條件寫法
- oracle查看執(zhí)行最慢與查詢次數(shù)最多的sql語句
- 查詢Oracle中正在執(zhí)行和執(zhí)行過的SQL語句
- Oracle客戶端與plsql查詢數(shù)據(jù)亂碼修改成中文的快速解決方法
- Oracle SQL樹形結(jié)構(gòu)查詢
- Oracle實(shí)現(xiàn)分頁查詢的SQL語法匯總
相關(guān)文章
Oracle11g數(shù)據(jù)庫(kù)win8.1系統(tǒng)安裝配置圖文教程
這篇文章主要介紹了 Oracle11g數(shù)據(jù)庫(kù)win8.1系統(tǒng)安裝配置圖文教程的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07
解決Oracle?11g?導(dǎo)出數(shù)據(jù)報(bào)?“ORA-01455:?轉(zhuǎn)換列溢出整數(shù)數(shù)據(jù)類型”的問題
這篇文章主要介紹了Oracle?11g?導(dǎo)出數(shù)據(jù)報(bào)?“ORA-01455:?轉(zhuǎn)換列溢出整數(shù)數(shù)據(jù)類型”的問題,文中給大家介紹了ORACLE?11g?導(dǎo)出數(shù)據(jù)的操作步驟,需要的朋友可以參考下2021-12-12
Oracle通過正則表達(dá)式分割字符串 REGEXP_SUBSTR的代碼詳解
這篇文章主要介紹了Oracle通過正則表達(dá)式分割字符串 REGEXP_SUBSTR的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05
Oracle 自定義split 函數(shù)實(shí)例詳解
這篇文章主要介紹了Oracle 自定義split 函數(shù)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-01-01
Oracle數(shù)據(jù)庫(kù)升級(jí)到19C用戶登錄報(bào)錯(cuò)問題解決辦法
oracle是一款非常流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),被廣泛應(yīng)用于各個(gè)領(lǐng)域,下面這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫(kù)升級(jí)到19C用戶登錄報(bào)錯(cuò)問題的解決辦法,需要的朋友可以參考下2024-08-08
詳解Oracle 中實(shí)現(xiàn)數(shù)據(jù)透視表的幾種方法
這篇文章主要介紹了詳解Oracle 中實(shí)現(xiàn)數(shù)據(jù)透視表的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
plsql 連接oracle數(shù)據(jù)庫(kù)詳細(xì)配置的方法步驟
這篇文章主要介紹了plsql 連接oracle數(shù)據(jù)庫(kù)詳細(xì)配置的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Oracle Connect to Idle Instance解決方法
本文將介紹Oracle如何解決Connect to Idle Instance問題,需要了解的朋友可以參考下2012-11-11
Oracle數(shù)據(jù)庫(kù)游標(biāo)連接超出解決方案
這篇文章主要介紹了Oracle數(shù)據(jù)庫(kù)游標(biāo)連接超出解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07

