如何解决“归档日志已满问题”

问题描述:

所用数据库为 Oracle 10g ,模式为归档模式,oracle 系统默认的归档空间为2G,由于日志过多,空间写满,数据库的redo文件不能归档,而出现oracle数据库挂起的问题。

oem打开oracle 10g 数据库操作界面,会显示如下错误信息:

“ 由于输出设备已满或不可用, 归档程序无法归档重做日志。”

数据库无法使用

现将解决办法稍作总结:

方法一:增大归档日志空间的大小

可以通过下面的方法来调整系统的回闪恢复区大小:
首先是关闭数据库:以SYS身份链接到oracle,执行>shutdown immediate;
启动数据库到mount状态:>startup mount
查看回闪恢复区的大小和存放目标:>show parameter db_recovery_file_dest
修改回闪恢复区的大小>alter system set db_recovery_file_dest_size = 4G(缺省是2G,可以根据实际情况调整大小)
最后打开数据库:>alter database open;

OK , 问题解决。数据库恢复使用。

方法二 :进入oracle清空日志信息,把空间释放出来

启动数据库到mount状态:

>sqlplus “/as sysdba”

>startup mount

新起一个终端,用rman进入把归档日志删除

命令>rman target/  (只安装了一个oracle10g数据库)

命令>crosscheck archivelog all;  (列出归档日志信息)

命令>delete expired archivelog all;  (将上述列出的归档日志删除)

命令>exit;

此时最好将数据库重新备份一下

把数据库的mount状态更改为open状态

>alter database open;

OK.问题解决,数据库可以使用。

误区:

在系统清空归档目录的日志信息(即物理删除归档日志,或将归档日志转移至别处)不可取,OS虽然删除了,但oracle系统识别不出来已经清空日志,只能进入oracle清空日志信息,把空间释放出来,(方法二);或者是把归档空间设置更大(方法一)。

建议将两种方法结合使用,减少工作量,也避免数据库频繁挂起。同时定时进行数据库完全备份或其他重要数据备份

---------------------------------------------------------------------

select * from v$flash_recovery_area_usage; --查看空间占用率

select * from v$recovery_file_dest;  --查看归档日志的存放地址;

使用rman清空归档日志

crosscheck archivelog all;  --查看可以所有的归档文件

delete expired archivelog all; --清空过期的归档文件

如何确认归档日志是否过期,rman有一个保留策略,可以定义多少天之前的日志算为过期;

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 14 DAYS;

让恢复窗口成为14天大小。
  show all --查看所有的rman策略.

select count(*) from v$archived_log where archived='YES' and deleted='NO'; --查看所有归档,未删除的归档日志

------------------------检查方法-----------

大多数人会去先检查放归档的目录的磁盘空间是否满了,通过该归档目录空余情况来判断归档空间是否满了,但我觉得这个方法不一定代表实际情况,你看到的可能是一个表面现象。

  默认情况下我们在dbca建库时,会把归档放在$ORACLE_HOME/ flash_recovery_area 下,并且oracle默认给FRA配置的大为2g

  这里需要足以两个参数:

  db_recovery_file_dest string /oracle/flash_recovery_area

  db_recovery_file_dest_size big integer 2G

  这里总结一句,如果db_recovery_file_dest 下的存放的归档大小达到db_recovery_file_dest_size 即使该目录下仍然有磁盘空间剩余,oracle也不会去写。

  这里我建议按照如下步骤去确定:归档空间是否满了?

  1.首先从系统层面确定归档目录存放的磁盘空间情况:

  [oracle@localhost bdump]$ df -h

  Filesystem Size Used Avail Use% Mounted on

  /dev/mapper/VolGroup00-LogVol00 26G 12G 14G 46% /

  /dev/sda2 19G 16G 2.8G 85% /oracle

  /dev/sda1 99M 24M 71M 25% /boot

  tmpfs 978M 508M 470M 52% /dev/shm

  2. 确定归档存放目录,归档存放目录大小

  SQL> archive log list;

  Database log mode Archive Mode

  Automatic archival Enabled

  Archive destination USE_DB_RECOVERY_FILE_DEST -------这里默认使用的是DB_RECOVERY_FILE_DEST

  Oldest online log sequence 17

  Next log sequence to archive 20

  Current log sequence 20

  ----也可以按照以下方式查询归档放置的地方

  SQL> show parameter db_

  NAME TYPE VALUE

  ------------------------------------ ----------- ------------------------------

  db_keep_cache_size big integer 0

  db_name string lixora

  db_recovery_file_dest string /oracle/flash_recovery_area

  db_recovery_file_dest_size big integer 2G

  db_recycle_cache_size big integer 0

  db_unique_name string lixora

  -----这里可以看到闪回恢复区里的空间使用情况:

  SQL> select * From v$flash_recovery_area_usage;    ---------这里可以看到闪回恢复区里的空间占有率情况:

  FILE_TYPE            PERCENT_SPACE_USED     PERCENT_SPACE_RECLAIMABLE       NUMBER_OF_FILES

  -----文件类型-------  ---百分比空间 ---------------        -----可收回百分比--------------------               ---------文件编号------

  CONTROLFILE             0                                                    0                                                                 0

  ONLINELOG               4.88                                                 0                                                                  1

  ARCHIVELOG            76.05                                                0                                                                 47

  BACKUPPIECE          3.1                                                  0                                                                   3

  IMAGECOPY               0                                                    0                                                                   0

  FLASHBACKLOG       0                                                    0                                                                    0

  6 rows selected.

  ------注意这一步才是真正查看归档空间的实际使用情况:

  SQL> select * from v$recovery_file_dest; ------注意这一步才是真正查看归档空间的实际使用情况:

  NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES

  ----------- ---------- ----------------- ---- --------------- -------------------

  /oracle/flash_recovery_area 2147483648 1804771840 0 51

  但是还是在系统层面去查看磁盘空间。

