oracle kill rman备份,ORACLE rman备份之ORA-00230

本文记录了一次排查并解决Oracle 9.2.0.8数据库RMAN控制文件备份异常的案例。通过分析错误信息和查询数据库会话,发现是由于之前RMAN备份进程残留导致的问题。通过杀死相关操作系统进程,成功释放资源,从而修复了控制文件备份的问题。
摘要由CSDN通过智能技术生成

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

到此,故障处理完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值