10G ARCHIVELOG写满问题
昨天在数据导入的时候遇到了一个问题,在用imp导入的时候,因为数据量过大,导致了所有的归档日志被写满,所有日志均无法归档,整个数据库hang住。
关闭数据库之后打开时报错:
SQL> startup mount
ORACLE instance started.
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
Database mounted.
SQL> alter database open
alter database open
*
第
1
行出现错误
:
ORA-16014:
日志
1
的序列号
50
未归档
,
没有可用的目的地
ORA-00312:
联机日志
1
线程
1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\dodo\REDO01.LOG'
查看具体的alert日志可以发现,是由于归档日志的大小超出了限定范围
具体日志如下(本机的没拷过来,网上摘一段充个数):
[Copy to clipboard] [ - ]CODE:
*** SERVICE NAME:() 2006-03-25 17:30:42.109
*** SESSION ID:(157.1) 2006-03-25 17:30:42.109
kcrrwkx: work to do 0x1 (start)
ORA-19815:
警告
: db_recovery_file_dest_size
字节
(
共
2147483648
字节
)
已使用
100.00%,
尚有
0
字节可用。
*** 2006-03-25 17:30:44.843
************************************************************************
You have following choices to free up space from flash recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
system command was used to delete files, then use RMAN CROSSCHECK and
DELETE EXPIRED commands.
************************************************************************
ORA-19809:
超出了恢复文件数的限制
ORA-19804:
无法回收
51228672
字节磁盘空间
(
从
2147483648
限制中
)
*** 2006-03-25 17:30:44.984 60680 kcrr.c
ARC0: Error 19809 Creating archive log file to 'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\compiere\ARCHIVELOG\2006_03_25\O1_MF_1_94_%U_.ARC'
*** 2006-03-25 17:30:44.984 58942 kcrr.c
kcrrfail: dest:10 err:19809 force:0 blast:1
*** 2006-03-25 17:30:45.578 20146 kcrr.c
ORA-16038:
日志
1
序列号
94
无法归档
ORA-19809:
超出了恢复文件数的限制
ORA-00312:
联机日志
1
线程
1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\compiere\REDO01.LOG'
*** 2006-03-25 17:31:41.796
*** 2006-03-25 17:31:41.796 20146 kcrr.c
ORA-16014:
日志
3
的序列号
93
未归档
,
没有可用的目的地
ORA-00312:
联机日志
3
线程
1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\compiere\REDO03.LOG'
查看flash recovery area的使用情况:
SQL> select * from v$flash_recovery_area_usage;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------ ------------------ ------------------------- ---------------
CONTROLFILE .34 0 1
ONLINELOG 7.32 0 3
ARCHIVELOG 65.01 0 49
BACKUPPIECE 0 0 0
IMAGECOPY 0 0 0
FLASHBACKLOG 0 0 0
6 rows selected.
计算flash recovery area已经占用的空间:
SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;
SUM(PERCENT_SPACE_USED)*3/100
-----------------------------
2.1033
查看大小参数
SQL> show parameter db_recovery
NAME TYPE VALUE
-------------------------------- ----------- --------------------------------------------
db_recovery_file_dest string D:\oracle\product\10.2.0\flash_recovery_area
db_recovery_file_dest_size big integer 2147483648
注:此问题仅针对10g及以上版本,9i没有db_recovery_file_dest_size参数,可以直接指定路径,也可以直接手动删除来释放空间。