今天给客户测 试问题,让客户把数据发过来了。解压缩后一看,他们还是用的oracle 815版本的(他们exp导出时,带了导出日志,从导出日志中看出来是oracle 815版本的),不过没有关系,低版本的exp是可以用高版本的imp导入到高版本数据库中的。一看是导入还很正常,导入到其中某个表的时候,突然就不动 了。一开始我还没有弄明白怎末回事。后来,无意中看到了 计算机管理--事件查看器中 ,有很多报错信息:

Archive process error: ORA-16038: log 1 sequence# 317 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 1 thread 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\REDO01.LOG'

我这才发现,问题出在了归档上了。

又看了alert_oracle.log文件,也有很多这个报错信息。到这里,这个问题给了我一个教训:与oracle有关的操作,只要有问题,肯定会向alert_oracle.log文件写入日志的,就看你有没有意识去看这个日志文件了。

.去 google.com搜了点资料,这才恍然大悟:
 oracle10g在默认情况下,归档日志是保存在闪回恢复区的(对于我的来说是:E:\oracle\product\10.2.0\flash_recovery_area\ORACLE\ARCHIVELOG),如果你建库的时候用的默认设置,
闪回恢复区应该是2G,空间被占满了以后就无法再归档了。

此时。我从sqlplus  open database ,有提示:

Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

C:\Documents and Settings\Administrator>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 11月 26 17:58:22 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> select open_mode from v$database;

OPEN_MODE
----------
MOUNTED

SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-16014: 日志 1 的序列号 317 未归档, 没有可用的目的地
ORA-00312: 联机日志 1 线程 1:
'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORACLE\REDO01.LOG'

SQL>

/*-------------------------完毕------------------------*/

