[Oracle工程师手记]归档日志产生量太大时的简易分析手段
返回 Oracle 索引页
有些时候,Oracle 数据库产生了大量的归档日志(archive log),用户、DBA 可能都会很困惑,哪些表被写入了?如果没有什么有力的数据来辅助说明,怎么知道是 数据库自身的问题,还是用户的问题?
比较重量级的方法是,使用 logminer,来对 这个时间段产生的 archive log 进行解析。看看到底发生了什么。
其实还有一种比较轻量级的方法。我们可以对这个时间段产生的 archive log 进行dump, 然后借助 awk ,来进行排序,看看哪些 object,被频繁地记录到 archive log 中。
比如,我用这个命令,来对 arch1_77.dbf 进行 dump。
1 | ALTER SYSTEM DUMP LOGFILE 'u01/oracle/myhome/dbs/arch1_77.dbf' ; |
dump 所得到的内容,记录到了这个 session 的 trace 文件了。
如果想要确认 trace 文件的名字,我们可以用如下的方法。
1 2 | SQL>oradebug setmypid SQL>oradebug tracefile_name |
这样就会显示 trace file 名字。然后我们执行类似如下的名字( 假定得到的 trace 文件名字是 orcl12201_ora_3454.trc):
1 | $ grep OBJ: orcl12201_ora_3454.trc |awk -F "OBJ:" '{print $2}' |awk '{print $1}' | sort |uniq -c |sort -n -r |
我执行的结果如下:
1 2 3 4 5 6 7 8 9 10 11 12 | -bash-4.1$ grep OBJ: orcl12201_ora_3454.trc |awk -F "OBJ:" '{print $2}' |awk '{print $1}' | sort |uniq -c |sort -n -r 329829 73875 319042 4294967295 46 73854 1 73858 1 73857 1 73856 1 73853 1 73852 1 73850 1 100 -bash-4.1$ |
要注意的是,这里列出来的 值,不一定有对应的 object,这一部分(比如下面的 329829 和 319042),可以忽略。就算一个数据库根本不忙,作出 dump ,也会产生同样的 这一两行。
通过上面的命令,可以发现,被记录最多的是 WRP$_REPORTS_TIME_BANDS , 接下来就要分析,为何有大量的对 WRP$_REPORTS_TIME_BANDS的写入动作(我这个只是给例子,其实还称不上大量写入),遇到具体问题时,请具体分析。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | $ sqlplus / as sysdba SQL> select object_name from dba_objects where object_id in (329829,319042); no rows selected SQL> select object_name from dba_objects where object_id = 73854; OBJECT_NAME -------------------------------------------------------------------------------- SYS_LOB0000007379C00009$$ SQL> select object_name from dba_objects where object_id = 73585; OBJECT_NAME -------------------------------------------------------------------------------- WRP$_REPORTS_TIME_BANDS SQL> select object_name from dba_objects where object_id = 4294967295; no rows selected SQL> select object_name from dba_objects where object_id = 73875; OBJECT_NAME -------------------------------------------------------------------------------- TAB001 SQL> |
返回 Oracle 索引页
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
2014-04-06 不成功的RMAN恢复到其他机器的例子