`

Oracle表变化趋势追踪记录(原创)

 
阅读更多

这几天数据库上的用户表空间疯涨,一天的增长量达到了20~30GB,平时就4~5GB的增长量。问了开发商,他们也说不出个所以然。PS:那些鸟开发商,现在我已经对他们绝望了,什么都不知道。情急之下直接对该表空间进行了扩容,问题总算解决了。事后总想弄个明白,想知道是那张表导致的表空间增长如此之快,以免下次出现同样的问题又是不知所措。

google了一番后发现DBA_HIST_SEG_STAT可以看出对象的使用趋势
构造如下SQL查询出每个时间段内数据库对象的增长量,其中DB_BLOCK_CHANGES_DELTA为块个数

select c.SNAP_ID,to_char(c.END_INTERVAL_TIME,'yyyy-mm-dd') SNAP_TIME,a.OWNER ,a.OBJECT_NAME, a.OBJECT_TYPE, b.DB_BLOCK_CHANGES_DELTA
from dba_objects a,
(select SNAP_ID,obj#,DB_BLOCK_CHANGES_DELTA from DBA_HIST_SEG_STAT where DB_BLOCK_CHANGES_DELTA > 20000 order by snap_id desc, DB_BLOCK_CHANGES_DELTA desc) b,
DBA_HIST_SNAPSHOT c
where a.object_id=b.obj# and object_type='TABLE' and b.SNAP_ID=c.SNAP_ID
order by DB_BLOCK_CHANGES_DELTA

下面的SQL查询出某个时间段内,数据库对象的变化大小,单位以换算成GB

select a.OBJECT_NAME, to_char(c.END_INTERVAL_TIME,'yyyy-mm-dd') SNAP_TIME, sum(b.DB_BLOCK_CHANGES_DELTA)/1024/1024 GB from dba_objects a,(select SNAP_ID,obj#,DB_BLOCK_CHANGES_DELTA from DBA_HIST_SEG_STAT where DB_BLOCK_CHANGES_DELTA > 20000 order by snap_id desc, DB_BLOCK_CHANGES_DELTA desc) b,DBA_HIST_SNAPSHOT c
where a.object_id=b.obj# and object_type='TABLE' and b.SNAP_ID=c.SNAP_ID
group by a.OBJECT_NAME,c.END_INTERVAL_TIME
order by GB

简单介绍下DBA_HIST_SEG_STAT

DBA_HIST_SEG_STAT视图内记录了数据库实例启动以来段的变化信息,该视图的数据来自于v$segstat

ColumnDatatypeNULLDescription
SNAP_ID NUMBER   Unique snapshot ID
DBID NUMBER   Database ID for the snapshot
INSTANCE_NUMBER NUMBER   Instance number for the snapshot
TS# NUMBER   Tablespace number
OBJ# NUMBER   Dictionary object number
DATAOBJ# NUMBER   Data object number
LOGICAL_READS_TOTAL NUMBER   Cumulative value for logical reads
LOGICAL_READS_DELTA NUMBER   Delta value for logical reads
BUFFER_BUSY_WAITS_TOTAL NUMBER   Cumulative value for buffer busy waits
BUFFER_BUSY_WAITS_DELTA NUMBER   Delta value for buffer busy waits
DB_BLOCK_CHANGES_TOTAL NUMBER   Cumulative value for db block changes
DB_BLOCK_CHANGES_DELTA NUMBER   Delta value for db block changes
PHYSICAL_READS_TOTAL NUMBER   Cumulative value for physical reads
PHYSICAL_READS_DELTA NUMBER   Delta value for physical reads
PHYSICAL_WRITES_TOTAL NUMBER   Cumulative value for physical writes
PHYSICAL_WRITES_DELTA NUMBER   Delta value for physical writes
PHYSICAL_READS_DIRECT_TOTAL NUMBER   Cumulative value for physical reads direct
PHYSICAL_READS_DIRECT_DELTA NUMBER   Delta value for physical reads direct
PHYSICAL_WRITES_DIRECT_TOTAL NUMBER   Cumulative value for physical writes direct
PHYSICAL_WRITES_DIRECT_DELTA NUMBER   Delta value for physical writes direct
ITL_WAITS_TOTAL NUMBER   Cumulative value for ITL waits
ITL_WAITS_DELTA NUMBER   Delta value for ITL waits
ROW_LOCK_WAITS_TOTAL NUMBER   Cumulative value for row lock waits
ROW_LOCK_WAITS_DELTA NUMBER   Delta value for row lock waits
GC_CR_BLOCKS_SERVED_TOTAL NUMBER   Cumulative value for global cache CR blocks served
GC_CR_BLOCKS_SERVED_DELTA NUMBER   Delta value for global cache CR blocks served
GC_CU_BLOCKS_SERVED_TOTAL NUMBER   Cumulative value for global cache current blocks served
GC_CU_BLOCKS_SERVED_DELTA NUMBER   Delta value for global cache current blocks served
GC_BUFFER_BUSY_TOTAL NUMBER   Cumulative value for global cache buffer busy
GC_BUFFER_BUSY_DELTA NUMBER   Delta value for global cache buffer busy
GC_CR_BLOCKS_RECEIVED_TOTAL NUMBER   Cumulative value for global cache CR blocks received
GC_CR_BLOCKS_RECEIVED_DELTA NUMBER   Delta value for global cache CR blocks received
GC_CU_BLOCKS_RECEIVED_TOTAL NUMBER   Cumulative value for global cache current blocks received
GC_CU_BLOCKS_RECEIVED_DELTA NUMBER   Delta value for global cache current blocks received
SPACE_USED_TOTAL NUMBER   Cumulative value for space used
SPACE_USED_DELTA NUMBER   Delta value for space used
SPACE_ALLOCATED_TOTAL NUMBER   Cumulative value for space allocated
SPACE_ALLOCATED_DELTA NUMBER   Delta value for space allocated
TABLE_SCANS_TOTAL NUMBER   Cumulative value for table scans
TABLE_SCANS_DELTA NUMBER   Delta value for table scans

顺便说一句DBA_HIST_TBSPC_SPACE_USAGE视图可以监控表空间的使用趋势

 

感谢杨帅军的指点

参考至:http://oracle.erkansaka.org/2007/09/how-to-determine-tables-with-highest.html

            http://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_3165.htm

本文原创,转载请注明出处、作者
如有错误,欢迎指正

邮箱:czmcj@163.com

1
0
分享到:
评论

相关推荐

    oracle变化数据捕获

    同步CDC通常使用变化表和用户视图来实现,其中数据变化被写入变化表,并可通过数据库视图获取一致性的数据变化集合。 - **创建同步CDC模式**:主要步骤包括创建变化表、配置触发器等。同步CDC模式的优势在于配置...

    oracle查看表历史记录-Oracle查看表操作历史记录并恢复.pdf

    Oracle 查看表历史记录和恢复 Oracle 数据库是一种关系型数据库管理系统,具有强大的数据存储和管理能力。然而,在实际操作中,数据库管理员或开发者可能会不小心删除了重要数据,这时候如何恢复这些数据成了一个...

    oracle修改表结构

    在Oracle数据库管理中,对表结构进行修改是一项常见的任务,涉及到添加字段、修改字段属性、删除字段、重命名表或字段、以及注释等操作。以下是对这些操作的详细解析: ### 添加字段 使用`ALTER TABLE`语句可以向...

    查看登录oracle数据库用户记录.docx

    为了管理和监控数据库的访问情况,需要对登录 Oracle 数据库的用户记录进行跟踪和查看。本文将介绍如何查看登录 Oracle 数据库的用户记录。 查看登录 Oracle 数据库用户记录的必要性 在实际应用中,数据库的安全性...

    oracle表中已经有数据还能创建分区吗

    oracle创建分区表

    ORACLE统计表记录数

    ORACLE 数据库中如何统计表记录数的过程说明

    oracle表空间变动注意事项

    3. **文档记录**:详细记录所有变更操作及其原因,以便于后续维护人员理解和跟踪。 ### 五、总结 Oracle表空间的变动操作虽然可以带来很多好处,但也伴随着一定的风险。通过对上述问题及解决方案的详细了解,我们...

    oracle表空间碎片整理

    利用DBMS_SPACE包对Oracle 表碎片进行监控与清理,

    Oracle多行记录合并

    在Oracle数据库中,多行记录的合并通常是为了将相同字段的多行数据整合成一行,以便于数据分析或者简化展示。这种操作在报表制作、数据整理等场景中非常常见。本篇文章将详细介绍Oracle中实现多行记录合并的几种方法...

    Oracle 多表查询优化

    在 FROM 子句中包含多个表的情况下,需要选择记录条数最少的表作为基础表。 2. 使用绑定变量 在 Oracle 中,使用绑定变量可以提高多表连接的效率。绑定变量可以减少 SQL 语句的解析时间和内存的使用。 3. 使用...

    Oracle数据库sql语句 跟踪器

    4. **历史记录**:存储SQL语句的历史执行信息,便于追踪性能变化趋势和问题的演变过程。 5. **对比分析**:比较不同时间段或不同版本的SQL执行性能,帮助识别性能提升或下降的原因。 6. **优化建议**:根据SQL语句...

    Statement Tracer for Oracle,oracle代码跟踪工具

    1. **SQL语句追踪**:工具能够记录并分析执行的SQL语句,包括DML(INSERT, UPDATE, DELETE)和DDL(CREATE, ALTER, DROP)操作。这有助于识别性能瓶颈,找出慢查询,并进行相应的优化。 2. **执行计划分析**:它...

    Oracle表删除大量数据(千万)后查询变慢问题(原因分析)

    2. 索引的无效:当释放表空间后,表的行号 rowid 会发生变化,而基于 rowid 的索引则会变成无效。解决方法是重建索引,使用 alter index XXX rebuild 语句可以快速重建索引。 在解决问题之前,首先需要使用 delete ...

    oracle定时删除表空间的数据并释放表空间

    2. **自动段空间管理(Automatic Segment Space Management, ASSM)**:Oracle从9i版本开始引入ASSM,它简化了表空间的空间管理,通过位图块来跟踪空闲空间,提高了空间利用率和删除效率。 3. **purge操作**:Purge...

    oracle数据库导出表结构到WORD文档

    在开发、文档编写或分享数据库设计时,有时我们需要将Oracle表结构导出到更便于阅读和分享的格式,比如Microsoft Word文档。这个过程可以帮助团队成员更好地理解数据库结构,也可以作为备份或审计的参考。 "oracle...

    Oracle中通过触发器来追踪用户的活动

    在Oracle数据库中,跟踪用户活动是一项重要的管理任务,有助于监控系统的使用情况、保障安全和优化性能。Oracle从Oracle8i开始引入了一类特殊触发器,它们不再局限于传统的DML事件,而是扩展到了系统级别,包括...

    Oracle跟踪工具SQlTracker

    Oracle数据库监听工具

Global site tag (gtag.js) - Google Analytics