登录ORACLE时报错
ORA-00257:archiver error.Connect internal only,until freed
初步判断该错误是因flash_recovery_area有大小限制导致的(默认为2G);当log_archive_dest的value为空时,归档日志默认存放在flash_recovery_area目录下。通过以下方式验证归档日志存放目录空
间是否不足:
SQL> show parameter log_archive_dest;
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
log_archive_dest string
log_archive_dest_1 string
由此可判断归档日志存放在flash_recovery_area目录。
SQL> select * from v$flash_recovery_area_usage;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------------------ ------------------ ------------------------- ---------------
CONTROLFILE 0 0 0
ONLINELOG 0 0 0
ARCHIVELOG 95.51 0 3
BACKUPPIECE 0 0 0
IMAGECOPY 0 0 0
FLASHBACKLOG 0 0 0
已选择6行。
我们可发现归档日志占用的空间比较高。
SQL> show parameter recover;
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
db_recovery_file_dest string D:\oracle\product\10.2.0/flash_recovery_area
db_recovery_file_dest_size big integer 2G
recovery_parallelism integer 0
此处可得知flash_recovery_area的大小限制为2G。
故,我们有两种方式可解决此问题:
1.删除以前的归档日志
2.扩大flash_recovery_area的大小
首先我们介绍第一种方式:
[oracle@RD008 ~]$ rman target /
恢复管理器: Release 10.2.0.1.0 - Production on 星期二 10月 9 17:04:50 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: ORCL (DBID=354297437)
RMAN> delete archivelog until time 'sysdate-1';
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=131 devtype=DISK
已存档的日志副本列表
关键字 Thrd Seq S 短时间 名称
------- ---- ------- - ---------- ----
51 1 4514 A 27-9月 -12 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\DBSXZQ\ARCHIVELOG\2012_10_09\O1_MF_1_4514_877OQHYX_.ARC
50 1 4515 A 28-9月 -12 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\DBSXZQ\ARCHIVELOG\2012_10_09\O1_MF_1_4515_877OQJ9F_.ARC
是否确定要删除以上对象 (输入 YES 或 NO)? yes
已删除的存档日志
存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\DBSXZQ\ARCHIVELOG\2
012_10_09\O1_MF_1_4514_877OQHYX_.ARC 记录 ID=51 时间戳 =796232965
已删除的存档日志
存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\DBSXZQ\ARCHIVELOG\2
012_10_09\O1_MF_1_4515_877OQJ9F_.ARC 记录 ID=50 时间戳 =796232954
2 对象已删除
RMAN> crosscheck archivelog all;
释放的通道: ORA_DISK_1
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=131 devtype=DISK
对归档日志的验证失败
存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\DBSXZQ\ARCHIVELOG\2
012_10_09\O1_MF_1_4516_877OQXMZ_.ARC 记录 ID=52 时间戳 =796232976
已交叉检验的 1 对象
RMAN> delete expired archivelog all;
释放的通道: ORA_DISK_1
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=131 devtype=DISK
说明与恢复目录中的任何存档日志均不匹配
至此,方式一已将flash_recovery_area的空间完全释放。
在介绍方式二:
[oracle@RD008 ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 10月 9 17:24:42 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
已连接。
SQL> alter system set db_recovery_file_dest_size=5g;
至此,方式二已将flash_recovery_area的空间扩大至5G。