今天在rman备份数据库时候报出了一个错误信息:
RMAN-00571:===========================================================
RMAN-00569==============ERROR MESSAGE STACK FOLLOWS
===============
RMAN-00571:===========================================================
RMAN-03009: failure of
backup command on ORA_DISK_1 channel at 10/23/2010
23:57:36
ORA-19809: limit exceeded
for recovery files
ORA-19804: cannot reclaim
52428800 bytes disk space from 2147483648 limit
感觉像是磁盘空间不够了,但是看了一下磁盘空间,还有不少可用的。
[oracle@localhost ~]$
df
文件系统1K-块
已用
可用 已用% 挂载点
/dev/sda3
29295128
10329216
17453796
38% /
/dev/sda1
155543
11467
136046 8%
/boot
tmpfs
257668
0
257668 0%
/dev/shm
[oracle@localhost
~]$
执行下面的语句,看闪回恢复区的使用情况
REASON
-------------------------------------------------------
db_recovery_file_dest_size of 2147483648 bytes is
98.22% used and has 38231040 remaining bytes
available.
明显是闪回恢复区不足了。
实验:
backup database
format='/oracle/databak/%u’
可以完成备份,证明确实是闪回恢复区不足造成的。
启动到mount阶段,修改闪回区大小:
alter system set
db_recovery_file_dest_size=4g scope=both;
重新开启数据库,再备份可以完成。
查看flash_recovery_area 使用情况,果然已经超过原来设定的2g空间。
[oracle@localhost flash_recovery_area]$ du
-h
563M
./PENG/backupset/2010_10_24
1.1G
./PENG/backupset/2010_10_13
555M
./PENG/backupset/2010_10_23
4.0K
./PENG/onlinelog
40M
./PENG/archivelog/2010_10_14
28M
./PENG/archivelog/2010_10_21
14M
./PENG/archivelog/2010_10_23
37M
./PENG/archivelog/2010_10_22
117M
./PENG/archivelog
14M
./PENG/autobackup/2010_10_24
6.9M
./PENG/autobackup/2010_10_23
21M
./PENG/autobackup
2.3G
./PENG
2.3G
.
[oracle@localhost
flash_recovery_area]$
其中 ./PENG/backupset 这个目录占了2.2G主要是存放备份集文件。
在网上查找到一些解决办法:
1.将归档设置到其他目录,修改alter system set log_archive_dest
= 其他路径
2.转移或者删除闪回恢复区里的归档日志。
3.增大闪回恢复区。
ALTER SYSTEM SET db_recovery_file_dest_size=4g
scope=both;
4.查看闪回区使用情况:
SYS@PENG SQL> select
round(space_used/space_limit,2), space_used, number_of_files,
substr(name,1,20) from
v$recovery_file_dest;
rman target/
rman>crosscheck
archivelog all;
rman>crosscheck backup
;
删除重复的备份集和归档日志
rman>delete expired
archivelog all;
rman>delete expired
backup;
SYS@PENG SQL> select
round(space_used/space_limit,2), space_used, number_of_files,
substr(name,1,20) from
v$recovery_file_dest;
ROUND(SPACE_USED/SPACE_LIMIT,2) SPACE_USED
NUMBER_OF_FILES SUBSTR(NAME,1,20)
------------------------------- ----------
---------------
------------------------------------------------------------
.44 1908802560
13 /oracle/flash_recove
查看fra空间大小与sql查出来的一致
[oracle@localhost flash_recovery_area]$ du
-h
1.1G ./PENG/backupset/2010_10_24
555M ./PENG/backupset/2010_10_23
1.7G ./PENG/backupset
4.0K ./PENG/onlinelog
40M ./PENG/archivelog/2010_10_14
28M ./PENG/archivelog/2010_10_21
14M ./PENG/archivelog/2010_10_23
37M ./PENG/archivelog/2010_10_22
117M ./PENG/archivelog
21M ./PENG/autobackup/2010_10_24
6.9M ./PENG/autobackup/2010_10_23
28M ./PENG/autobackup
1.8G ./PENG
1.8G .
[oracle@localhost flash_recovery_area]$