前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >oracle自动or手动收集信息

oracle自动or手动收集信息

作者头像
overme
发布2022-01-15 12:04:18
发布2022-01-15 12:04:18
70200
代码可运行
举报
文章被收录于专栏:数据开发笔记数据开发笔记
运行总次数:0
代码可运行

Oracle

创建了一张表,做了一些操作
代码语言:javascript
代码运行次数:0
运行
复制
create table TestUserTbale(
 id         INTEGER,
 hash_value VARCHAR2(100)
);
declare
i int;
begin
i := 0;
for i in 1..10000 loop
insert into TESTUSERTBALE
select i,ora_hash(i) as hash_value from dual;
end loop;
end;
发现在user_tables中数据没有更新
代码语言:javascript
代码运行次数:0
运行
复制
select t.LAST_ANALYZED,t.TABLE_NAME,t.BLOCKS 
from user_tables t 
where t.TABLE_NAME='TESTUSERTBALE';
user_table 表的最新收集时间
代码语言:javascript
代码运行次数:0
运行
复制
select max(t.LAST_ANALYZED) as LAST_ANALYZED 
from user_tables t
手动收集统计信息
代码语言:javascript
代码运行次数:0
运行
复制
begin
dbms_stats.gather_table_stats(ownname => 'XIR_TRD',tabname => 'TESTUSERTBALE');
end;

更新时间变为当前时间,user_tables表数据更新

关于oracle统计数据收集
  • 查看某个表的统计信息
代码语言:javascript
代码运行次数:0
运行
复制
select t.TABLE_NAME,t.NUM_ROWS,t.BLOCKS,t.LAST_ANALYZED 
from user_tables t where table_name in ('TESTUSERTBALE');
  • 查看某个表上索引的统计信息
代码语言:javascript
代码运行次数:0
运行
复制
select table_name,index_name,t.blevel,t.num_rows,t.leaf_blocks,t.last_analyzed 
from user_indexes t
where table_name in ('TESTUSERTBALE');
  • 查询系统自动统计信息
代码语言:javascript
代码运行次数:0
运行
复制
select t1.window_name,t1.repeat_interval,t1.duration 
from dba_scheduler_windows t1,dba_scheduler_wingroup_members t2
where t1.window_name=t2.window_name 
and t2.window_group_name in ('MAINTENANCE_WINDOW_GROUP','BSLN_MAINTAIN_STATS_SCHED');
手动统计信息

收集表统计信息

代码语言:javascript
代码运行次数:0
运行
复制
begin
dbms_stats.gather_table_stats(ownname => 'USER',tabname => 'TEST',estimate_percent => 10,method_opt=> 'for all indexed columns');
end;
begin
dbms_stats.gather_table_stats(ownname => 'USER',tabname => 'TAB_NAME',CASCADE=>TURE);
end;

收集分区表的某个分区统计信息

代码语言:javascript
代码运行次数:0
运行
复制
begin
dbms_stats.gather_table_stats(ownname => 'USER',
                              tabname => 'RANGE_PART_TAB',
                              partname => 'p_201312',
                              estimate_percent => 10,
                              method_opt=> 'for all indexed columns',
                              cascade=>TRUE);
end;

收集索引统计信息

代码语言:javascript
代码运行次数:0
运行
复制
begin
dbms_stats.gather_index_stats(ownname => 'USER',
                              indname => 'IDX_OBJECT_ID',
                              estimate_percent => '10',
                              degree => '4');
end;

收集表和索引统计信息

代码语言:javascript
代码运行次数:0
运行
复制
begin
dbms_stats.gather_table_stats(ownname => 'USER',
                              tabname => 'TEST',
                              estimate_percent => 10,
                              method_opt=> 'for all indexed columns',
                              cascade=>TRUE);
end;

收集某个用户的统计信息

代码语言:javascript
代码运行次数:0
运行
复制
begin
dbms_stats.gather_schema_stats(ownname=>'CS',
                               estimate_percent=>10,
                               degree=>8,
                               cascade=>true,
                               granularity=>'ALL');
end;

收集整个数据库的统计信息

代码语言:javascript
代码运行次数:0
运行
复制
begin
dbms_stats.gather_database_stats(estimate_percent=>10,
                                degree=>8,
                                 cascade=>true,
                                 granularity=>'ALL');

end;

dbms_stats参数的解释

代码语言:javascript
代码运行次数:0
运行
复制
ownname: USER_NAME
tabname: TABLE_NAME
partname: 分区表的某个分区名
estimate_percent: 采样百分比,有效范围为[0.000001,100]
block_sample:使用随机块采样代替随机行采样
method_opt:
cascade:是否收集此表索引的统计信息
degree:并行处理的cpu数量
granularity: 统计数据的收集,'ALL' - 收集所有(子分区,分区和全局)统计信息

本站文章除注明转载/出处外,均为本站原创,转载前请务必署名,转载请标明出处

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/05/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建了一张表,做了一些操作
  • 发现在user_tables中数据没有更新
  • user_table 表的最新收集时间
  • 手动收集统计信息
  • 关于oracle统计数据收集
  • 手动统计信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档