在检查磁盘读取较多的SQL语句时
select disk_reads,sql_text from (select sql_text,disk_reads,dense_rank() ov
er(order by disk_reads desc) disk_reads_rank from v$sql) where disk_reads_rank <
=10;发现如下的SQL:220
select /*+ no_parallel(t) no_parallel_index(t) dbms_stats cursor_sharing_exact u
se_weak_name_resl dynamic_sampling(0) no_monitoring */ count(*),sum(sys_op_opnsi
ze("LOG_ID")),substrb(dump(min("LOG_ID"),16,0,32),1,120),substrb(dump(max("LOG_I
D"),16,0,32),1,120),count("TITLE"),count(distinct "TITLE"),sum(sys_op_opnsize("T
ITLE")),substrb(dump(min(substrb("TITLE",1,32)),16,0,32),1,120),substrb(dump(max
(substrb("TITLE",1,32)),16,0,32),1,120),count(distinct "CONTENT"),sum(sys_op_opn
size("CONTENT")),substrb(dump(min(substrb("CONTENT",1,32)),16,0,32),1,120),subst
rb(dump(max(substrb("CONTENT",1,32)),16,0,32),1,120),count("MEMBER_ID"),count(di
stinct "MEMBER_ID"),sum(sys_op_opnsize("MEMBER_ID")),substrb(dump(min("MEMBER_ID
"),16,0,32),1,120),substrb(dump(max("MEMBER_ID"),16,0,32),1,120),count(distinct"CREATETIME"),substrb(dump(min("CREATETIME"),16,0,32),1,120),substrb(dump(max("C
REATETIME"),16,0,32),1,120),count(distinct "CREATEID"),sum(sys_op_opnsize("CREAT
EID")),substrb(dump(min("CREATEID"),16,0小妹对于这些刚接触,不了解这个SQL语句里的
no_parallel(t)  no_parallel_index(t) dbms_stats cursor_sharing_exact u
se_weak_name_resl dynamic_sampling(0) no_monitoring
是什么含义,结合上下还是不了解这句SQL是什么意思,希望各位能指点一二,在此先谢谢各位!

解决方案 »

  1.   

    /*+ no_parallel(t) no_parallel_index(t) dbms_stats cursor_sharing_exact use_weak_name_resl dynamic_sampling(0) no_monitoring */
    这个是oracle 的提示(hint)
    但是上面那个语句是oracle系统自身动态收集统计数据的SQL,开发时是没见过这样用的
      

  2.   

    在表t和索引上面禁用并行,后面的提示我也不太清楚,搜索oracle hint自己看吧
      

  3.   

    谢谢楼上两位,刚刚也在网上查看得到相关的内容,
    这在开发时的确是没有的,是我在检查数据库磁盘读取较高的sql_text发现的,不是很明白,就来请教各位了。这种情况下出现这个,是说明什么呢?磁盘读取率高吗?我找了下,这个SQL相关的字段是个错误日志表里的