程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle中查看慢查詢進度的腳本分享,oracle進度

Oracle中查看慢查詢進度的腳本分享,oracle進度

編輯:Oracle教程

Oracle中查看慢查詢進度的腳本分享,oracle進度


Oracle一個大事務的SQL往往不知道運行到了哪裡,可以使用如下SQL查看執行進度。

復制代碼 代碼如下:
set linesize 400;
set pagesize 400;
col sql_text format a100;
col opname format a15;
SELECT se.sid,
         opname,
         TRUNC (sofar / totalwork * 100, 2) pct_work,
         elapsed_seconds elapsed,
         ROUND (elapsed_seconds * (totalwork - sofar) / sofar) remain_time,
         sql_text
    FROM v$session_longops sl, v$sqlarea sa, v$session se
   WHERE sl.sql_hash_value = sa.hash_value
         AND sl.sid = se.sid
         AND sofar != totalwork
ORDER BY start_time;

或者

復制代碼 代碼如下:
set linesize 400;
set pagesize 400;
set long 4000;
col sql_fulltext format a100;
col opname format a15;
SELECT se.sid,
         opname,
         TRUNC (sofar / totalwork * 100, 2) pct_work,
         elapsed_seconds elapsed,
         ROUND (elapsed_seconds * (totalwork - sofar) / sofar) remain_time,
         sql_fulltext
    FROM v$session_longops sl, v$sqlarea sa, v$session se
   WHERE sl.sql_hash_value = sa.hash_value
         AND sl.sid = se.sid
         AND sofar != totalwork
ORDER BY start_time;


oracle中怎查看遠程執行腳本的記錄

可以用logmnr的方法來看,就是日志挖掘,或者在數據庫裡面把審計打開,可以針對某個表,某個SCHEMA等等,具體的操作你自己百度一下吧,很多資料的
 

Oracle查詢時,第一次查詢很慢,第二次及以後查詢速度就很快了,那後面的查詢的結果集會不會不是最新的

ORACLE 不會自動建立索引,之所以快是因為從內存中讀取比disk IO要快的原因。
LZ的概念理解有誤,我來舉例說明下。
ORACLE data一般緩存在SGA中的data cache中 1.表A有10000條數據,在0:00時刻對其進行查詢,則將表A的所有數據塊從disk緩存至data cache中。因此第二次查詢時直接從data cache中獲得速度變快。 2.0:05時刻 對表A進行更新等操作,20000行。再次對表A進行查詢,之前沒有變化的數據塊仍然直接從data cache中直接獲得。發生過變更,或新增的數據塊,需要重新從disk讀入data cache中,如果data cache空間已滿,就會將之前發生變更的髒數據塊及不常使用的數據塊清空出data cache,然後緩存新的數據塊。 因此整個過程中,不會出現你說的只能查到緩存數據的現象。分析你遇到的問題,很有可能是你用userA 進行查詢後發現表10000行,然後使用userB進行更新至20000行,但是userB並沒有commit。因此userA在查詢時仍然只能看到10000行。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved