jony413

多媒体信息发布、排队叫号、医院分诊、电子班牌

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

ORA-00257: archiver error. Connect internal only, until freed.

Oracle 10g数据库物理空间管理方式与以前Oracle发生了变化,对归档日志所在的Flash_Recovery_Area空间进行了另外限制
Flash_Recovery_Area空间缺省安装时比较小,只有2GB,容易用完

解决过程
  根据数据库目前可用存储空间情况、FLASH_RECOVERY_AREA空间为2GB的实际情况,把FLASH_RECOVERY_AREA的空间修改为20GB()。
SQL> alter system set DB_RECOVERY_FILE_DEST_SIZE=20g;
系统已更改。

(其实问题的本质是归档日志的使用已经达到了spfile等启动参数文件中指定的最大值。oracle 10g中归档日志默认的存放地是闪回目录,即%ORACLE_BASE%/flash_recovery_area的相应实例名下面,这个位置的大小在参数文件中有个限制,解决空间不足的问题可以通过两种方式来实现,一个修改这个大小限制,还有一个就是修改归档日志存放位置。)

如果不要这些archivelog的话,可以删除一些

rman>DELETE NOPROMPT ARCHIVELOG UNTIL TIME 'SYSDATE-3'; 直接运行这条 这样会只保留三天的归档 

查看所有归档日志

rman>list archivelog all;

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                 6.11                                                          0                                        3
BACKUPPIECE                   0                                                          0                                        0 
IMAGECOPY                     0                                                         0                                         0
FLASHBACKLOG                0                                                        0                                         0

 

设置定时清楚过期日志

由于RAC环境,配置归档目录在各自主机上,在一个节点上发起rman时,无法远程访问到另一个节点的归档文件,在测试期间归档空间不足,很可能导致数据库无法使用,所以定期清理归档日志。
 
设置计划任务,每半小时执行一次
0,30 * * * * /home/oracle/delarch.sh
 
清理脚本:
host1$ cat delarch.sh
#!/bin/ksh
#set env
export ORACLE_HOME=/u01/app/oracle/10.2
#export ORACLE_SID=sjk1
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export PATH=$PATH:$ORACLE_HOME/bin
echo "---------------------start-------------------";date
#backup start
$ORACLE_HOME/bin/rman cmdfile=/home/oracle/rmandel.rcv log=/home/oracle/rmandel.log append
echo "----------------------end--------------------";date
 
rman脚本:
host1$ cat home/oracle/rmandel.rcv
connect target /
delete noprompt archivelog until time 'sysdate-30/24/60' like '/arch_1/1_%.dbf' thread 1;
exit;
同样,在另一个节点也进行类似设置(归档日志如果存放在共享设备则不需要)。
posted on 2013-04-09 20:12  jony413  阅读(1400)  评论(0)    收藏  举报