欢迎访问机房运维工作室

爱数知识库

AnyBackup-备份 Linux_Unix 服务器上的 Oracle 数据库失败,任务执行输出中提示 ORA-00230 错误信息

频道:爱数知识库 日期: 浏览:25

AnyBackup-备份 Linux/Unix 服务器上的 Oracle 数据库失败,任务执行输出中提示 ORA-00230 错误信息

关键字

ORA-00230

适用产品

  • AnyBackup 6.0.x
  • AnyBackup CDM 7.0.x
  • AnyBackup Express 7.0.x

问题描述

在 AnyBckup 管理控制台发起 Oracle 数据库备份任务失败,查看执行输出中有 ORA-00230 的错误信息,如下图所示:

ORA-00230 : operation disallowed: snapshot control file enqueue unavailable


问题影响

Oracle 数据库无法成功完成备份。

问题原因

上一次备份任务异常结束,导致控制文件快照被残留备份进程占用,无法完成控制文件备份。

解决方案

对于此问题,需要结束占用控制文件快照的 session ,执行步骤如下:
1. SSH 远程登录到 Oracle 数据库服务器后台,切换到 oracle 用户下,登入 Oracle 数据库,执行命令如下:

export ORACLE_SID= orcl
sqlplus / as sysdba

说明orcl 为需要备份的 Oracle 数据库实例名,实例名区分大小写,具体以实际环境为准。

2. 查询占用控制文件快照 session 的 sid ,执行命令如下:

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;

说明:上图示例中,卡住的 session 的 sid 值为1732,具体以实际环境为准。

3. 通过第2步确认的 sid 查询此 session 的 serial、spid 值,执行命令如下:

select s.sid,s.serial#,p.spid,p.pid from v$session s ,v$process p where s.paddr=p.addr and s.sid= 1732;

说明:上图示例中,serial 值为2619,spid 值为25833,具体以实际环境为准。

4. 通过第3步确认的 sid、serial 值结束掉对应 session 进程,执行命令如下:

alter system kill session '1732,2619' immediate;

5. 退出数据库,在操作系统中确认备份进程已经被结束,执行命令如下:

exit
ps -ef | grep 25833 | grep -v grep

6. 若还存在进程 pid 值为从数据库中查询到的 spid 值的进程,请手动结束此进程之后再发起备份,结束进程命令如下:

kill -9 25833

更多信息

关于 Oracle 数据库报错代码:ORA-00230 的更多信息,请参考 Oracle 官方文档:Oracle 错误代码查询