码迷,mamicode.com
首页 > 数据库 > 详细

Oracle 锁定临时表统计信息

时间:2014-11-20 17:08:45      阅读:441      评论:0      收藏:0      [点我收藏+]

标签:style   ar   color   os   sp   on   bs   ef   tt   

  全局临时表的统计信息是不能被收集的,如果被收集,它的统计信息肯定为0,会造成执行计划不准,所以要锁定它的统计信息,禁止系统自动收集。

--先解锁表的统计信息,然后删除表的统计信息,最后锁住表的统计信息

declare

  v_sql varchar2(500);

  cursor rowList1 is

   select‘begin dbms_stats.unlock_table_stats(user,‘‘‘ || table_name || ‘‘‘); end;‘

     from user_tables s

   where s.temporary = ‘Y‘

  cursor rowList2 is

   select‘begin dbms_stats.delete_table_stats(user,‘‘‘ || table_name || ‘‘‘); end;‘

     from user_tables s

   where s.temporary = ‘Y‘;

  cursor rowList3 is

   select‘begin dbms_stats.lock_table_stats(user,‘‘‘ || table_name || ‘‘‘); end;‘

     from user_tables s

   where s.temporary = ‘Y‘;  

begin

  open rowList1;

  open rowList2;

  open rowList3;

  loop

    fetch rowList1  into v_sql;

       executeimmediate v_sql;

    exitwhen rowList1%notfound;

  endloop;

  loop

    fetch rowList2  into v_sql;

       executeimmediate v_sql;

    exitwhen rowList2%notfound;

  endloop;

  loop

    fetch rowList3  into v_sql;

       executeimmediate v_sql;

    exitwhen rowList3%notfound;

  endloop;   

  close rowList1;

  close rowList2;

  close rowList3;

end;

-- STATTYPE_LOCKED=‘ALL‘意思是表的统计信息被锁

select s.table_name,s.STATTYPE_LOCKEDfrom user_TAB_STATISTICS s  where s.STATTYPE_LOCKED=‘ALL‘;

Oracle 锁定临时表统计信息

标签:style   ar   color   os   sp   on   bs   ef   tt   

原文地址:http://blog.csdn.net/stevendbaguo/article/details/41314423

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!