1. 程式人生 > >批量檢視當前執行sql的執行計劃指令碼

批量檢視當前執行sql的執行計劃指令碼

cat sql.sh

a=$1

sqlplus -s zabbix/[email protected]$a <<!!
declare
   text long ;
   sql_str   long ;
begin
  for  i in (
     select     c.username,
      a.sql_id,
      a.ELAPSED_SECONDS,
          b.SQL_FULLTEXT
  from v\$session_longops a, v\$sqlarea b,v\$session c
        where a.sql_id = b.sql_id
   and a.sql_hash_value = b.hash_value
   and a.target not like '%SYSTEM%'
   and a.ELAPSED_SECONDS > 10
   and a.sid = c.sid
   and a.SERIAL#= c.SERIAL#
   and c.username not in ( 'SYS')
   and rownum < 10  )
   loop
    dbms_output.put_line(to_char(i.SQL_FULLTEXT)) ;
    dbms_output.put_line('   ') ;
    execute immediate 'alter session set current_schema='||i.username;
    execute immediate 'explain plan for '||i.SQL_FULLTEXT;
    dbms_output.put_line('username='||i.username||' sql_id='||i.sql_id||' elapsed_seconds='||i.ELAPSED_SECONDS);
     for  t in ( select PLAN_TABLE_OUTPUT  from table(dbms_xplan.display ))
     loop
       dbms_output.put_line(to_char(t.PLAN_TABLE_OUTPUT)) ;
     end loop ;

    dbms_output.put_line('############################################################################################################################################');
       
   end loop ;
 EXCEPTION WHEN OTHERS THEN
  raise ;

end ;
/

有錯誤請指出,謝謝!

相關推薦

批量檢視當前執行sql執行計劃指令碼

