1、故障现象:
执行了一个批量脚本挂死,连接数据库报错ORA-00257:archiver error
2、解决办法:
通过sys登录查看闪回区的使用情况,发现已经满了
SQL>select * fromV$FLASH_RECOVERY_AREA_USAGE;
查看闪回区域占用的空间大小 flash recovery area
SQL> selectsum(percent_space_used)*3/100 from v$flash_recovery_area_usage;
执行结果如下图,数据库安装默认下来就是这么大,对于数据量大的批量操作无法满足。
在root用户下查看磁盘空间使用情况,如果宽裕可以直接扩大闪回区的大小
此次错误出现的情况是执行2千8百多万的数据的批量插入,出错的时候插入的数据大概是700万左右,占用了3g空间
估算2800万数据大概占用空间12g左右,所以扩大闪回区域大小到20g.
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=20g;
如果数据库的数据不是日志老业务库,是刚新建的数据库,没有业务数据,可以将归档删除
查询日志目录位置
show parameter recover;
删除归档日志,picpsh是数据库实例名
1. 进入rman
简便进入方法: rman target/
2. connect target /
3. crosscheck archivelog all;
4. delete expired archivelogall;
SQL> connect /as sysdba
SQL> select * fromV$FLASH_RECOVERY_AREA_USAGE;
数据批量插入执行完毕,查看生成了大概13g的归档日志
3、原因分析
在oracle 10g后,若flashback开启,后台归档程序进行(ARCn)将会自动在闪回恢复区中创建每个归档重做日志的一个副本,而flashback区域有大小限制:
1.查看快速恢复区的参数信息
SQL>show parameter db_recovery_file_dest;
2.修改快速恢复区的大小
SQL>alter system set db_recovery_file_dest_size=20g;
3.可以通过数据字典v$recovery_file_dest来查看款速恢复区的空间使用情况。
SQL>col name for a30
SQL>set line 100
SQL>select name,space_limit,space_used,number_of_files from v$recovery_file_dest;
4.解决快速恢复区空间不足的问题
1)重新设置快速恢复区的大小
SQL>alter system set db_recovery_file_dest_size=20g;
2)使用CROSSCHECK和DELETE OBSOLETE指令删除不需要的文件,或者使用DELETE EXPIRED 指令删除那些不需要的备份文件。或者使用RMAN的BACKUP RECOVERY AREA指令将恢复区中的文件复制到磁带中。
3)删除当前的恢复区,重新设置。
SQL>alter system set db_recovery_file_dest='/u01/backup/newflasharea';
执行了一个批量脚本挂死,连接数据库报错ORA-00257:archiver error
2、解决办法:
通过sys登录查看闪回区的使用情况,发现已经满了
SQL>select * fromV$FLASH_RECOVERY_AREA_USAGE;
查看闪回区域占用的空间大小 flash recovery area
SQL> selectsum(percent_space_used)*3/100 from v$flash_recovery_area_usage;
执行结果如下图,数据库安装默认下来就是这么大,对于数据量大的批量操作无法满足。
在root用户下查看磁盘空间使用情况,如果宽裕可以直接扩大闪回区的大小
此次错误出现的情况是执行2千8百多万的数据的批量插入,出错的时候插入的数据大概是700万左右,占用了3g空间
估算2800万数据大概占用空间12g左右,所以扩大闪回区域大小到20g.
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=20g;
如果数据库的数据不是日志老业务库,是刚新建的数据库,没有业务数据,可以将归档删除
查询日志目录位置
show parameter recover;
删除归档日志,picpsh是数据库实例名
1. 进入rman
简便进入方法: rman target/
2. connect target /
3. crosscheck archivelog all;
4. delete expired archivelogall;
SQL> connect /as sysdba
SQL> select * fromV$FLASH_RECOVERY_AREA_USAGE;
数据批量插入执行完毕,查看生成了大概13g的归档日志
3、原因分析
在oracle 10g后,若flashback开启,后台归档程序进行(ARCn)将会自动在闪回恢复区中创建每个归档重做日志的一个副本,而flashback区域有大小限制:
1.查看快速恢复区的参数信息
SQL>show parameter db_recovery_file_dest;
2.修改快速恢复区的大小
SQL>alter system set db_recovery_file_dest_size=20g;
3.可以通过数据字典v$recovery_file_dest来查看款速恢复区的空间使用情况。
SQL>col name for a30
SQL>set line 100
SQL>select name,space_limit,space_used,number_of_files from v$recovery_file_dest;
4.解决快速恢复区空间不足的问题
1)重新设置快速恢复区的大小
SQL>alter system set db_recovery_file_dest_size=20g;
2)使用CROSSCHECK和DELETE OBSOLETE指令删除不需要的文件,或者使用DELETE EXPIRED 指令删除那些不需要的备份文件。或者使用RMAN的BACKUP RECOVERY AREA指令将恢复区中的文件复制到磁带中。
3)删除当前的恢复区,重新设置。
SQL>alter system set db_recovery_file_dest='/u01/backup/newflasharea';
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29535374/viewspace-2128741/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29535374/viewspace-2128741/