新建了一个测试库,并设置为归档,就交给同事连接。第二天就反馈,那个库没响应。我查了一下,输入DDL语句、Select语句,一直没结果返回,查V$lock,也没数据。看log,提示闪回区空间不足。
Errors in file f:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_arc0_3132.trc:
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 30381568 bytes disk space from 4102029312 limit
ARC0: Error 19809 Creating archive log file to 'F:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2014_04_29\O1_MF_1_383_%U_.ARC'
Errors in file f:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_arc2_3152.trc:
ORA-19815: WARNING: db_recovery_file_dest_size of 4102029312 bytes is 100.00% used, and has 0 remaining bytes available.
************************************************************************
You have following choices to free up space from 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.
************************************************************************
Errors in file f:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_arc2_3152.trc:
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 30381568 bytes disk space from 4102029312 limit
ARC2: Error 19809 Creating archive log file to 'F:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2014_04_29\O1_MF_1_383_%U_.ARC'
加大闪回区。
SQL> show parameter recovery;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string F:\app\Administrator\flash_rec
overy_area
db_recovery_file_dest_size big integer 3912M
recovery_parallelism integer 0
SQL> alter system set db_recovery_file_dest_size=6G;
System altered.
SQL>
之前输入的DDL语句马上得到响应。
SQL> create table aa(b timestamp);
Table created.
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
问题的根源应该是在切换日志时,对被切换的日志做归档,此时没足够空间接纳归档日志,所以一直挂在那里。