保证统计信息的准备性
2016-01-25 16:18
375 查看
转载 http://blog.csdn.net/robinson1988/article/details/6321537
作为DBA,我必须定制出收集统计信息的策略,以及相关脚本,下面就是一个关于确保统计信息准确性的脚本,拿出来分享一下。
DECLARE
CURSOR STALE_TABLE IS
SELECT OWNER,
SEGMENT_NAME,
CASE
WHEN SIZE_GB < 0.5 THEN
30
WHEN SIZE_GB >= 0.5 AND SIZE_GB < 1 THEN
20
WHEN SIZE_GB >= 1 AND SIZE_GB < 5 THEN
10
WHEN SIZE_GB >= 5 AND SIZE_GB < 10 THEN
5
WHEN SIZE_GB >= 10 THEN
1
END AS PERCENT,
8 AS DEGREE
FROM (SELECT OWNER,
SEGMENT_NAME,
SUM(BYTES / 1024 / 1024 / 1024) SIZE_GB
FROM DBA_SEGMENTS
WHERE OWNER = 'ADWU_OPTIMA_AP11'
AND SEGMENT_NAME IN
(SELECT /*+ UNNEST */ DISTINCT TABLE_NAME
FROM DBA_TAB_STATISTICS
WHERE (LAST_ANALYZED IS NULL OR STALE_STATS = 'YES')
AND OWNER = 'ADWU_OPTIMA_AP11')
GROUP BY OWNER, SEGMENT_NAME);
BEGIN
DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;
FOR STALE IN STALE_TABLE LOOP
DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => STALE.OWNER,
TABNAME => STALE.SEGMENT_NAME,
ESTIMATE_PERCENT => STALE.PERCENT,
METHOD_OPT => 'for all columns size repeat',
DEGREE => 8,
GRANULARITY => 'ALL',
CASCADE => TRUE);
END LOOP;
END;
/
根据实际情况,可以选择每天晚上在数据库不繁忙的时候运行上述脚本。
作为DBA,我必须定制出收集统计信息的策略,以及相关脚本,下面就是一个关于确保统计信息准确性的脚本,拿出来分享一下。
DECLARE
CURSOR STALE_TABLE IS
SELECT OWNER,
SEGMENT_NAME,
CASE
WHEN SIZE_GB < 0.5 THEN
30
WHEN SIZE_GB >= 0.5 AND SIZE_GB < 1 THEN
20
WHEN SIZE_GB >= 1 AND SIZE_GB < 5 THEN
10
WHEN SIZE_GB >= 5 AND SIZE_GB < 10 THEN
5
WHEN SIZE_GB >= 10 THEN
1
END AS PERCENT,
8 AS DEGREE
FROM (SELECT OWNER,
SEGMENT_NAME,
SUM(BYTES / 1024 / 1024 / 1024) SIZE_GB
FROM DBA_SEGMENTS
WHERE OWNER = 'ADWU_OPTIMA_AP11'
AND SEGMENT_NAME IN
(SELECT /*+ UNNEST */ DISTINCT TABLE_NAME
FROM DBA_TAB_STATISTICS
WHERE (LAST_ANALYZED IS NULL OR STALE_STATS = 'YES')
AND OWNER = 'ADWU_OPTIMA_AP11')
GROUP BY OWNER, SEGMENT_NAME);
BEGIN
DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;
FOR STALE IN STALE_TABLE LOOP
DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => STALE.OWNER,
TABNAME => STALE.SEGMENT_NAME,
ESTIMATE_PERCENT => STALE.PERCENT,
METHOD_OPT => 'for all columns size repeat',
DEGREE => 8,
GRANULARITY => 'ALL',
CASCADE => TRUE);
END LOOP;
END;
/
根据实际情况,可以选择每天晚上在数据库不繁忙的时候运行上述脚本。
相关文章推荐
- 腾讯邮箱邮件正文存储型漏洞
- 2016.01.22-2016.01.24回顾
- 热烈祝贺Polymer中文组织站点上线
- Windows OS上安装运行Apache Kafka教程
- [置顶] 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)
- 项目用druid,长时间不访问应用,再访问又连接不上了数据库了
- Fluentd(td-agent)安装
- Kettle本机编译
- Android点击EditText之外地方隐藏键盘
- Android关于JavaScript与Native方法相互调用
- Java基础学习7_类和对象
- 唱吧中国首推VR直播,剑指VR内容短板
- 可选参数Optional Parameters
- HTML5拖放功能
- Android 的 AlarmManager 和 wakeLock联合使用
- PullToRefresh开源库
- boa常见错误整理
- Social(简介)
- 【箭扣观点】点赞习大大,助力朋友圈
- wget: command not found