admin管理员组文章数量:1660164
说明:本文为Oracle11g收集各种统计信息(DBMS_STAT)的简要指导手册
温馨提示:如果您发现本文哪里写的有问题或者有更好的写法请留言或私信我进行修改优化
● analyze始于Oracle7,但自从Oracle8.1.5引入dbms_stats包后,Oracle便推荐使用dbms_stats取代analyze
● 官网地址
https://docs.oracle/cd/E11882_01/server.112/e41573/stats.htm#PFGRF003
https://docs.oracle/cd/E11882_01/appdev.112/e40758/d_stats.htm#ARPLS059
● 常用参数说明
参数名称 说明
ownname USER_NAME
tabname TABLE_NAME
partname 分区表的某个分区名
estimate_percent 采样百分比,有效范围为[0.000001,100](默认Oracle自动确定适当的样本量以获得良好的统计数据)
block_sample 使用随机块采样代替随机行采样
options 分析模式
①gather:重新分析整个架构
②gather empty:只分析目前还没有统计的表
③gather stale:只重新分析修改量超过10%的表(包括插入、更新和删除)
④gather auto:重新分析当前没有统计的对象,以及统计数据过期(变脏)的对象。使用gather auto类似于组合使用gather stale和gather empty
method_opt 抽样方法
①for table:只统计表
②for all indexed columns:只统计有索引的表列
③for all indexes:只分析统计相关索引
④for all columns:分析所有的列
⑤for all hidden columns:分析所有隐藏列(函数索引等)
cascade 是否收集此表索引的统计信息
degree 并行处理的cpu数量
granularity 要收集的统计信息的粒度(仅在表已分区时才相关)
①'AUTO'-根据分区类型确定粒度。这是默认值。
②'ALL' -收集所有(子分区,分区和全局)统计信息
③'GLOBAL' -收集全球统计数据
④'GLOBAL AND PARTITION'-收集全局和分区级别的统计信息。即使它是一个复合分区对象,也不会收集任何子分区级别统计信息。
⑤'PARTITION '-收集分区级别的统计信息
⑥'SUBPARTITION' -收集子分区级别的统计信息
⑦'DEFAULT'-收集全局和分区级别的统计信息。该选项已过时,并且当前受支持,但仅出于遗留原因才包含在文档中。您应该使用“ GLOBAL AND PARTITION”来实现此功能。请注意,默认值现在是' AUTO'。
stattab 用户统计信息表标识符,用于描述将当前统计信息保存在何处
statown 包含的架构stattab(如果不同于ownname)
statid 标识符(可选),用于与这些统计信息关联 stattab
no_invalidate 如果设置为TRUE,则不使从属游标无效。如果设置为FALSE,则该过程将立即使从属游标无效。默认Oracle自己决定何时使依赖的游标无效。
stattype 统计信息类型。允许的唯一值是DATA。
force 收集表的统计信息(即使已锁定)
● 收集“表/表+索引”的统计信息(支持分区表)
》》常用语句:
exec dbms_stats.gather_table_stats(ownname => 'SCOTT',tabname => 'EMP',method_opt=> 'for all columns',estimate_percent => '100',degree=>'8',granularity=>'all',cascade=>TRUE);
》》存储过程详情:
DBMS_STATS.GATHER_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
estimate_percent NUMBER DEFAULT to_estimate_percent_type(get_param('ESTIMATE_PERCENT')),
block_sample BOOLEAN DEFAULT FALSE,
method_opt VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree NUMBER DEFAULT to_degree_type(get_param('DEGREE')),
granularity VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade BOOLEAN DEFAULT to_cascade_type(get_param('CASCADE')),
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (get_param('NO_INVALIDATE')),
stattype VARCHAR2 DEFAULT 'DATA',
force BOOLEAN DEFAULT FALSE);
》》官网说明:
https://docs.oracle/cd/E11882_01/appdev.112/e40758/d_stats.htm#ARPLS68582
● 收集“索引”的统计信息
》》常用语句:
exec dbms_stats.gather_index_stats(ownname => 'SCOTT',indname => 'PK_EMP',estimate_percent => '100',degree => '4');
》》存储过程详情:
DBMS_STATS.GATHER_INDEX_STATS (
ownname VARCHAR2,
indname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
estimate_percent NUMBER DEFAULT to_estimate_percent_type (GET_PARAM('ESTIMATE_PERCENT')),
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
degree NUMBER DEFAULT to_degree_type(get_param('DEGREE')),
granularity VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (GET_PARAM('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE);
》》官网说明:
https://docs.oracle/cd/E11882_01/appdev.112/e40758/d_stats.htm#ARPLS68575
● 收集“用户”的统计信息
》》常用语句:
exec dbms_stats.gather_schema_stats(ownname=>'SCOTT',degree=>8,cascade=>true,granularity=>'ALL');
》》存储过程详情:
DBMS_STATS.GATHER_SCHEMA_STATS (
ownname VARCHAR2,
estimate_percent NUMBER DEFAULT to_estimate_percent_type (get_param('ESTIMATE_PERCENT')),
block_sample BOOLEAN DEFAULT FALSE,
method_opt VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree NUMBER DEFAULT to_degree_type(get_param('DEGREE')),
granularity VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade BOOLEAN DEFAULT to_cascade_type(get_param('CASCADE')),
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
options VARCHAR2 DEFAULT 'GATHER',
objlist OUT ObjectTab,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (get_param('NO_INVALIDATE')),
force BOOLEAN DEFAULT FALSE,
obj_filter_list ObjectTab DEFAULT NULL);
》》官网说明:
https://docs.oracle/cd/E11882_01/appdev.112/e40758/d_stats.htm#ARPLS68577
● 收集“全库”的统计信息(非常慢)
》》常用语句:
exec dbms_stats.gather_database_stats(degree=>4,block_sample=>true,estimate_percent =>'10',cascade=>true,granularity=>'ALL');
》》存储过程详情:
DBMS_STATS.GATHER_DATABASE_STATS (
estimate_percent NUMBER DEFAULT to_estimate_percent_type(get_param('ESTIMATE_PERCENT')),
block_sample BOOLEAN DEFAULT FALSE,
method_opt VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree NUMBER DEFAULT to_degree_type(get_param('DEGREE')),
granularity VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade BOOLEAN DEFAULT to_cascade_type(get_param('CASCADE')),
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
options VARCHAR2 DEFAULT 'GATHER',
objlist OUT ObjectTab,
statown VARCHAR2 DEFAULT NULL,
gather_sys BOOLEAN DEFAULT TRUE,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (get_param('NO_INVALIDATE')),
obj_filter_list ObjectTab DEFAULT NULL);
》》官网说明:
https://docs.oracle/cd/E11882_01/appdev.112/e40758/d_stats.htm#ARPLS68569
● 收集“数据字典”的统计信息(速度较慢)
》》常用语句:
exec dbms_stats.gather_dictionary_stats();
》》存储过程详情:
DBMS_STATS.GATHER_DICTIONARY_STATS (
comp_id VARCHAR2 DEFAULT NULL,
estimate_percent NUMBER DEFAULT to_estimate_percent_type(get_param('ESTIMATE_PERCENT')),
block_sample BOOLEAN DEFAULT FALSE,
method_opt VARCHAR2 DEFAULT get_param('METHOD_OPT'),
degree NUMBER DEFAULT to_degree_type(get_param('DEGREE')),
granularity VARCHAR2 DEFAULT GET_PARAM('GRANULARITY'),
cascade BOOLEAN DEFAULT to_cascade_type(get_param('CASCADE')),
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
options VARCHAR2 DEFAULT 'GATHER AUTO',
objlist OUT ObjectTab,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (get_param('NO_INVALIDATE')),
obj_filter_list ObjectTab DEFAULT NULL);
》》官网说明:
https://docs.oracle/cd/E11882_01/appdev.112/e40758/d_stats.htm#ARPLS68571
● 收集“固定对象/内部对象”的统计信息(fixed_objects是指:一些x$表及他们的index,他们只是Oracle自定义的内存结构)(速度超慢)
》》常用语句:
exec dbms_stats.gather_fixed_objects_stats();
》》存储过程详情:
DBMS_STATS.GATHER_FIXED_OBJECTS_STATS (
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT to_no_invalidate_type (get_param('NO_INVALIDATE')));
》》官网说明:
https://docs.oracle/cd/E11882_01/appdev.112/e40758/d_stats.htm#ARPLS68573
● 收集“系统”的统计信息(借助于系统统计信息,Oracle可以更清楚地知道目标数据库服务器的实际处理能力)(较快)(Oracle强烈建议您收集系统统计信息)
》》常用语句:
exec dbms_stats.gather_system_stats();
》》存储过程详情:
DBMS_STATS.GATHER_SYSTEM_STATS (
gathering_mode VARCHAR2 DEFAULT 'NOWORKLOAD',
interval INTEGER DEFAULT NULL,
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL);
》》官网说明:
https://docs.oracle/cd/E11882_01/appdev.112/e40758/d_stats.htm#ARPLS68580
※ 如果您觉得文章写的还不错, 别忘了在文末给作者点个赞哦 ~
over
版权声明:本文标题:Oracle 知识篇+11g收集各种统计信息(DBMS_STAT) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1729850770a1215378.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论