自动收集统计信息

练习6:自动收集统计信息

1、 使用SQL*Plus,一用户SYSTEM连接。

2、创建一个练习用户TESTUSER,并授予DBA角色。

SQL>create  user testuser identified by testuser;

SQL>grant dba to testuser;

3、以TESTUSER用户登录实例,创建一组对象。

 

图  自动收集统计信息

SQl>select num_rows,last_analyzed from user_tables where table_name='TESTTAB';

NUM_ROWS LAST_ANALYZED

---------- --------------

4、在SQL*PLUS中执行下面代码。

Begin

dbms_stats.gather_table_stats(
ownname=> 'TESTUSER',
tabname=> 'TESTTAB' ,
estimate_percent=> DBMS_STATS.AUTO_SAMPLE_SIZE,
cascade=> DBMS_STATS.AUTO_CASCADE,
method_opt=> 'FOR ALL COLUMNS SIZE AUTO');
end;

/

5、在SQL*Plus中,通过修改NLS_DATE_FORMAT参数,来显示完成的时间,并确认收集了统计信息。

 

图14-3 查看自动收集统计信息

在Oracle 10g数据库中,如果我们是通过DBCA工具创建的数据库,那么数据库中存在一个收集整个数据库统计信息的自动作业叫GATHER_STATS_JOB。统计信息能够改善查询的性能,但是在收集统计信息的过程中会对数据库造成一定的压力。所以我们可以根据需要统计相关的信息,停止系统的整体收集作业。

在11g数据库中有自动维护作业,自动维护作业中的一项也是收集统计信息,一般情况下这两个作业可以完成我们业务系统收集信息的目的,但当系统的数据发生较大变化是(如导入数据或装载数据)需要手工收集统计信息。

 

posted @ 2013-06-18 13:49  老猫-DB  阅读(541)  评论(0编辑  收藏  举报