最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Oracle中監(jiān)控SQL執(zhí)行時間的常用方法

 更新時間:2025年12月25日 08:47:56   作者:阿坤帶你走近大數(shù)據(jù)  
在 Oracle 數(shù)據(jù)庫中,監(jiān)控 SQL 語句的執(zhí)行時間是性能調(diào)優(yōu)和問題排查的關(guān)鍵環(huán)節(jié),Oracle 提供了多種機制來捕獲和分析 SQL 的執(zhí)行耗時,以下是 常用且實用的方法,需要的朋友可以參考下

在 Oracle 數(shù)據(jù)庫中,監(jiān)控 SQL 語句的執(zhí)行時間是性能調(diào)優(yōu)和問題排查的關(guān)鍵環(huán)節(jié)。Oracle 提供了多種機制來捕獲和分析 SQL 的執(zhí)行耗時,以下是 常用且實用的方法,按使用場景分類說明:

一、實時監(jiān)控:查看當(dāng)前正在執(zhí)行的 SQL 及其已運行時間

方法:查詢V$SESSION+V$SQL

SELECT 
    s.sid,
    s.serial#,
    s.username,
    s.status,
    s.machine,
    s.program,
    q.sql_text,
    s.last_call_et AS "Seconds_Running",  -- 當(dāng)前操作已運行秒數(shù)
    q.elapsed_time / 1000000 AS "Elapsed_Sec_Total",  -- 該SQL總耗時(秒)
    q.cpu_time / 1000000 AS "CPU_Sec"
FROM 
    v$session s
JOIN 
    v$sql q ON s.sql_id = q.sql_id
WHERE 
    s.status = 'ACTIVE'
    AND s.username IS NOT NULL
    AND s.type != 'BACKGROUND';

說明:

  • last_call_et:當(dāng)前調(diào)用已持續(xù)的秒數(shù)(單位:秒),對活躍會話非常有用
  • elapsed_time:該 SQL 自首次執(zhí)行以來累計總耗時(微秒),除以 1e6 轉(zhuǎn)為秒。
  • 此方法適用于實時抓取慢查詢

二、歷史監(jiān)控:查看已執(zhí)行 SQL 的性能統(tǒng)計(AWR / V$SQL)

Oracle 會自動在共享池中緩存 SQL 的執(zhí)行統(tǒng)計信息(通過 V$SQL 視圖)。

查詢最近執(zhí)行過的 SQL 及其平均/總耗時:

SELECT 
    sql_id,
    substr(sql_text, 1, 100) AS sql_preview,
    executions AS execs,
    ROUND(elapsed_time / 1000000, 2) AS total_sec,
    ROUND(elapsed_time / NULLIF(executions, 0) / 1000000, 4) AS avg_sec,
    ROUND(cpu_time / NULLIF(executions, 0) / 1000000, 4) AS avg_cpu_sec,
    last_active_time
FROM 
    v$sql
WHERE 
    executions > 0
    AND last_active_time > SYSDATE - 1  -- 過去24小時
ORDER BY 
    elapsed_time DESC;

注意:

  • V$SQL 中的數(shù)據(jù)是內(nèi)存中的緩存,實例重啟或 SQL 被老化(aged out)后會丟失。
  • 適合查看近期高頻或高耗時 SQL

三、長期監(jiān)控:使用 AWR(Automatic Workload Repository)

AWR 是 Oracle 企業(yè)版(Enterprise Edition)提供的自動性能數(shù)據(jù)倉庫,默認每小時快照一次,保留 8 天。

查看某段時間內(nèi)最耗時的 SQL(Top SQL by Elapsed Time):

-- 需要知道快照 ID(snap_id)
SELECT * FROM TABLE(
    DBMS_WORKLOAD_REPOSITORY.select_sql(
        begin_snap => 12345,
        end_snap   => 12346,
        sql_id     => NULL  -- NULL 表示返回 Top SQL
    )
);

或者使用標準 AWR 報告:

-- 生成 HTML 或文本格式的 AWR 報告(需 DBA 權(quán)限)
@$ORACLE_HOME/rdbms/admin/awrrpt.sql