如何检查oracle的归档日志及空间占用率,清除归档日志的更多相关文章

  1. 查看Linux服务器CPU使用率、内存使用率、磁盘空间占用率、负载情况

    [root@server script]# vi monitor.py #!/usr/bin/env python # -*- coding:utf-8 -*- #Author: nulige imp ...

  2. 如何检查oracle的归档空间是否满了?

    如何检查oracle的归档空间是否满了? 关于如何检查归档空间是否慢了,大多数人会去先检查放归档的目录的磁盘空间是否满了,通过该归档目录空余情况来判断归档空间是否满了,但我觉得这个方法不一定代表实际情 ...

  3. Oracle修改日志归档模式、归档路径以及空间大小的相关测试

    ORACLE 创建数据库的时候要不要开启日志归档? oracle数据库可以运行在2种模式下:归档模式(archivelog)和非归档模式(noarchivelog) .归档模式可以提高Oracle数据 ...

  4. 如何检查oracle的归档空间是否满了

    如何检查oracle的归档空间是否满了   关于如何检查归档空间是否慢了,大多数人会去先检查放归档的目录的磁盘空间是否满了,通过该归档目录空余情况来判断归档空间是否满了,但我觉得这个方法不一定代表实际 ...

  5. Oracle RMAN 清除归档日志

    在开发环境及UAT环境经常碰到需要清除归档日志的情形,对于这个问题方法有很多.可以直接使用rm方式清除归档日志,也可以使用find命令来查找符合条件的记录来清除归档日志,或者直接写个shell脚本来搞 ...

  6. ORACLE归档日志满了之后,如何删除归档日志

    当ORACLE归档日志满后如何正确删除归档日志 版权声明:本文为博主原创文章,未经博主允许不得转载. 当ORACLE 归档日志满了后,将无法正常登入ORACLE,需要删除一部分归档日志才能正常登入OR ...

  7. ORA-16014: 日志 1 的序列号 242 未归档, 没有可用的目的地

    SQL> alter database open; *第 1 行出现错误:ORA-16014: 日志 1 的序列号 242 未归档, 没有可用的目的地ORA-00312: 联机日志 1 线程 1 ...

  8. Oracle 无备份情况下的恢复--临时文件/在线重做日志/ORA-00205

    13.5 恢复临时文件 临时文件没有也不应该备份.通过V$TEMPFILE可以找到所有的临时文件. 此类文件的损坏会造成需要使用临时表空间的命令执行失败,不至于造成实例崩溃或session中断.由于临 ...

  9. 用备份控制文件做不完全恢复下的完全恢复(数据文件备份<旧>--新建表空间--控制文件备份<次新>--日志归档文件<新>)

    为什么会使用备份的控制文件? 实际工作中主要有两种情况:第一种:当前控制文件全部损坏,而数据文件备份,控制文件备份及当前日志处于不同SCN版本,它们之间又增加过表空间(数据文件).第二种:当前控制文件 ...

随机推荐

  1. SpringBoot+Mybatis+Pagehelper分页

    1.pom.xml <!-- mybatis分页插件 --> <dependency> <groupId>com.github.pagehelper</gro ...

  2. Python机器学习笔记:不得不了解的机器学习面试知识点(1)

    机器学习岗位的面试中通常会对一些常见的机器学习算法和思想进行提问,在平时的学习过程中可能对算法的理论,注意点,区别会有一定的认识,但是这些知识可能不系统,在回答的时候未必能在短时间内答出自己的认识,因 ...

  3. netty源码解解析(4.0)-8 ChannelPipeline的设计

    io.netty.channel.ChannelPipeline   设计原理 上图中,为了更直观地展示事件处理顺序, 故意有规律地放置两种handler的顺序,实际上ChannelInboundHa ...

  4. FFmpeg封装格式处理2-解复用例程

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10506642.html FFmpeg封装格式处理相关内容分为如下几篇文章: [1]. F ...

  5. Ubuntu下将现有的文件打包成deb包

    转自:http://www.linuxidc.com/Linux/2008-04/12297.htm deb是Debian Linux的软件包格式.一般来说是需要通过编译源码然后制作deb包,今天由于 ...

  6. cannot import name 'Flask' from 'flask'

    今天发现了智障的真我. 刚入门flask,建了一个文件命名叫flask.py 在virtualenv的容器里运行该py文件,报错cannot import name 'Flask' from 'fla ...

  7. 第一个SpringBoot程序

    第一个SpringBoot程序 例子来自慕课网廖师兄的免费课程 2小时学会SpringBoot Spring Boot进阶之Web进阶 使用IDEA新建工程,选择Spring Initializr,勾 ...

  8. 性能监控(5)–JAVA下的jstat命令

    jstat的基本语法为 Usage: jstat -help|-options jstat -<option> [-t] [-h<lines>] <vmid> [& ...

  9. ajax提交form表单问题

    form表单提交数据可以省下大量大量获取元素的代码,局部刷新时也可以用ajax提交form表单,但是要先把表单序列化,再把后台javaBean对象序列化,但是你有可能前后台都执行了系列化,但是后台还是 ...

  10. (二)在实战中使用Sass和Compass

    第三章 无需计算玩转CSS网格布局 3.1 网格布局介绍 3.2 使用网格布局 3.2.1 术语 术语名 定义 是否涉及HTML标签 列 内容度量的垂直单位 否 容器 构成一个网格布局的HTML元素 ...