表监控一些实践学习

表监控设置语句

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as yuzh

SQL> alter table test monitoring;

Table altered

 

但是查询表的监控状况时的时候

SQL> select * from sys.dba_tab_modifications where table_owner='YUZH';

0 rows selected

 

我以为是要动作一下才行

SQL> insert into test values ('即',20);

1 row inserted

SQL> commit;

Commit complete

 

结果还是没有

SQL> select * from sys.dba_tab_modifications where table_owner='YUZH';

0 rows selected

 

查看是否设置成功

SQL> select monitoring from user_tables;

MONITORING
----------
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES

16 rows selected

结果全是yes,看来默认就是yes

查询为何前面没有显示

 

需要刷新一下,执行个存储过程才行

SQL> exec dbms_stats.flush_database_monitoring_info;

PL/SQL procedure successfully completed

 

再查

SQL> select * from sys.dba_tab_modifications where table_owner='YUZH';

TABLE_OWNER   TABLE_NAME                 INSERTS  UPDATES DELETES TIMESTAMP   TRUNCATED DROP_SEGMENTS
------------- ------------------------- -------- -------- ------- ----------- --------- -------------
YUZH          TEST1                                     2484823        0   39962 2010-2-1 12 YES                   0
YUZH          SOM_DEPARTURE_MASTER         31188        0       0     2010-2-1 12 NO                    0
YUZH          SOM_DEPARTURE_DETAIL          33584        0       0     2010-2-1 12 NO                    0
YUZH          VMI_SPECIALPRICEAUTH_SLIP   70571        0       0     2010-2-1 12 NO                    0
YUZH          SOM_GOODS_RETURN_MASTER  25225        0       0     2010-2-1 12 NO                    0
YUZH          SOM_GOODS_RETURN_DETAIL   35678        0       0     2010-2-1 12 NO                    0
YUZH          VMI_SPECIALPRICEAUTH_MST       623        0       0      2010-2-1 12 NO                    0
YUZH          VMI_SPECIALPRICEAUTH_DTL      4547        0       0      2010-2-1 12 NO                    0
YUZH          MST_PARTS_DTL                          17255        0       0     2010-2-1 12 NO                    0
YUZH          VMI_SPECIALPRICEAUTH_CUST   10349        0       0     2010-2-1 12 NO                    0
YUZH          CUT_CUST_PREMIUM                    8450        0       0      2010-2-1 12 NO                    0
YUZH          IVC_STOCK_COST                       15583        0       0     2010-2-1 12 NO                    0
YUZH          MST_COMPANY_DTL                            1        0       0     2010-2-1 12 NO                    0
YUZH          RPMMT                                           5003        0       0     2010-2-1 12 NO                    0
YUZH          TEST                                                    6        0       0     2010-2-1 12 NO                    0

15 rows selected

全列出来了

 

设置为不监控

SQL> alter table test nomonitoring;

Table altered

SQL> insert into test values ('即',20);

1 row inserted

SQL> commit;

Commit complete

SQL> select monitoring from user_tables where table_name='TEST';

MONITORING
----------
YES

SQL> select INSERTS,UPDATES,DELETES,TIMESTAMP,TRUNCATED,DROP_SEGMENTS from sys.dba_tab_modifications where table_name='TEST';

   INSERTS    UPDATES    DELETES TIMESTAMP   TRUNCATED DROP_SEGMENTS
---------- ---------- ---------- ----------- --------- -------------
         6          0          0 2010-2-1 12 NO                    0
1 rows selected
        
SQL> select * from test;

姓名           成绩
-------- ----------
即               20
即               20
即               20
你               79
他               79
它               20
我               80

7 rows selected

新插入一条记录,但是inserts还是6,看上去是被禁用了但是好像不管用,状态还是yes,奇怪的很

但是做以下操作

SQL> delete from test;

7 rows deleted

SQL> commit;

Commit complete

SQL> select * from test;

姓名           成绩
-------- ----------

SQL> select INSERTS,UPDATES,DELETES,TIMESTAMP,TRUNCATED,DROP_SEGMENTS from sys.dba_tab_modifications where table_name='TEST';

   INSERTS    UPDATES    DELETES TIMESTAMP   TRUNCATED DROP_SEGMENTS
---------- ---------- ---------- ----------- --------- -------------
         6          0          0 2010-2-1 12 NO                    0

SQL> alter table test monitoring;

Table altered

SQL> truncate table test;

Table truncated