AWR 優(yōu)勢:

  • 持久化存儲,不受內(nèi)存老化影響;
  • 包含等待事件、I/O、CPU 等完整上下文;
  • 支持跨時間段對比。

缺點:僅限 Enterprise Edition,且需額外許可(Diagnostics Pack)。

四、會話級跟蹤:啟用 SQL Trace(10046 Event)

如果要精確分析某條 SQL 的執(zhí)行細節(jié)(包括各階段耗時、等待事件),可開啟 SQL Trace。

步驟:

1. 開啟當(dāng)前會話跟蹤:

ALTER SESSION SET sql_trace = TRUE;
-- 或更詳細的 10046 trace(level 12 包含綁定變量和等待事件)
ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';

2. 執(zhí)行你的 SQL

SELECT * FROM large_table WHERE ...;

3. 關(guān)閉跟蹤

ALTER SESSION SET sql_trace = FALSE;
-- 或
ALTER SESSION SET EVENTS '10046 trace name context off';

4. 找到 trace 文件位置

SELECT value FROM v$diag_info WHERE name = 'Default Trace File';

5. 使用tkprof格式化分析

tkprof tracefile.trc output.txt explain=user/pass sort=exeela

輸出包含:

  • Parse / Execute / Fetch 各階段耗時
  • CPU time、Elapsed time、Disk reads
  • 執(zhí)行計劃

適用場景:深度性能診斷,但不適用于生產(chǎn)環(huán)境大規(guī)模開啟。

五、使用DBMS_MONITOR跟蹤特定會話或客戶端

可針對某個用戶、服務(wù)名或會話開啟跟蹤:

-- 跟蹤某個客戶端程序(如 JDBC 應(yīng)用)
BEGIN
  DBMS_MONITOR.client_id_trace_enable(
    client_id => 'MY_APP_USER',
    waits     => TRUE,
    binds     => TRUE
  );
END;
/

后續(xù)用 tkprof 分析生成的 trace 文件。

六、監(jiān)控長時間運行的操作(Long Operations)

對于 DML、DDL、備份等長時間操作,可用:

SELECT 
    opname,
    target,
    sofar,
    totalwork,
    ROUND(sofar/totalwork*100, 2) AS pct_done,
    time_remaining,
    elapsed_seconds
FROM 
    v$session_longops
WHERE 
    totalwork > 0 
    AND sofar != totalwork;

權(quán)限說明

操作所需權(quán)限
查詢 V$SESSION, V$SQLSELECT ANY DICTIONARY 或 DBA 授予 V_$SESSION
生成 AWR 報告SELECT_CATALOG_ROLEDBA
開啟 SQL TraceALTER SESSION(普通用戶可開自己的),全局跟蹤需 DBA

總結(jié):如何選擇?

