ORACLE rman备份之ORA-00230

    2016年4月13日接到一呼叫平台负责人告警,oracle 9.2.0.8数据库的rman备份出现异常,控制文件无法备份,报错信息如下:
RMAN> run{
2> allocate channel c1 type disk;
3> backup current controlfile format '/tmp/ora_contr.bak';
4> release channel c1;
5> }
using target database controlfile instead of recovery catalog
allocated channel: c1
channel c1: sid=411 devtype=DISK
Starting backup at 13-APR-16
channel c1: starting full datafile backupset
channel c1: specifying datafile(s) in backupset
waiting for snapshot controlfile enqueue
waiting for snapshot controlfile enqueue
waiting for snapshot controlfile enqueue
waiting for snapshot controlfile enqueue
waiting for snapshot controlfile enqueue
cannot make a snapshot controlfile
released channel: c1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on c1 channel at 04/13/2016 10:37:24
ORA-00230: operation disallowed: snapshot controlfile enqueue unavailable
   查阅网上介绍rman备份遇到ORA00230有2个原因,一是9.2.0.8的数据库的rman配置了磁带库备份,在备份时磁带库故障响应超时导致,二是数据库在之前的rman备份过程中被异常中断,残留有上次rman的备份进程。
    经过核实,当前数据库确实是9.2.0.8,操作系统是AIX6.1,为了排除磁带库故障,特地使用磁盘备份进行测试,测试结果如上rman备份失败报错信息,因此排除磁带库故障的原因;接下来是RMAN备份异常中断导致控制文件无法备份的处理过程:
   --登录数据库查询残留的RMAN备份进程
SQL*Plus: Release 9.2.0.8.0 - Production on Wed Apr 13 10:17:00 2016
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> SELECT s.SID, USERNAME AS "User", PROGRAM, MODULE,
ACTION, LOGON_TIME "Logon"
 FROM V$SESSION s, V$ENQUEUE_LOCK l
WHERE l.SID = s.SID
AND l.TYPE = 'CF'
AND l.ID1 = 0
AND l.ID2 = 2; --网上给的方法,没有查出结果,看来网上的方法不总是那么可靠,╮(╯▽╰)╭

no rows selected
   --修改查询方法,查出了RMAN残留备份进程
SQL> select s.sid, username, program, module, action, logon_time, l.*
from v$session s, v$enqueue_lock l
where l.sid = s.sid
and l.type = 'CF';
      SID USERNAME PROGRAM                           MODULE                                        ACTION                  LOGON_TIM ADDR                     KADDR                 TY        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK
---------- --------------- -------------------------------------   ------------------------------------------------    --------------------------- -------------    ---------------------------- -----------------          ---------- ---------- ----------    ---------- ----------       ----------      ----------
    377  SYS          rman@cncora2 (TNS V1-V3)  backup full datafile: ORA_SBT_TAPE_1 0000014 STARTED 13-APR-16  07000000C50A59B8 07000000C50A59D8 CF      0          2 
    4          0                1217          2
   --查出sid=377的操作系统进程号
SQL> select 'kill -9 '||spid from v$process where addr = (select paddr from v$session where sid=&sid);
Enter value for sid: 377
old   1: select 'kill -9 '||spid from v$process where addr = (select paddr from v$session where sid=&sid)
new   1: select 'kill -9 '||spid from v$process where addr = (select paddr from v$session where sid=377)
'KILL-9'||SPID
--------------------------------------------
kill -9 2322660

    --查看2322660进程是否是数据库核心进程(不会是)
[cncora2]$ps -ef|grep 2322660
  oracle 2322660       1   0 10:26:02      -  0:01 oracleora922 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) 
  oracle 2404512 2359338   0 10:53:40  pts/4  0:00 grep 2322660 
    --杀掉2322660
[cncora2]$kill -9 2322660
   --核实2322660是否被杀掉
[cncora2]$ps -ef|grep 2322660
  oracle 2322674 2359338   0 10:54:45  pts/4  0:00 grep 2322660 
[cncora2]$sqlplus /nolog
SQL*Plus: Release 9.2.0.8.0 - Production on Wed Apr 13 10:54:53 2016
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> select s.sid,username,program,module,action,logon_time,l.*
  2  from v$session s,v$enqueue_lock l
  3  where l.sid=s.sid
  4  and l.type='CF';
no rows selected
SQL> quit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
With the Partitioning and Real Application Clusters options
   --测试控制文件是否可以备份
[cncora2]$rman target /
Recovery Manager: Release 9.2.0.8.0 - 64bit Production
Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.
connected to target database: ORA92 (DBID=1953009355)
RMAN> run{
2> allocate channel c1 type disk;
3> backup current controlfile format '/tmp/ora_ctl.bak';
4> release channel c1;
5> }
using target database controlfile instead of recovery catalog
allocated channel: c1
channel c1: sid=404 devtype=DISK
Starting backup at 13-APR-16
channel c1: starting full datafile backupset
channel c1: specifying datafile(s) in backupset
including current controlfile in backupset
channel c1: starting piece 1 at 13-APR-16
channel c1: finished piece 1 at 13-APR-16
piece handle=/tmp/ora_ctl.bak comment=NONE
channel c1: backup set complete, elapsed time: 00:00:04
Finished backup at 13-APR-16
Starting Control File and SPFILE Autobackup at 13-APR-16
piece handle=/home/oracle/app/oracle/product/9.2.0.8.0/dbs/c-1953009355-20160413-00 comment=NONE
Finished Control File and SPFILE Autobackup at 13-APR-16
released channel: c1
RMAN> quit
Recovery Manager complete.
[cncora2]$cd /tmp
[cncora2]$ls -l ora*
-rw-r-----   1 oracle   dba         9224192 Apr 13 11:00 ora_ctl.bak
-rwxr-xr-x   1 root     system          677 Dec 07 2007  orainstRoot.sh

    到此,故障处理完成。

