上周五去某客户那里做数据库巡检。是window 2008系统上10g的一套NC系统的库,已经配置了DG,可是巡检时发现数据库报错:

Tue Nov 11 10:13:57 2014
LNS: Standby redo logfile selected for thread 1 sequence 3945 for destination LOG_ARCHIVE_DEST_2
Tue Nov 11 10:14:29 2014
Errors in file d:\oracle\product\10.2.0\admin\nc\bdump\nc_arc0_177356.trc:
ORA-16401: archivelog rejected by RFS

FAL[server, ARC0]: FAL archive failed, see trace file.
Sun Nov 16 04:05:12 2014
Errors in file d:\oracle\product\10.2.0\admin\nc\bdump\nc_arc0_177356.trc:
ORA-16055: FAL request rejected

ARCH: FAL archive failed. Archiver continuing
Sun Nov 16 04:05:15 2014
Errors in file d:\oracle\product\10.2.0\admin\nc\bdump\nc_arc0_177356.trc:
ORA-00270: error creating archive log 

提示归档日志被RFS进程拒绝。FAL进程请求被拒绝,无法创建归档日志

*** 2014-11-11 10:14:29.806
tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x2)
tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x2)
Error 16401 creating standby archive log file at host 'ncdg'
ORA-16401: archivelog rejected by RFS
*** 2014-11-11 10:15:29.900
tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x2)
tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x2)
Error 16401 creating standby archive log file at host 'ncdg'
ORA-16401: archivelog rejected by RFS
*** 2014-11-11 10:16:29.962
tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x2)
tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x2)
Error 16401 creating standby archive log file at host 'ncdg'
ORA-16401: archivelog rejected by RFS
*** 2014-11-11 10:17:30.025
tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x2)
tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x2)
Error 16401 creating standby archive log file at host 'ncdg'
ORA-16401: archivelog rejected by RFS
*** 2014-11-11 10:18:30.088
tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x2)
tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x2)
Error 16401 creating standby archive log file at host 'ncdg'
ORA-16401: archivelog rejected by RFS

查看trace文件nc_arc0_177356.trc得知。从11月11日上午10点14分開始报错,也是类似的提示。再目标主机无法创建归档日志文件,平均1分钟报一次错误。在备库查看,发现原来是由于没有定期清理主库传递过来的归档日志。磁盘空间耗尽了。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWFyb244MjE5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">


70G空间所实用完了,因为客户的磁盘本来就比較小,当中一部分还用来存放数据文件,本身就要占用47G。



最后一个归档日志是11月11日,7:25生成的,后面就没有了,这和trace文件里的报错也是符合的。因为这个时刻耗尽了磁盘的最后一些空间,进而造成了主库报警日志中出现的无法创建远程归档的错误,既然找到问题了,那么处理就easy了,先把备库应用过的归档删除掉。释放磁盘空间。


因为备库归档存在GAP,而且这些GAP在主库的归档中也已经没有了,主库并没有保留许多的归档。切归档日志也没有单独做备份集,因此仅仅能是又一次配置DG Configuration。

今天过去客户那边,把DG又一次配置了一下。

步骤事实上非常easy,由于之前已经配置过一次,这次仅仅要是同步一下即可了,不须要改动參数,拷贝參数文件、password文件、tnsnames.ora、listener.ora等,仅仅须要在主库创建一个备库控制文件,然后再把主库的RMAN备份集拿到备库去恢复即可了。详细过程这里就不写了,配置完DG后。检查两边归档路径状态,确定没有error后开启redo apply。备库就又和主库数据同步了。


由于可用磁盘空间仍然比較小,因此这次专门给客户配置了自己主动删除备库归档日志的脚本。主要用到了3个文件。大致内容例如以下:

--delete_dg_archivelog
cd D:\archivelogdel
d: 
sqlplus / as sysdba @delete_archive.sql 
echo rman target / cmdfile=rman_checkcross.rman>>delete_archivelog.bat 
delete_archivelog.bat >>delete_dg_archivelog_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%".log 
exit 

--delete_archive.sql 
set lines 150 
col name for a150 
set pagesize 0 feedback off verify off heading off echo off 
spool delete_archivelog.bat 
select 'del '||name from v$archived_log where APPLIED='YES' AND NAME IS NOT NULL and DEST_ID=1; 
spool off 
exit; 

--rman_checkcross.rman 
crosscheck archivelog all; 
delete noprompt expired archivelog all; 
exit 

以下来说明一下这个脚本。当中第一个bat脚本就是去调用了delte_archive.sql和rman_checkcross.rman这2个命令文件。最基本的就是delete_archive.sql这个脚本的运行内容,用SQL拼接的方式找出已经应用过的归档文件,然后生成del命令。在OS级别删除它们。最后再调用rman命令交叉校验,最后删除expired的归档日志(OS级别的删了。也要通知控制文件这些归档已经不存在了。须要删除),假设日志还未在备库应用。那么之前的那条select语句是不会查询出行记录的。

今天第一次做的时候delete_archivelog.sql中select语句用DEST_ID=1的时候。竟然没查到数据行。用了DEST_ID=2才有结果。而后来又碰到用DEST_ID=2没结果,于是又换回DEST_ID=1才行。事实上最基本的就是要关注SQL脚本要跑出结果。否则之前的那些命令都等于不起作用了。没有结果,OS命令就不会去del这些文件,而假设OS级别没有del掉这些文件,那么RMAN就检查不出是expired的,因此也就不会从控制文件里删除这些归档的相关记录。