場景推薦方法
實時查看誰在跑慢 SQLV$SESSION + V$SQL(查 last_call_et
分析最近哪些 SQL 最耗時V$SQLelapsed_time 排序
長期性能趨勢分析AWR 報告
深度診斷單條 SQL10046 trace + tkprof
監(jiān)控大事務(wù)/導(dǎo)入導(dǎo)出進度V$SESSION_LONGOPS

到此這篇關(guān)于Oracle中監(jiān)控SQL執(zhí)行時間的常用方法的文章就介紹到這了,更多相關(guān)Oracle監(jiān)控SQL執(zhí)行時間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • windows使用sqlpus連接oracle 數(shù)據(jù)庫的教程圖解

    windows使用sqlpus連接oracle 數(shù)據(jù)庫的教程圖解

    這篇文章主要介紹了windows使用sqlpus連接oracle 數(shù)據(jù)庫的教程圖解,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • 使用PLSQL遠程連接Oracle數(shù)據(jù)庫的方法(內(nèi)網(wǎng)穿透)

    使用PLSQL遠程連接Oracle數(shù)據(jù)庫的方法(內(nèi)網(wǎng)穿透)

    Oracle數(shù)據(jù)庫來源于知名大廠甲骨文公司,是一款通用數(shù)據(jù)庫系統(tǒng),能提供完整的數(shù)據(jù)管理功能,而Oracle數(shù)據(jù)庫時關(guān)系數(shù)據(jù)庫的典型代表,其數(shù)據(jù)關(guān)系設(shè)計完備,這篇文章主要介紹了使用PLSQL遠程連接Oracle數(shù)據(jù)庫的方法(內(nèi)網(wǎng)穿透),需要的朋友可以參考下
    2023-03-03
  • Oracle實例啟動時報錯:ORA-32004的解決方法

    Oracle實例啟動時報錯:ORA-32004的解決方法

    最近在啟動實例時遇到了一些錯誤,通過查找的相關(guān)的資料終于解決,決定分享出來給有需要的朋友們,所以下面這篇文章主要給大家介紹了在Oracle實例啟動時報錯:ORA-32004的解決方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-10-10
  • Orcale 數(shù)據(jù)庫客戶端PL/SQL 中文亂碼的問題解決方法

    Orcale 數(shù)據(jù)庫客戶端PL/SQL 中文亂碼的問題解決方法

    這篇文章主要介紹了Orcale 數(shù)據(jù)庫客戶端PL/SQL 中文亂碼的問題解決方法,需要的朋友可以參考下
    2014-05-05
  • Oracle壓縮表空間的基本步驟

    Oracle壓縮表空間的基本步驟

    這篇文章主要介紹了Oracle怎么壓縮表空間,壓縮表空間可能需要一些時間,具體取決于表空間的大小和數(shù)據(jù)庫的負載,因此,在執(zhí)行此操作之前,請確保已備份數(shù)據(jù)庫以防萬一,需要的朋友可以參考下
    2023-06-06
  • MySQL安全性指南 (2)(轉(zhuǎn))

    MySQL安全性指南 (2)(轉(zhuǎn))

    MySQL安全性指南 (2)(轉(zhuǎn))...
    2007-03-03
  • Oracle 計算時間格式平均值的sql 語句

    Oracle 計算時間格式平均值的sql 語句

    這篇文章主要介紹了Oracle 計算時間格式平均值的sql 語句,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • Oracle中實現(xiàn)刪除重復(fù)數(shù)據(jù)只保留一條

    Oracle中實現(xiàn)刪除重復(fù)數(shù)據(jù)只保留一條

    這篇文章主要介紹了Oracle中實現(xiàn)刪除重復(fù)數(shù)據(jù)只保留一條,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Oracle中行列轉(zhuǎn)換有哪些方法

    Oracle中行列轉(zhuǎn)換有哪些方法

    這篇文章主要給大家介紹了關(guān)于Oracle中行列轉(zhuǎn)換有哪些方法的相關(guān)資料,最近在工作中遇到了涉及到數(shù)據(jù)庫行列之間相互轉(zhuǎn)換的問題,所以這里給大家總結(jié)介紹下,需要的朋友可以參考下
    2023-08-08
  • SQL中Charindex和Oracle中對應(yīng)的函數(shù)Instr對比

    SQL中Charindex和Oracle中對應(yīng)的函數(shù)Instr對比

    在項目中用到了Oracle中 Instr 這個函數(shù),順便仔細的再次學(xué)習(xí)了一下這個知識,使用 Instr 函數(shù)對某個字符串進行判斷,判斷其是否含有指定的字符
    2013-10-10

最新評論

龙游县| 吴桥县| 繁峙县| 宁陵县| 阳江市| 简阳市| 柳江县| 江西省| 赣榆县| 香港 | 广南县| 奎屯市| 华阴市| 游戏| 陕西省| 兴安盟| 福海县| 自治县| 贺兰县| 巩义市| 清水河县| 格尔木市| 灵川县| 博野县| 宜君县| 南昌市| 毕节市| 夏津县| 永年县| 新邵县| 台中县| 郧西县| 宾川县| 奉贤区| 天门市| 张家川| 永修县| 铜梁县| 略阳县| 抚顺市| 湖南省|