db_recovery_file_dest_size
参考文档 : http://www.eygle.com/archives/2005/03/oracle10gecieif.html
1.错误提示:
ORA-19815: WARNING: db_recovery_file_dest_size of 2147483648 bytes is 87.41% used, and has 270457856 remaining bytes available.
Tue Apr 15 11:35:02 2008
************************************************************************
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.
************************************************************************
db_recovery_file_dest_size是指目录 : F:\oracle\product\10.2.0\flash_recovery_area\ ,一般用来存放归档日志(archivelog)和rman的备份集(backupset)
默认值一般为2G,但在实际生产库上这个值显然是不够的,我们根据的自己数据库的模式和备份策略来设置这参数的大小,但不管怎样
他还是有时候会满的.这就需要我们来解决了.
解决方法:
1.就是增大db_recovery_file_dest_size 的参数值
A.
SQL> show parameter db_recovery_file_dest_size
NAME TYPE VALUE
------------------------------------ -----------
db_recovery_file_dest_size big integer 2G
B.
SQL> alter system set db_recovery_file_dest_size=3G;
系统已更改。
C.
SQL> show parameter db_recovery_file_dest_size或(recover)
NAME TYPE VALUE
------------------------------------ -----------
db_recovery_file_dest_size big integer 3G
SQL>
2.删除不必要的数据
A.可以手动删除不必要的文件,但这个时候他并不释放空间,还需要执行rman命令来实际释放空间
在os上删除不必要的文件,但查询,发现空间没有释放
SQL> select substr(name,1,30) name,space_limit as quota,space_used as used,
space_reclaimable as reclaimable,number_of_files as files from v$recovery_f
ile_dest;
NAME QUOTA USED RECLAIMABLE(可回收) FILES
------------------------------------------------------------ -------
F:\oracle\product\10.2.0/flash 2147483648 239380480 0 5
释放空间
C:\Documents and Settings\Administrator>rman catalog rman/rman@rman target sys/movo@movo
恢复管理器: Release 10.2.0.1.0 - Production on 星期二 4月 15 14:47:44 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: MOVO (DBID=3762284645)
连接到恢复目录数据库
RMAN> crosscheck archivelog all;
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=158 devtype=DISK
对归档日志的验证成功
存档日志文件名 =F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\MOVO\ARCHIVELOG\2008_04_14\O1_MF_1_51_4
05X2ZBQ_.ARC 记录 ID=47 时间戳 =652025186
对归档日志的验证失败
存档日志文件名 =F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\MOVO\ARCHIVELOG\2008_04_14\O1_MF_1_52_4
06CKOLK_.ARC 记录 ID=48 时间戳 =652039991
对归档日志的验证失败
存档日志文件名 =F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\MOVO\ARCHIVELOG\2008_04_15\O1_MF_1_53_4
083TMJ3_.ARC 记录 ID=49 时间戳 =652097619
对归档日志的验证失败
存档日志文件名 =F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\MOVO\ARCHIVELOG\2008_04_15\O1_MF_1_54_4
0856SOZ_.ARC 记录 ID=50 时间戳 =652099034
已交叉检验的 4 对象
RMAN> delete expired archivelog all;
释放的通道: ORA_DISK_1
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=158 devtype=DISK
已存档的日志副本列表
关键字 Thrd Seq S 短时间 名称
------- ---- ------- - ---------- ----
387 1 51 X 13-4月 -08 F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\MOVO\ARCHIVELOG\2008_
04_14\O1_MF_1_51_405X2ZBQ_.ARC
是否确定要删除以上对象 (输入 YES 或 NO)? yes
已删除的存档日志
存档日志文件名 =F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\MOVO\ARCHIVELOG\2008_04_14\O1_MF_1_51_4
05X2ZBQ_.ARC 记录 ID=47 时间戳 =652025186
1 EXPIRED 对象已删除
SQL> select substr(name,1,30) name,space_limit as quota,space_used as used,
space_reclaimable as reclaimable,number_of_files as files from v$recovery_f
ile_dest;
NAME QUOTA USED RECLAIMABLE FILES
------------------------------------------------------------ ----------
F:\oracle\product\10.2.0/flash 2147483648 239380480 0 4
F:\oracle\product\10.2.0/flash 2147483648 239380480 0 5
---- end ----
更改归档路径
1\ mkdir /archivelog
2\ chown -R oracle.dba /archivelog
3\ alter system set log_archive_dest_1='location=/archivelog';
4\ shutdown immediate --- startupmount---alter database archivelog----alter database open;
5\ alter system switch logfile;
6\ archive log list
7\ show parameters archive;
oracle更改归档路径
在ORACLE10G中,默认的归档路径为$ORACLE_BASE/flash_recovery_area。对于这个路径,
ORACLE有一个限制,就是默认只能有2G的空间给归档日志使用,可以使用下面两个SQL语句去查看它的限制
1. select * from v$recovery_file_dest;
sql >show parameter db_recovery_file_dest(这个更友好直观一些)
当归档日志数量大于2G时,那么就会由于没有更多的空间去容纳更多的归档日志会报无法继续归档的错误。
如:
RA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 10017792 bytes disk space from 2147483648 limit
ARC0: Error 19809 Creating archive log file to '/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_04_30/o1_mf_1_220_0_.arc'
这时我们可以修改它的默认限制,比如说将它增加到5G或更多,也可以将归档路径重新置到别的路径,就不会有这个限制了。
更改限制语句如下:
alter system set db_recovery_file_dest_size=5368709102 (这里为5G 5x1024x1024x1024=5G)
或者直接修改归档的路径即可
SQL> alter system set log_archive_dest_1='location=/u01/archivelog' scope =both;
2.更改归档模式
sql> archive log list;
sql> shutdown immediate;
sql> startup mount;
sql> alter database archivelog;
sql> alter database open;
sql> archive log list; ......