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

问题描述:

所用数据库为 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. linux中sed命令的使用

    sed命令是linux或者shell编程中常用的筛选.替换命令,如果能熟练使用sed则对经常使用的人来说在工作上是非常有帮助的 下面把sed主要的用法列出来(有错误的地方大家可以指正): p命令只打印 ...

  2. 什么是js的严格模式

    设立严格模式的原因: - 消除Javascript语法的一些不合理.不严谨之处,减少一些怪异行为; - 消除代码运行的一些不安全之处,保证代码运行的安全: - 提高编译器效率,增加运行速度: - 为未 ...

  3. Vue笔记:生命周期和钩子函数

    前言 在使用vue一个多礼拜后,感觉现在还停留在初级阶段,虽然知道怎么和后端做数据交互,但是对于mounted这个挂载还不是很清楚的.放大之,对vue的生命周期不甚了解.只知道简单的使用,而不知道为什 ...

  4. JavaWeb学习 (三)————Tomcat服务器学习和使用(二)

    一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下:

  5. Linux 命令行下光标移动快捷键

    常用的快捷键: Ctrl + u 删除光标之前到行首的字符 Ctrl + k 删除光标之后到行尾的字符 Ctrl + a 光标移动到行首 Ctrl + e 光标移动到行尾 Ctrl + l 清屏 Al ...

  6. Linux中重命名乱码文件

    Linux下,如何将一个乱码的文件进行重命名 方法一: 命令格式:mv $(ls |egrep "[^a-zA-Z0-9.-]") tandao.tx [root@nb o]# l ...

  7. java_分解质因数

    题目内容: 每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数.比如,6可以被分解为2x3,而24可以被分解为2x2x2x3. 现在,你的程序要读入一个 ...

  8. 教你怎么调用Gitlab API

    1.生成Personal Access Tokens 选择右上角用户信息setting—>Access Tokens 2.常用Gitlab API #获取所有的项目信息 #private_tok ...

  9. css引入页面的三种方法

    1.内联式:直接在标签上写样式 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  10. 洛谷P4555 [国家集训队]最长双回文串(manacher 线段树)

    题意 题目链接 Sol 我的做法比较naive..首先manacher预处理出以每个位置为中心的回文串的长度.然后枚举一个中间位置,现在要考虑的就是能覆盖到i - 1的回文串中 中心最靠左的,和能覆盖 ...