SYS.MON_MODS$、SYS.MON_MODS_ALL$和DBA_TAB_MODIFICATIONS

0    284    1

Tags:

👉 本文共约11274个字,系统预计阅读时间或需43分钟。

MON_MODS$和MON_MODS_ALL$统计DML操作次数

*_TAB_MODIFICATIONS视图是用来记录自从收集统计信息后的DML(包括truncate)操作的次数,通过试验分析数据库是如何实现该功能,并且应用该功能来实现数据库自动收集功能(表变化比例决定是否收集统计信息)

​ SQL> select * from v$version;

​ BANNER

​ --------------------------------------------------------------------------------

​ Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production

​ PL/SQL Release 11.2.0.3.0 - Production

​ CORE 11.2.0.3.0 Production

​ TNS for Linux: Version 11.2.0.3.0 - Production

​ NLSRTL Version 11.2.0.3.0 - Production

​ SQL> DESC DBA_TAB_MODIFICATIONS

​ Name Null? Type

​ ----------------------------------------- -------- ----------------------------

​ TABLE_OWNER VARCHAR2(30)

​ TABLE_NAME VARCHAR2(30)

​ PARTITION_NAME VARCHAR2(30)

​ SUBPARTITION_NAME VARCHAR2(30)

​ INSERTS NUMBER

​ UPDATES NUMBER

​ DELETES NUMBER

​ TIMESTAMP DATE

​ TRUNCATED VARCHAR2(3)

​ DROP_SEGMENTS NUMBER

​ SQL> select text from dba_views where view_name='DBA_TAB_MODIFICATIONS';

​ TEXT

​ --------------------------------------------------------------------------------

​ select u.name, o.name, null, null,

​ m.inserts, m.updates, m.deletes, m.timestamp,

​ decode(bitand(m.flags,1),1,'YES','NO'),

​ m.drop_segments

​ from sys.mon_mods_all$ m, sys.obj$ o, sys.tab$ t, sys.user$ u

​ where o.obj# = m.obj# and o.obj# = t.obj# and o.owner# = u.user#

​ union all

​ select u.name, o.name, o.subname, null,

​ m.inserts, m.updates, m.deletes, m.timestamp,

​ decode(bitand(m.flags,1),1,'YES','NO'),

​ m.drop_segments

​ from sys.mon_mods_all$ m, sys.obj$ o, sys.user$ u

​ where o.owner# = u.user# and o.obj# = m.obj# and o.type#=19

​ union all

​ select u.name, o.name, o2.subname, o.subname,

​ m.inserts, m.updates, m.deletes, m.timestamp,

​ decode(bitand(m.flags,1),1,'YES','NO'),

​ m.drop_segments

​ from sys.mon_mods_all$ m, sys.obj$ o, sys.tabsubpart$ tsp, sys.obj$ o2,

​ sys.user$ u

​ where o.obj# = m.obj# and o.owner# = u.user# and

​ o.obj# = tsp.obj# and o2.obj# = tsp.pobj#

这里很清楚,通过union all关联了三个select 语句,分别是查询普通表,分区表,子分区表,这里也可以看出来

对应基表

SQL> desc sys.mon_mods_all$

Name Null? Type

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

OBJ# NUMBER

INSERTS NUMBER

UPDATES NUMBER

DELETES NUMBER

TIMESTAMP DATE

FLAGS NUMBER

DROP_SEGMENTS NUMBER

SQL> desc sys.mon_mods$

Name Null? Type

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

OBJ# NUMBER

INSERTS NUMBER

UPDATES NUMBER

DELETES NUMBER

TIMESTAMP DATE

FLAGS NUMBER

DROP_SEGMENTS NUMBER

这两个基表结构完全相同,通过收集信息dml操作MON_MODS$然后记录MON_MODS_ALL$中

测试MON_MODS$和MON_MODS_ALL$关系

​ SQL> SELECT obj#,INSERTS,UPDATES,DELETES,FLAGS,TO_CHAR(TIMESTAMP,'YYYY-MM-DD HH24:MI:SS') LAST_TIME,

​ 2 DROP_SEGMENTS FROM sys.MON_MODS$ WHERE obj#=69900;

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复