ORACLE分析表和索引的脚本_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1899 | 回复: 0   主题: ORACLE分析表和索引的脚本        下一篇 
wongz
注册用户
等级:新兵
经验:46
发帖:55
精华:0
注册:2011-8-6
状态:离线
发送短消息息给wongz 加好友    发送短消息息给wongz 发消息
发表于: IP:您无权察看 2015-6-17 11:54:27 | [全部帖] [楼主帖] 楼主

--analyze.sql

set serveroutput on size 100000

declare

v_per number(3);

v_start number := dbms_utility.get_time;

v_end   number;

begin

for rec in (select segment_name,segment_type,ceil(sum(bytes)/1024/1024) segment_size

from user_segments group by segment_name,segment_type)

loop

if rec.segment_type = 'INDEX' then

dbms_stats.gather_index_stats(ownname=>'citictest',  --自己改一下

INDNAME=>rec.segment_name

);

--        dbms_output.put_line(rec.segment_name ' ' rec.segment_size 'm ' ceil((dbms_utility.get_time - v_start)/100) 's');

v_start := dbms_utility.get_time;

elsif rec.segment_type = 'TABLE' then

case when rec.segment_size < 32 then

v_per := 100;

when rec.segment_size < 320 then

v_per := 10;

else

v_per := 1;

end case;

dbms_stats.gather_table_stats(OWNNAME=>'citictest',

TABNAME=>rec.segment_name,

ESTIMATE_PERCENT=>v_per,

METHOD_OPT=>'FOR ALL INDEXED COLUMNS');

--         dbms_output.put_line(rec.segment_name ' ' rec.segment_size 'm ' ceil((dbms_utility.get_time - v_start)/100) 's');

v_start := dbms_utility.get_time;

end if;

end loop;

end;

/

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论