那怎么解决这个问题呢?网上的高手也给出了不少方法(以下的方法为转载,原文地址菩提老祖的博客http://yaanzy.itpub.net/post/1263/286285  ):

解决方法:

1.将归档设置到其他目录,修改alter system set log_archive_dest = 其他路径

2.转移或者删除闪回恢复区里的归档日志。

3.增大闪回恢复区。
ALTER SYSTEM SET db_recovery_file_dest_size=4g scope=both;

我的处理方法是采用第3种方法,下边是我的操作过程:

SQL> show parameter db_recovery_file_dest_size;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest_size           big integer 2G
SQL> alter system set db_recovery_file_dest_size=3G;

系统已更改。

SQL> alter database open;

数据库已更改。

SQL> show parameter db_recovery_file_dest_size;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest_size           big integer 3G
SQL>

/*-------------------------完毕------------------------*/

值得注意的 是,我执行完毕alter system set db_recovery_file_dest_size=3G;后,马上又去show parameter db_recovery_file_dest_size;此时显示的是3g了,不是原来的2g了。从另外一个方面来说:E:\oracle \product\10.2.0\db_1\dbs\SPFILEORACLE.ORA这个文件的修改时间,就是我执行alter system set db_recovery_file_dest_size=3G; 这就更证明,此更改马上就生效了。

值得注意的 是,将归档路径下的可用空间扩充到了3G,也就是在原来2G的基础上又加了1G.  oracle database下新形成的归档日志,实际上是用的这个新增的1G的空间。也许会有人提出疑问,“那我把原来已经形成的2G归档日志删除掉,oracle database不就能用3G了么?”其实不是这样,虽然在物理空间上,已经删除了2G,但是动态性能视图(v$recovery_file_dest) 并没有释放此这2g空间,可以使用select * from v$recovery_file_dest 查询出来。若你不从动态性能视图里删除这2G的空间,oracle database会认为这2G依然被占用。若是有个大的事物提交,并有频繁的日志切换,1G的空间马上就被用完,到时候你的 alert_oracle.log就有错误出现,比如,
ORA-19815: WARNING: db_recovery_file_dest_size of 3221225472 bytes is 100.00% used, and has 0 remaining bytes available.
*** 2008-11-28 10:05:13.375
************************************************************************
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.
************************************************************************
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 47715840 bytes disk space from 3221225472 limit
*** 2008-11-28 10:05:13.406 60680 kcrr.c
ARC0: Error 19809 Creating archive log file to 'E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORACLE\ARCHIVELOG\2008_11_28\O1_MF_1_344_%U_.ARC'

解决以上问题,就需要删除掉动态性能视图中的已占用空间的信息。按照eygle大师在http://www.eygle.com/archives/2005/03/oracle10gecieif.html 一文中的方法,是用rman来删除这些信息。所用到的rman命令如下:

1.是RMAN>  crosscheck archivelog all;--此命令的含义是检查所有归档日志的状态,并把遗失的标记为expired,也就是说,expired 表示已经被操作系统中被删除的归档日志。
2.是delete expired archivelog all; --此命令的含义是删除expired的归档日志

亲测:

在二级增量备份之后删除之前的archivelog

backup incremental level 2 database plus archivelog;

效果还是很给力的,只有1G(三天前的第一次备份是7G,1级level备份之后是6.5G,并且没有加plus archivelog )

删除一个归档日志

RMAN> crosscheck archivelog all;

奇怪,为什么检测没有1.13号的,是不是我前面备份了

删除15号的看看

终于有错误的了

执行delete expired archivelog all;

奇怪,我deletebackup之后,怎么二级增量的还在

附加1:

当ORACLE 归档日志满了后,将无法正常登入ORACLE,需要删除一部分归档日志才能正常登入ORACLE。

一、首先删除归档日志物理文件,归档日志一般都是位于archive目录下,AIX系统下文件格式为“1_17884_667758186.dbf”,建议操作前先对数据库进行备份,删除时至少保留最近几天的日志用于数据库恢复。

二、把归档日志的物理文件删除后,我们就可以正常登入ORACLE了,但是还没完全把归档日志删除干净,ORACLE的controlfile中仍 然记录着这些archivelog的信息,在oracle的OEM管理器中有可视化的日志展现出,当我们手工清除archive目录下的文件后,这些记录 并没有被我们从controlfile中清除掉,接下去我们要做的就是这个工作。

我们利用RMAN进行删除操作,操作步骤如下:(window客户端系统为例)

1.指定数据库实例

C:/Documents and Settings/Administrator>SET ORACLE_SID =orcl

2.连接数据库

C:/Documents and Settings/Administrator>RMAN TARGET SYS/sysadmin@orcl

3.查看归档日志的状态

RMAN> list archivelog all;

4.手工删除归档日志文件

RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

说明:
 SYSDATA-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。 
同样道理,也可以删除从7天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行全备份数据库 
DELETE ARCHIVELOG from TIME 'SYSDATE-7'; 删除从7天前到现在的全部日志,慎用
UNIX/LINUX下也可以通过FIND找到7天前的归档数据,使用EXEC子操作删除 
find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ; 
这样做仍然会在RMAN里留下未管理的归档文件 
仍需要在RMAN里执行下面2条命令 
crosscheck archivelog all; 
delete expired archivelog all; 
所以还不如上面的方法好用,不过用FIND的好处就是,可以在条件上,和EXEC子项上做很多操作,实现更复杂的功能

5.退出rman

RMAN> exit

附加2:

Oracle关于日志文件基本操作

1.查询系统使用的是哪一组日志文件:
select * from v$log;

2.查询正在使用的组所对应的日志文件:
select * from v$logfile;

3.强制日志切换:
alter system switch logfile;

4.查询历史日志:
select * from v$log_history;

5.查询日志的归档模式:
select dbid,name,created,log_mode from v$database;

6.查询归档日志的信息:
select recid,stamp,thread#,sequence#,name from v$archived_log;

7.增加与删除日志文件组
alter database add logfile group 1 ('/home1/Oracle/oradata/ora8i/log1a.log'),'/home2/oracle/oradata/ora8i/log1b.log') size 100M;

alter database drop logfile group 1;

8.增加与删除日志成员
alter database add logfile member '/home1/oracle/oradata/ora8i/log1a.log' to group 1,'/home1/oracle/oradata/ora8i/log2a.log' to group 2;

alter database drop logfile member '/home1/oracle/oradata/ora8i/log1a.log' ;

9.日志文件移动
alter database rename file '/home1/oracle/oradata/ora8i/log1a.log' to '/home2/oracle/oradata/ora8i/log1a.log';
执行该命令之前必须保证该日志文件物理上已经移动到新目录

10.清除日志文件
alter database clear logfile '/home1/oracle/oradata/ora8i/log1a.log';
该命令用于不能用删除组及组成员命令删除日志时使用

8.查看归档日志占用空间:
SELECT space_limit/1024/1024/1024 AS "Quota_G",space_used/1024/1024 AS "Used_M",space_used/space_limit*100 "Used_%",space_reclaimable AS reclaimable,number_of_files AS files FROM v$recovery_file_dest ;

9.修改归档日志空间大小
alter system set DB_RECOVERY_FILE_DEST_SIZE=40g;

10.查看归档日志列表
RMAN> list archivelog all;
删除归档日志
RMAN> delete archivelog until time 'sysdate-1' ;
双机下也可以用
delete obsolete;
crosscheck archivelog all;
delete expired archivelog all;

11. 用list expired看看是否有失效的archive log,证明没有失效的archive log:
RMAN> list expired archivelog all;

zhuan :http://www.cnblogs.com/sumsen/archive/2013/01/17/2864008.html

