问题描述:所用
数据库为 oracle 10g ,模式为归档模式,oracle 系统默认的归档空间为2G,由于
日志过多,空间写满,数据库的redo
文件不能归档,而出现oracle数据库挂起的问题。 oem打开oracle 10g 数据库 *** 作界面,会显示如下错误信息: 由于输出设备已满或不可用, 归档程序无法归档重做日志。 数据库无法使用 现将解决办法稍作总结: 方法一:增大归档日志空间的大小 可以通过下面的方法来调整系统的回闪恢复区大小: 首先是关闭数据库:以SYS身份链接到oracle,执行shutdown immediate启动数据库到mount状态:startup mount 查看回闪恢复区的大小和存放目标:show parameter db_recovery_file_dest 修改回闪恢复区的大小alter system set db_recovery_file_dest_size = 4G(缺省是2G,可以根据实际情况调整大小) 最后打开数据库:alter database openOK , 问题解决。数据库恢复使用。 方法二 :进入oracle清空日志信息,把空间释放出来 启动数据库到mount状态: sqlplus /as sysdba startup mount 新起一个终端,用rman进入把归档日志删除 命令rman target/ (只安装了一个oracle10g数据库) 命令crosscheck archivelog all(列出归档日志信息) 命令delete expired archivelog all(将上述列出的归档日志删除)命令exit此时最好将数据库重新备份一下 把数据库的mount状态更改为open状态 alter database openOK.问题解决,数据库可以使用。误区:在系统清空归档目录的日志信息(即物理删除归档日志,或将归档日志转移至别处)不可取,OS虽然删除了,但oracle系统识别不出来已经清空日志,只能进入oracle清空日志信息,把空间释放出来,(方法二);或者是把归档空间设置更大(方法一)。 建议将两种方法结合使用,减少工作量,也避免数据库频繁挂起。同时定时进行数据库完全备份或其他重要数据备份如果不想加硬盘的话,那么只能删除日志,可以根据时间删除老日志(如果有带库的话,也可以将老日志转移到带库上,然后再删除存储上的老日志)。删除归档日志有一套程序的。可不是直接删除了就行,那套程序网上很多,我就不多写了。
归档日志占满硬盘,还不敢或者不能删除(万一宕机了,没有备分怎么恢复),多数是备分策略有一点问题,可以重新讨论备分策略(主要是备分方式和备分级别),让备分占用的空间相对稳定下来的。
1,首先删除归档日志物理文件,归档日志一般都是位于archive目录下,AIX系统下文件格式为“1_17884_667758186.dbf”,建议 *** 作前先对数据库进行备份,删除时至少保留最近几天的日志用于数据库恢复。
2,把归档日志的物理文件删除后,我们就可以正常登入ORACLE了,但是还没完全把归档日志删除干净,ORACLE的controlfile中仍然记录着这些archivelog的信息,在oracle的OEM管理器中有可视化的日志展现出,当我们手工清除archive目录下的文件后,这些记录并没有被我们从controlfile中清除掉,接下去我们要做的就是这个工作。
利用RMAN进行删除 *** 作, *** 作步骤如下:(window客户端系统为例):
1.指定数据库实例
C:/Documents and Settings/Administrator>SET ORACLE_SID =orcl
2.连接数据库
C:/Documents and Settings/Administrator>RMAN TARGET SYS/sysadmin@orcl
3.查看归档日志的状态
RMAN>list archivelog all
4.手工删除归档日志文件
RMAN>DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'
5.退出rman.
评论列表(0条)