最后把这个脚本加入到windows任务计划中定期执行就可以,因为客户的日志切换频率并不高,因此暂定为每周清一次归档。



DG备库磁盘空间满导致无法创建归档的更多相关文章

  1. 阿里云rds 磁盘空间满导致实例锁定

    1.RDS 数据日志已经快满了, 导致数据库不能写入,只读. 2. Binlog日志的保存及清理规则 MySQL实例的空间内默认清理binlog日志的规则如下: 实例空间内默认会保存最近18个小时内的 ...

  2. 模拟主库创建数据文件,dg备库空间不足时问题处理

    本篇文档测试目的: 模拟实际环境中,主库对表空间添加数据文件,备库空间不足,最终导致MRP进程自动断开,处理方式. 1.问题环境模拟 1)正常情况下的dg 主库创建数据文件,备库接受日志,自动创建表空 ...

  3. DG备库无法接受主库归档日志之密码文件

    DG备库无法接受主库归档日志之密码文件 实验目的:还原某个客户案例,客户审计需要,对主库sys用户进行锁定,一小时后对sys用户进行解锁后,发现备库无法接受主库的归档日志 本篇文章,测试sys用户与D ...

  4. linux磁盘空间满的处理

    Java中运行SQL插入数据时报错: linux磁盘空间满处理: 1.df -h  查看磁盘空间占用,实际上是查看磁盘块占用的文件(block) 2.分别查看输入以下命令 (面对磁盘满了,通过下列命令 ...

  5. No space left on device 解决Linux系统磁盘空间满的办法

    最近Linux电脑在执行mvn时候总是报错: No space left on device   原因是磁盘空间满了,我马上加了20G的硬盘容量,但是还是报错,上网查了一下,发现了解决方法,我用了其中 ...

  6. oracle所在磁盘空间不足导致了数据库异常

    oracle所在磁盘空间不足导致了数据库异常.需要减小数据文件的大小来解决. 1.检查数据文件的名称和编号 select file#,name from v$datafile; 2.看哪个数据文件所占 ...

  7. linux磁盘空间满?

    磁盘空间满啦 找到项目的logs文件夹 进入logs文件夹,会看到很多access.log*文件. 在Xshell里,输入命令cd 到项目节点的logs文件夹 可能还需要清空下回收站.

  8. DG备库,实时应用如何判断,MR进程,及MRP应用归档,三种情况的查询及验证

    本篇文档学习,DG备库,实时应用如何判断,MR进程,及MRP应用归档,三种情况的查询及验证 1.取消MRP进程 备库查询进程状态select process,client_process,sequen ...

  9. 因磁盘空间不足导致HDFS的NameNode进入安全模式问题记录

    因磁盘空间不足导致HDFS的NameNode进入安全模式问题记录,调用API上传及下载文件时报如下错误信息: org.apache.hadoop.ipc.RemoteException(org.apa ...

随机推荐

  1. 第一天 初识Python

    Python基础 一 编程语言     什么是编程语言?    上面提及的能够被计算机所识别的表达方式即编程语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质.在编程的世界里,计算机更像是人 ...

  2. vue中的组件传值

    组件关系可以分为父子组件通信.兄弟组件通信.跨级组件通信. 父传子 - props 子传父 - $emit 跨级可以用bus 父子双向 v-model 父链(this.$parent this.$ch ...

  3. B3. Cocurrent 线程的状态

    [概述] 1). java.lang.Thread 类中定义了一个枚举 State, 定义了线程的六种状态:NEW.RUNNABLE.BLOCKED.WAITING.TIMED_WAITING.TER ...

  4. webdrive脚本打开firefox浏览器,报“AttributeError: module 'selenium.webdriver' has no attribu

    按照网上提供的方法: 下载geckodriver之后解压缩到 Firefox安装目录 下 添加 Firefox安装目录 到 系统变量Path 重启pycharm 照此步骤执行后,仍然报同样的错.折腾了 ...

  5. cc.Label

    cc.Label 1:cc.Label是显示文字的组件;2:cc.Label属性面板:  String: 文本显示的内容;  Horiznotal: 水平对齐的方式: 左 右 居中;  Vertial ...

  6. Mysql对象

    2.简介 2.1 存储过程 2.1.1什么是存储过程 存储过程就是一种类似函数的脚本,可以把多个sql语句组合起来,然后使用 call 存储过程名 来调用,从而执行这些SQL语句. 特点:一次编译,下 ...

  7. ecshop 修改支持php7 方案

    修改方法 http://jsb.php-php.com/2016/05/472/ 修改数据库配置 data/config.php

  8. PHP:车牌照合法性

    文章来源:http://www.cnblogs.com/hello-tl/p/7592362.html <?php /** * [verifyCarCard description] 效验车牌号 ...

  9. socketserver模块使用方法

    一.socketserver模块介绍 Python提供了两个基本的socket模块.一个是socket,它提供了标准的BSD Socket API: 另一个是socketserver,它提供了服务器中 ...

  10. 集训第六周 数学概念与方法 计数 排列 L题

    Description 大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了! 做好“一件”事情尚且不易,若想永远成功而总从不失败,那更是难上加难了,就像花钱总是比挣钱容易的道理一样. 话 ...