ORACLE数据库归档日志满后造成系统宕机的处理方法

第一次宕机时,初始以为是系统内存溢出,于是重启应用服务器,发现应用服务器在启动时报错,错误为无法连接到数据库。于是连接数据库服务器,打开EM 后发现系统报错如图:
提示归档日志写入失败,检查服务器发现磁盘空间满了,于是清理磁盘空间后,重启数据库问题解决。随后把服务器磁盘空间扩容,直接给了oracle 数据所在盘1TB 的磁盘空间。
第二次又出现此问题,经过仔细检查,并与同事确认后,发现是由于ORACLE 数据库的归档日志被启用了,而我们系统默认是没有启用ORACLE 数据库归档日志这个功能的。
使用sql 命令查看:
Sql>sqlplus / as nolog;---------------------启动sql*Plus
Sql> connect sys/password@orcl as sysdba;
Sql> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 4888
下一个存档日志序列 4890
当前日志序列 4890
Sql> show parameter db_recovery_file_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string D:\oracle\product\10.2.0/flash_recovery_area
db_recovery_file_dest_size big integer 20G
发现默认的归档路径为 D:\oracle\product\10.2.0/flash_recovery_area 。而且限制使用空间为 20G 。由于每天产生的 oracle 归档日志差不多就占用 2 个 G 的磁盘空间,而且 oracle 自身并不会自动清理也没有相关设置自动清理归档日志的功能,一段时间不进行清理, 20G 空间很快就满了。
与客户商议,准备关闭归档日志功能,客户了解情况后,觉得归档日志功能还是需要开启,(归档日志是 oracle 灾难恢复的必要数据),于是准备把归档日志使用空间扩大,设成 200g 。
处理方法:
一、首先要处理日志空间满的情况:
1 、删除归档日志物理文件,归档日志一般都是位于 D:\oracle\product\10.2.0\flash_recovery_area\ORCL\ARCHIVELOG 目录下,以日期文件夹存放,删除时至少保留最近几天的日志用于数据库恢复。
2 归档日志的物理文件删除后, ORACLE 可以正常登录了,但是还没完全把归档日志删除干净, ORACLE controlfile 中仍然记录着这些 archivelog 的信息,在 oracle OEM 管理器中有可视化的日志展现出,当我们手工清除 archive 目录下的文件后,这些记录并没有被我们从 controlfile 中清除掉,利用 RMAN 进行删除操作;
进入 cmd
1. 指定数据库实例
C:/Documents and Settings/Administrator>SET ORACLE_SID =orcl
2. 连接数据库
C:/Documents and Settings/Administrator>RMAN TARGET SYS/password@orcl
3. 查看归档日志的状态
RMAN> list archivelog all;
4. 手工删除归档日志文件
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; (删除 7 天以前的日志记录)
5. 退出 rman
RMAN> exit
二、扩大归档日志使用空间,设成 200g ,使用 sql 命令:
SQL> alter system set db_recovery_file_dest_size=214748364800;---设置使用空间大小(20*1024*1024*1024)
System altered
SQL> show parameter db_recovery_file_dest;---查看归档日志路径限额
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string D:\oracle\product\10.2.0/flash_recovery_area
db_recovery_file_dest_size big integer 200G
然后重启数据库后,系统可以正常使用了。
但是,由于启用了归档日志,即便设置成了200G 的使用空间,按照每天2G 的数据增长量,也就3 个月数据就能达到了,需要定制任务定时清理归档日志,而删除归档日志只有在RMAN 里才能进行,于是在数据库服务器上新建一个bat 文件(文件名随意)
编辑此文件为:
rman target 'sys/password' cmdfile 'd:\cmd.txt' ―――此处路径、文件名随意
在命令中对应的路径下新建cmd.txt 文件,打开编辑此文件,
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
然后在windows 计划任务里添加任务,指定每天定时执行此bat 文件。
经过一周的运行,归档日志每天定时被清理。系统正常.
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值