oracle10g RAC 采用ASM磁盘做备份的数据库突然报错 ora-00257:archive error. Conet internal only,until freed
因为采用的是ASM磁盘做的归档日志和归档备份,在网上找到的解决办法均是普通磁盘的解决方法,都不适用.
操作系统:IBM AIX
该问题解决的具体方法如下:
1.查看归档模式
sqlplus / as sysdba
archive log list; --- 发现Archive destination是+ARCBAK1
说明归档日志路径在ASM上的+ARCBAK1里
2.查找ASM实例名称
ps -ef|grep asm_ --- 得知节点1的叫+ASM1 节点2的叫 +ASM2
3.登录到ASM
export ORACLE_SID=+ASM1
asmcmd --- 进入asm实例进行操作
4.查看ASM使用情况
lsdg --- 此时发现usable_file_mb和free_mb已经非常小了,问题就出在这里,ASM磁盘快被占满了,无法继续写入归档日志;
5.找到ASM里面归档日志的存放路径,路径如下:
+ARCBAK1/<DBNAME>/BACKUPSET/ --- +ARCBAK1是ASM磁盘的名字, DBNAME是数据库的名字,DBNAME下有两个路径 --->ARCHIVELOG和BACKUPSET
ARCHIVELOG就是目前归档日志的路径,BACKUPSET就是备份集的路径
6.找到BACKUPSET下的备份集,删除旧的备份集
rm 旧的备份集
lsdg --- 此时发现空间已经回来了
BACKUPSET下的备份集都是以日期命名的,进去可以查看备份文件的名称
这里我发现很老的文件都在这里,应该是RMAN里面没有设置备份限制导致备份集将空间占满,所以导致ARCHIVELOG无法写入;
最后重启数据库到OPEN状态,至此数据库恢复正常.
---PS:在RMAN中修改备份策略
configure retention policy to recovery window of 20 day; --- 备份值保留最近20天的