星期一, 九月 11, 2006
10g闪回恢复区满
周四晚上在公司培训“执行力”接到客服同事的电话,说客户的数据库无法启动,版本是 10gR2 :(
20:20 分打车赶到客户现场以后,查看 oracle 启动时的错误信息,初步判断是由于闪回恢复区的空间满造成的错误,查看数据库参数和目录大小,证实了判断。
因为oracle10g在默认情况下,归档日志是保存在闪回恢复区的,如果你建库的时候用的默认设置,闪回恢复区应该是2G,空间被占满了以后就无法再归档了,这样就造成了数据库挂起
解决办法:
1.将归档设置到其他目录,修改alter system set log_archive_dest = 其他路径
2.转移或者删除闪回恢复区里的归档日志。
3.增大闪回恢复区。ALTER SYSTEM SET db_recovery_file_dest_size=30g
4.如果要撤销闪回恢复区,把初始化参数 DB_RECOVERY_FILE_DEST 的值清空即可
讨论结果:
去年快验收的时候,在做压力测试的时候曾经出现过类似问题,当时根据客户和项目组意见,已经通过第三种办法把闪
回恢复区加大到 20 g,但是经过将近一年的使用,闪回恢复区已经到达了 20 g 。因为日志增长比较快,客户也没有专门的 DBA 维护数据库,暂时也没有采用比较完善的联机备份手段所以通过和客户讨论,采用第四种办法取消闪回恢复区,但是客户归档日志也放在这个目录下,这个分区的大小是 43G 现在已经使用了 25 G ,如果不采用合适的联机备份手段或者归档手段,磁盘空间也会填满。这点请项目组同事注意!
操作过程:
1、要求客户管理员备份数据库,因为数据库无法打开,只能采用冷备份的办法
2、备份完成后,打开主机数据库到 mount 状态
startup mount
3、撤销闪回恢复区
alter system set db_recovery_file_dest='' scope=both;
4、打开数据库
alter database open;
5、测试数据库和 OA 是否能正常访问。
6、测试通过后,把数据库切换到从机 (红旗HA)上,重复上面的操作。
7、通过测试,发现一切正常。
8、与客户聊了一下数据库管理方面的问题,收工(时间 20:50)。



