批量查看当前运行sql的执行计划脚本
2016-10-14 14:47
239 查看
cat sql.sh
a=$1
sqlplus -s zabbix/zabbix@$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 ;
/
有错误请指出,谢谢!
a=$1
sqlplus -s zabbix/zabbix@$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 ;
/
有错误请指出,谢谢!
相关文章推荐
- [sqlserver脚本]查看指定SQL语句生成了哪些执行计划
- [BAT]批处理脚本双击可运行,但在定时计划任务中无法执行(当前工作路径不对导致的)
- 获取隐含参数, 当前trace文件名称,sql语句的执行计划的脚本
- 【总结】Oracle查看SQL执行计划和运行效率指标的方法
- 查看sql当前的执行计划
- 不借助第三方工具,查看SQL的执行计划
- 查看当前oracle中正在执行的sql语句
- 查看当前数据库连接数是多少?查看当前正在执行的SQL语句?
- 查看sql语句的执行计划
- oracle 中--怎么查看当前表空间在作什么操作?--查锁,死锁,当前执行时间长的Sql语句,没提交的事务,对象为哪些进程所用
- 查看sql语句的执行时间及缓存执行计划
- 【Explain Plan】查看SQL的执行计划
- Django tips: 查看当前Request所执行的所有SQL
- 自动生成批量执行SQL脚本的批处理实例
- 查看当前正在被执行的sql
- 怎么用批处理*.bat 执行文件目录下面的SQL语句脚本(批量的)。。。@echo off是什么意思?
- bat+sqlcmd 批量运行脚本
- DB2 SQL脚本批量执行
- 查看当前oracle中正在执行的sql语句
- (2010-08-21)在TOAD中查看SQL执行计划