时间: 2024-09-20 00:29:43

ORACLE rman备份之ORA-00230的相关文章

三种Oracle RMAN备份加密策略(下)

    说明:本篇参考eygle老师的作品<Oracle DBA手记4:数据安全警示录>,特此表示感谢. 3 .Oracle Wallet加密策略   Oracle Wallet是一种加密安全策略,过去我们在TDE(Oracle透明加密)部分研究过这个组件.简单的说,Oracle Wallet就是在本机上配置一个加密配置文件,通过SQL命令控制Oracle Wallet的开启关闭状态,如果Wallet关闭或者不存在,那么一些加密的信息(包括TDE和RMAN备份集合)数据就不能正常打开.   使

Oracle RMAN备份(四)副本

八. 副本 8.1 映像副本的介绍 RMAN 可以创建数据库数据文件,归档重做日志或者控制文件的精确副本. Rman 副本是这些文件的副本,区别仅仅在于名称和位置上的变化.我们不 需要考虑备份片或其他问题. 映像副本只能在磁盘上生成,且不能生成增量副本. 生成映像副本必须加载或打开数据库.生成副本的历史记录保存 在数据库控制文件中.所以我们可以跟踪副本生成的时间和驻留的位置. 类似与常规备份,可以建立整个数据库,表空间或数据文件的映像副本. RMAN 复制过程提供一些和普通RMAN 备份集相同的

Oracle RMAN备份(三)联机RMAN 数据库备份

七. 联机RMAN 数据库备份 7.1 联机数据库备份 要使用RMAN执行联机备份操作,数据库必须置于Archivelog 模式. 如果不在归档模式,则尝试联机备份时RMAN就会生成一个错误. Oracle 归档与非归档的切换 http://blog.csdn.net/tianlesoftware/archive/2009/10/19/4693470.aspx 连接备份示例: RMAN> Configure default device type to disk; RMAN> configur

Oracle RMAN备份(二)Backup 命令选项

五. Backup 命令选项 5.1 压缩 默认情况下,RMAN 执行NULL 数据块压缩. 5.1.1 NULL 控制压缩 使用这种形式的压缩时,Oracle不会备份未使用的数据块. 执行NULL 数据块压缩的情形有一下两种情况: (1)从未使用过的数据块不被压缩 (2)在给定的特定标准下,使用过一次的数据块也不被备份. 在第一种情况下,将不会备份其中一直没有数据的所有数据块,在第二种情况下,如果数据库和关联的数据库满足某种标准,空块将不被备份,即使 它在某个时刻包含数据. 下面是允许RMAN

Oracle RMAN备份(一)脱机RMAN 数据库备份

一. RMAN 备份的一些优点 1. RMAN 会检测和报告损坏的数据块. 2. 不需要将表空间置入热备份模式,RMAN 就可以连接备份数据库. 热备份期间会额外的生成重做日志. 3. RMAN 会自动跟踪新的数据文件和表空间,这样就不再需要在脚本中添加新的表空间和数据文件. 4. RMAN 只备份使用过的数据库(直至最高使用标记(High wate mark)),这样RMAN 备份映像通常小于联机备份的备份脚本. 5. RMAN 提供备份映像的实际压缩. 6. RMAN 提供自动且方便的备份,

oracle RMAN备份FORMAT格式中%a是什么意思

今天三思问我一个问题:RMAN备份FORMAT格式中%a的含义. 其实Oracle的文档有这个表述: %a Specifies the activation ID of the database. 不过这个描述很不明确.其实junsansi的意思是,这个%a对应的信息在数据库中的哪里体现出来. 下面先看看备份信息里面的这个值: [oracle@yans1 ~]$ rman target / Recovery Manager: Release10.2.0.3.0 - Production on星期

oracle RMAN备份报错的诊断过程(二)跟踪错误信息及寻找定位问题的方向

今天检查数据库中的备份输出脚本时,发现RMAN备份出现了错误. 这一篇跟踪错误信息,寻找定位问题的方向. 根据前面的问题描述,发现问题越来越复杂,从一个简单的RMAN备份报错,牵扯到系统中有3个长时间运行的JOB,以及RAC环境当前节点存在了大量的RACGMAIN CHECK进程的存在. 虽然问题很复杂,就不要急于盲目操作,先简单分析一下当前的状况. 发现问题是由于RMAN备份脚本报错造成的,但是根据错误信息和随后的测试发现,问题是可以重现的,并不是简单的RMAN问题,导致问题的原因应该是共享资

oracle RMAN备份报错的诊断过程(一) 问题的现象

今天检查数据库中的备份输出脚本时,发现RMAN备份出现了错误. 这一篇主要描述问题的现象. 错误信息如下: bash-3.00$ more /data/backup/backup_tradedb_090523.out Script. /data/backup/backup_tradedb.sh ==== started on Sat May 23 23:00:00 CST 2009 ==== RMAN: /opt/oracle/product/10.2/database/bin/rman ORA

win平台oracle rman备份和删除dg备库归档日志脚本_oracle

总觉得使用windows跑oracle是不靠谱的事情,可以这个世界上总有很多人喜欢做类似这样的事情,对于数据库比较常见的两件事情:rman和删除dg备库归档日志,在linux/unix平台上使用shell实现很简单,可是跑到win里面,就变的烦了,不是因为其麻烦,而是因为用的人少,不知道怎么下手处理该事情,我编写了简单的实现初级功能的win下面rman备份和删除备库归档日志脚本,供大家参考,也更加欢迎朋友提出来更加好的处理方法(win是真心的不懂)rman备份脚本 复制代码 代码如下: --ba