转载于:https://www.cnblogs.com/andy6/p/5997410.html

db_recovery_file_dest_size 修改大一点及删除归档日志 |转|相关推荐

  1. 自己也遇到了-db_recovery_file_dest_size 修改大一点

    今天给客户测试问题,让客户把数据发过来了.解压缩后一看,他们还是用的oracle 815版本的(他们exp导出时,带了导出日志,从导出日志中看出来是oracle 815版本的),不过没有关系,低版本的 ...

  2. 当ORACLE归档日志满后如何正确删除归档日志

    当ORACLE 归档日志满了后,将无法正常登入ORACLE,需要删除一部分归档日志才能正常登入ORACLE. 一.首先删除归档日志物理文件,归档日志一般都是位于archive目录下,AIX系统下文件格 ...

  3. delete archivelog all 无法彻底删除归档日志?

    最近在因归档日志暴增,使用delete archivelog all貌似无法清除所有的归档日志,到底是什么原因呢? [python] view plaincopy print? 1.演示环境 SQL& ...

  4. 删除归档日志_ORA-00257:archiver error.Connect internal only, until freed的问题

    删除归档日志_ORA-00257:archiver error.Connect internal only, until freed的问题 ORA-00257: archiver error. Con ...

  5. RMAN的设置引起删除归档日志无法删除的错误

    几天没去看备份日志,今天数据库RECOVERY空间不足了. 看到日志发现如下: RMAN-08138: WARNING: archived log not deleted - must create ...

  6. 在Oracle中,如何定时删除归档日志文件?

    在Oracle中,如何定时删除归档日志文件?    对于单实例的数据库可以使用如下的脚本: 1.在Oracle用户下,创建归档日志删除文件del_OCPLHR1_arch.sh 文件位置:/home/ ...

  7. oracle 11g删除归档日志,oracle 11g生产环境清理归档日志脚本

    最近几个客户生产环境都遇到一些故障,原因就是开归档,没有部署删除归档定时任务,以下大家可以参考,经过本人测试,在生产环境上正常运行. **roidba删除归档日志脚本** 一.基于RHEL6服务器端的 ...

  8. RMAN无法删除归档日志

    今天同事问到一个问题,他那边的一套11g数据库使用RMAN没办法删除旧的归档,导致磁盘使用率很高.要来ip登录上去一看确实是,最旧的归档日志是16年5月的. 1 2 3 4 5 6 7 8 9 10 ...

  9. 未解决ora-01034、ora-03113、oracle使用RMAN删除归档日志

    接此,https://blog.csdn.net/bcbobo21cn/article/details/116762059 oracle不能用:继续解决问题: 前次操作没有 set ORACLE_SI ...

最新文章

  1. UPYUN CDN 高可用架构实践
  2. php全选帖子删除,用PHP实现全选全删
  3. 【和谐 OS】来了!鸿蒙现场视频解析
  4. JAVA-SWING:生成透明JTable的改进2
  5. python买卖股票_用Python买卖股票III的最佳时间
  6. python 中 enumerate() 函数使用
  7. 安卓自动滑屏脚本_【按键精灵】开发抖音全自动养号脚本!可实现自动滑屏
  8. STM32F429HAL库UART学习笔记
  9. Spring AOP之XML配置
  10. 使用RF测试时,如何自动关闭浏览器驱动进程
  11. 浅谈我是如何从简单的系统功能需求书写规范的需求分析说明书
  12. matlab 安装coder工具包,matlab coder 工具箱使用教程
  13. 拉着你的手 歌手:谢东 专辑:笑脸
  14. PageAdmin CMS建站系统最新版本(V4.0.09)体验评测
  15. Jenkins启动报错:Jenkins requires Java versions [8, 11] but you are running with Java 13 from xx/xx/xx
  16. windows 总是弹出 windows installer 安装,关不了的解决方法
  17. CTP程序化交易入门系列之四:行情订阅常见问题解答
  18. 安卓多语言切换-显示英文图片
  19. 基于Web html的“我的家乡”网站前端设计
  20. 雷赛dmc2410控制卡,驱动器 光栅 加电机

热门文章

  1. 二、八、十、十六进制及小数间的转换
  2. 计算机虚拟化技术论文,【计算机网络论文】虚拟技术计算机网络论文(共1775字)...
  3. 大学python笔记_Introduction to Python课程笔记
  4. 超级封装RecyclerView的适配器Adapter 只需二三十行代码
  5. mysql 联合索 B 树_MySQL 索引与 B+ 树
  6. css3动画-animation
  7. export default 和 export 区别(ES6)
  8. python pip安装提示Consider using the `--user` option or check the permissions.
  9. 数据结构实验之链表五:单链表的拆分_JAVA
  10. 倒排索引(Inverted File Index )