刚刚看了一下SQL代码在这里v$sqltext都有 address,hash_value,command_type,piece,sql_text 其中,如果SQL太长,则分成几行存放,以piece区分先后 例如: select * from v$sqltext where address = ( select sql_address from v$session where sid = 100 ) order by piece
to wiler(@_@) :“如果SQL太长,则分成几行存放,以piece区分先后”,这个我也知道那语句该怎么写?
cpu使用前10条SQL select * from v$sql a where rownum<11 order by CPU_TIME desc 磁盘读取前10 select * from v$sql a where rownum<11 order by DISK_READS desc
to wiler(@_@) : 这个不行的,看来你是没有看前面,如果脚本超过1000个,就不能够完全显示了。还有高手么,谢谢!
with tab_a as ( select address from v$sql where rownum<11 order by DISK_READS desc ) select * from v$sqltext where address in ( select address from tab_a ) order by address,piece
比如,v$SQLAREA的sql_text字段为1000字节,这样超过1000字节的sql就被截掉了
我看帮助,关于sql_text的取值,应该是v$sqltext_with_newlines
address,hash_value,command_type,piece,sql_text
其中,如果SQL太长,则分成几行存放,以piece区分先后
例如:
select * from v$sqltext where address =
( select sql_address from v$session where sid = 100 )
order by piece
select * from v$sql a
where rownum<11
order by CPU_TIME desc
磁盘读取前10
select * from v$sql a
where rownum<11
order by DISK_READS desc
这个不行的,看来你是没有看前面,如果脚本超过1000个,就不能够完全显示了。还有高手么,谢谢!
tab_a as (
select address from v$sql
where rownum<11
order by DISK_READS desc
)
select * from v$sqltext
where address in (
select address from tab_a
)
order by address,piece