Chinaunix首页 | 论坛 | 博客
  • 博客访问: 24170
  • 博文数量: 9
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 102
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-12 17:08
文章分类

全部博文(9)

文章存档

2016年(9)

我的朋友

分类: Oracle

2016-11-19 12:12:44

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用户下查看磁盘空间使用情况,如果宽裕可以直接扩大闪回区的大小
     此次错误出现的情况是执行28百多万的数据的批量插入,出错的时候插入的数据大概是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';
阅读(341) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~