SQL> select INSERTS,UPDATES,DELETES,TIMESTAMP,TRUNCATED,DROP_SEGMENTS from sys.dba_tab_modifications where table_name='TEST';

   INSERTS    UPDATES    DELETES TIMESTAMP   TRUNCATED DROP_SEGMENTS
---------- ---------- ---------- ----------- --------- -------------
         6          0          0 2010-2-1 12 NO                    0

SQL> insert into test values('dd',12);

1 row inserted

SQL> commit;

Commit complete

SQL> select INSERTS,UPDATES,DELETES,TIMESTAMP,TRUNCATED,DROP_SEGMENTS from sys.dba_tab_modifications where table_name='TEST';

   INSERTS    UPDATES    DELETES TIMESTAMP   TRUNCATED DROP_SEGMENTS
---------- ---------- ---------- ----------- --------- -------------
         6          0          0 2010-2-1 12 NO                    0

 

看上去好像再设置为监控也不顶用

 

SQL> exec dbms_stats.flush_database_monitoring_info;

PL/SQL procedure successfully completed

SQL> select INSERTS,UPDATES,DELETES,TIMESTAMP,TRUNCATED,DROP_SEGMENTS from sys.dba_tab_modifications where table_name='TEST';

   INSERTS    UPDATES    DELETES TIMESTAMP   TRUNCATED DROP_SEGMENTS
---------- ---------- ---------- ----------- --------- -------------
         8          0          7 2010-2-1 12 YES                   0

刷一下又都有了

接着我再设置为无效

SQL> alter table test nomonitoring;

Table altered

SQL> insert into test values('dd',12);

1 row inserted

SQL> commit;

Commit complete

SQL> select INSERTS,UPDATES,DELETES,TIMESTAMP,TRUNCATED,DROP_SEGMENTS from sys.dba_tab_modifications where table_name='TEST';

   INSERTS    UPDATES    DELETES TIMESTAMP   TRUNCATED DROP_SEGMENTS
---------- ---------- ---------- ----------- --------- -------------
         8          0          7 2010-2-1 12 YES                   0

SQL> exec dbms_stats.flush_database_monitoring_info;

PL/SQL procedure successfully completed

SQL> select INSERTS,UPDATES,DELETES,TIMESTAMP,TRUNCATED,DROP_SEGMENTS from sys.dba_tab_modifications where table_name='TEST';

   INSERTS    UPDATES    DELETES TIMESTAMP   TRUNCATED DROP_SEGMENTS
---------- ---------- ---------- ----------- --------- -------------
         9          0          7 2010-2-1 12 YES                   0

刷一下又都有了,看来alter table test nomonitoring;根本不是开关。。。。

 

接着是重置统计信息

SQL> exec dbms_stats.gather_table_stats('YUZH','TEST');

PL/SQL procedure successfully completed

 

重置后就没有记录

SQL> select * from sys.dba_tab_modifications where table_name='TEST';

0 rows selected

SQL> select monitoring from user_tables where table_name='TEST';

MONITORING
----------
YES

1 rows selected

 

刷新也没有

SQL> exec dbms_stats.flush_database_monitoring_info;

PL/SQL procedure successfully completed

SQL> select * from sys.dba_tab_modifications where table_name='TEST';

0 rows selected

 

设置也没有

SQL> alter table test monitoring;

Table altered

SQL> select * from sys.dba_tab_modifications where table_name='TEST';

0 rows selected

SQL> exec dbms_stats.flush_database_monitoring_info;

PL/SQL procedure successfully completed

SQL> select * from sys.dba_tab_modifications where table_name='TEST';

0 rows selected

 

尝试再插入数据

SQL> insert into test values('ff',22);

1 row inserted

SQL> commit;

Commit complete

 

还是没有

SQL> select * from sys.dba_tab_modifications where table_name='TEST';

0 rows selected

 

刷新后就有了

SQL> exec dbms_stats.flush_database_monitoring_info;

PL/SQL procedure successfully completed

SQL> select * from sys.dba_tab_modifications where table_name='TEST';

TABLE_OWNER                    TABLE_NAME                     PARTITION_NAME                 SUBPARTITION_NAME                 INSERTS    UPDATES    DELETES TIMESTAMP   TRUNCATED DROP_SEGMENTS
------------------------------ ------------------------------ ------------------------------ ------------------------------ ---------- ---------- ---------- ----------- --------- -------------
YUZH                           TEST                                                                                                  1          0          0 2010-2-1 15 NO                    0

15 rows selected

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值