cat sql.sh a=$1 sqlplus -s zabbix/[email protected]$a <<!! declare    text long ;    sql_str   long ; begin   for  i in (     

Linux下通過shell進MySQL執行SQL或匯入指令碼

這條命令表示通過使用者名稱和密碼執行shell然後在shell裡面執行一個建表語句: USER="root" PASS="root" mysql -u $USER -p$PASS <<EOF 2> /dev/null CREATE DATABASE um; EOF 下面的命令在登陸My

怎麼檢視使用者的SQL執行歷史

問題:如何知道一個session都執行過哪些SQL語句?(檢視當前比較容易,歷史的呢?怎麼復原sql的執行場景——事務關係、執行序列、單SQL還是儲存過程)   【方法一】查詢v$sqltext、v$sqlarea、v$sqlstats檢視 select * from v$sq

VC在debug狀態下檢視當前有多少執行緒在執行

我使用boost::thread_group::size()函式,想得到當前時刻boost::thread_group有多少執行緒在執行,結果發現該函式不能準確的顯示當前boost::thread_group裡執行的執行緒數。就只好打個斷點,然後用VC檢視還有多少執行緒在運

檢視Oracle資料庫SQL執行歷史

方法1:使用LogMiner工具 優點:可以完全挖掘日誌內容,找出所有執行過的SQL語句 缺點: 如果沒有啟用歸檔日誌,則只能對聯機日誌進行挖掘 需要掌握LogMiner的用法 方法2:檢視HIST檢視 優點:簡單,只要使用普通的select語句查

使用jstack檢視當前程序全部執行緒的狀態

1.使用jps 命令找到程序的PID $ jps 225648 Jps 5268 127284 Launcher 226980 Launcher 227624 ConcurrencyTest 2.使用

檢視當前oracle中正在執行sql語句——即查詢oracle程序的sql

select a.program, b.spid, c.sql_text,c.SQL_ID from v$session a, v$process b, v$sqlarea c where a.paddr = b.addr and a.sql_hash_value = c.hash_value an

EXPLAIN檢視SQL執行計劃

參考:《MySQL王者晉級之路》 如有錯誤的地方,請大家一定不吝指出,不勝感激。 還有,不夠全面,以後隨著理解的深入我會不斷加內容的。 我們寫完一個sql語句,為了讓它高效能地執行,一定要explain一下,檢視一下它的執行計劃。 檢視心法: 1.首先從查詢型別type列開始檢視

Oracle之SQL優化專題01-檢視SQL執行計劃的方法

在我2014年總結的“SQL Tuning 基礎概述”中,其實已經介紹了一些檢視SQL執行計劃的方法,但是不夠系統和全面,所以本次SQL優化專題,就首先要系統的介紹一下檢視SQL執行計劃的方法。 本文示例SQL為: --set lines 1000 pages 1000 select a.emp

檢視當前oracle中正在執行sql語句

問題現象 最近一直在做,通過java後臺,如何知道Oracle正在執行sql。因為不能與客戶進行有效的溝通,也沒有到現場瞭解,資料是如何進行的匯入,所以這方面一直沒有得到有效的突破;原因分析 在查詢資

oracle使用bat指令碼批量執行sql檔案

1首先建立一個字尾為.bat的檔案,內容如下: c: sqlplusDB_USER_NAME/[email protected]:1521/dbname @D:/TEMP/UPDATE_20140923.sql exit 語法分析: // c: sqlplus所

使用v$sql_monitor檢視檢視當前正在執行SQL語句的統計資訊

可以使用v$sql_monitor檢視來檢視當前執行的SQL的實時統計資訊,並且可以檢視給定的查詢當前所使用的各種資源,例如CPU使用率、獲得的緩衝大小、磁碟讀取以及查詢已經執行的時間等統計資訊。 v$sql_monitor檢視包含當前正在執行的SQL語句,以及最近執行的S

Oracle檢視SQL執行計劃,分析SQL效能

## 如何檢視SQL執行計劃     使用 **```PL/SQL```** 檢視,具體使用方法如下: - 新建 **```解釋計劃視窗```** ,將 ```SQL``` 複製進去執行,即可顯示執行計劃。 ![解釋計劃視窗](http://note.youdao.com/noteshare?id=53

mysql sql優化和sql執行計劃

mysql 執行計劃SQL優化禁用SELECT *使用SELECT COUNT(*) 統計行數盡量少運算盡量避免全表掃描,如果可以,在過濾列建立索引盡量避免在WHERE子句對字段進行NULL判斷盡量避免在WHERE子句使用!= 或者<>盡量避免在WHERE子句使用OR連接盡量避免對字段進行表達式計

JDBC 復習4 批量執行SQL

pre bat 機制 tint close .sql str 執行效率 batchsql 1使用jdbc進行批量執行SQL在實際的項目開發中,有時候需要向數據庫發送一批SQL語句執行,這時應避免向數據庫一條條的發送執行,而應采用JDBC的批處理機制,以提升執行效率。 pac

【轉載】SQL執行計劃

會有 tab serve per nvarchar 消耗cpu 允許 如果 實現 要理解執行計劃,怎麽也得先理解,那各種各樣的名詞吧。鑒於自己還不是很了解。本文打算作為只寫懂的,不懂的懂了才寫。   在開頭要先說明,第一次看執行計劃要註意,SQL Server的執行計劃是從

sql執行計劃

ima dex 表示 OS ron ons merge 掃描 常量 explain + sql語句 返回的type類型有   all   全表掃描(特殊的有limit),type為此類型時,表示該表可以優化   index  全索引掃描   range   對索引列進

學習筆記sql server數據庫批量查詢和刪除內容執行語句

sql server 數據庫 查詢 最近一直在研究博客,其實也就是現在熱門的自媒體,有意思的是,以前網民們都自己寫博客,建立一個自己的小站,現在又去了,都跑去平臺給人家免費打工,還自得其樂,也不知道這是什麽狀況。博客信息:主題:讀書筆記相關的學習主題。網站:使用一個.net的域名作為網址,例如駱駝

SQL執行計劃解讀

ron 範圍 子查詢 等於 war from 查詢 需要 產生 聲明 5.6中desc看不到show warnings,也看不到filtered列 5.7的desc等於5.6的desc extended,這樣可以看show warnings,5.6中filtered列非常

一個RDBMS左連接SQL執行計劃解析

red 分析 mys val time keys note sed statement 1、測試數據如下: SQL> select * from t1; a | b | c ---+----+--- 1 | 10 | 1 2 | 20 | 2 3 | 30