我目前在 RHEL5 上使用 Oracle 数据库 11g。即使对数据库进行少量更改(每天大约 500 个事务),我的数据库也会每天生成大量归档日志。我还检查了我的数据文件(用户表空间)的大小;它的大小每天增加约 20MB,但归档日志每天生成 5GB 到 10GB。
谁能告诉我是什么导致了这个问题?是否有任何解决方案来检查它为什么会生成更多存档?我怎样才能减少它?
此致,
萨里特
我目前在 RHEL5 上使用 Oracle 数据库 11g。即使对数据库进行少量更改(每天大约 500 个事务),我的数据库也会每天生成大量归档日志。我还检查了我的数据文件(用户表空间)的大小;它的大小每天增加约 20MB,但归档日志每天生成 5GB 到 10GB。
谁能告诉我是什么导致了这个问题?是否有任何解决方案来检查它为什么会生成更多存档?我怎样才能减少它?
此致,
萨里特
可能值得查看文件上的时间戳,看看它是否均匀分布,或者是否一次生成一堆(可能与某些批处理活动相对应)。
像下面这样的查询将向您显示当前生成重做的会话。
如果您获得 AWR 许可,您也可以查看历史记录表。
数据库的总大小是多少?我怀疑一些大表每天都会被截断并重新加载非常相似的数据
正如另一个线程中所建议的,您可以使用 LogMiner 来发现记录了哪些事务:
http://www.oracle.com/technology/oramag/oracle/05-jul/o45dba.html
UPDATE
语句不一定会更改表或行的大小,但必须在重做中捕获,这就是驱动归档日志大小的原因。未提交的事务(回滚的事务)不会对数据库进行永久性更改,但仍会生成重做。
导致更新索引的表 DML 活动(应用程序是否执行大量
DELETE
ing 和INSERT
ing?)也会导致更新索引UPDATE
,更改索引列的语句也是如此。简而言之,衡量归档日志大小是衡量变更活动的指标——增长是一个不同且通常不相关的指标。您可能希望做的是查询
ALL_TAB_MODIFICATIONS
以从写入的角度准确显示自上次分析以来您的表实际上有多忙,就像在 10g+ 中一样,所有表都会自动监视 DML 活动。物化视图刷新会产生大量的重做。只是一个想法。
这个问题的一个简单解决方案是
如果 RMAN 显着降低了数据库的查询运行速度,您可以在 BACKUP DATABASE 字符串中添加以下关键字: 其中,1:00 - 应备份 1 小时的时间。1) 在 Oracle 中设置块更改跟踪以加速增量备份
http://download.oracle.com/docs/cd/B28359_01/backup.111/b28270/rcmbckba.htm # BRADV8125
2) 运行数据库和归档日志的增量备份级别 1(例如每天 2 次),在 RMAN 脚本末尾添加下一行: