当前位置:首页 > 开发 > 数据库 > 正文

Oracle 9i建表时需要加上MONITORING参数的作用

发表于: 2013-09-03   作者:bijian1013   来源:转载   浏览:
摘要:         MONITORING参数说明:创建表时设置MONITORING参数, 使得Oracle跟踪对表的DML操作,预估DML操作所影响的记录数量。在Oracle 9i中, MONITORING参数不是默认的,需要手工执行,而在Oracle 10g及以上版本中, 该参数为默认设置。    

        MONITORING参数说明:创建表时设置MONITORING参数, 使得Oracle跟踪对表的DML操作,预估DML操作所影响的记录数量。在Oracle 9i中, MONITORING参数不是默认的,需要手工执行,而在Oracle 10g及以上版本中, 该参数为默认设置。

        1.创建表时设置MONITORING参数

         create table a
         (
               value      int
         )
         MONITORING
         ;

        2.打开表a的监控
        ALTER TABLE a MONITORING; 

        3.对test下的所有表进行监控
        BEGIN
                DBMS_STATS.alter_schema_tab_monitoring(test,true); 
        END;

实例:

SQL> exec DBMS_STATS.alter_schema_tab_monitoring('test',true);

PL/SQL 过程已成功完成。

SQL> insert into a values(2);

已创建 1 行。

SQL> commit;

提交完成。

SQL> delete a;

已删除3行。

SQL> commit;

提交完成。

SQL>  exec DBMS_STATS.alter_schema_tab_monitoring('test',true);

PL/SQL 过程已成功完成。

TABLE_NAME                        INSERTS    UPDATES    DELETES TRU
------------------------------                    ---------- -         ---------              ---------- - --
A                                                     1                                     1        NO

        MONITORING参数的作用:

        1.主要的作用是对一个schema的所有表dml监控,目的是看表自上一次收集统计信息后是否发生了dml操作。从而使日后收集的更有针对性,只收集发生变化的表。
例:SQL>EXECUTE DBMS_STATS. GATHER_SCHEMA_STATS ('HR', options=>'GATHER STALE');
         对于oracle9i,smon会每15分钟把被监测表发生的dml变化的的statistics回写到数据字典中。也可以手动强制回写:SQL>execute DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;
        2.另外一个作用,有些时侯库中有好多的垃圾表,在你不太确定的情况下,你可以用alter table有针对性的设一些监控,过了一定的周期,比如一个月、一个季度,如果这个表还没有dml操作,就可以先给其改名,最后删除。
        另外:可以通过查dba_tab_modifications这个视图看哪个被监测的表发生了dml操作

 

        如果exec DBMS_STATS.alter_schema_tab_monitoring('test',true);语句出现如下错误:

SQL>  exec DBMS_STATS.alter_schema_tab_monitoring('test',true);
begin DBMS_STATS.alter_schema_tab_monitoring('test',true); end;
*
ERROR at line 1:
ORA-06550: line 1, column 18:
PLS-00302: component 'ALTER_SCHEMA_TAB_MONITORING' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

       则需以sysdba权限用户执行,或通过sys授予用户dbms_stats的执行权限。

oracle>sqlplus '/ as sysdba'
SQL>grant execute on dbms_stats to hr;
       可进一步参考: http://wenku.baidu.com/view/5b9f512c7375a417866f8fae.html

Oracle 9i建表时需要加上MONITORING参数的作用

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号