Oracle备份脚本执行失败解决实例

2014-11-24 17:24:17 · 作者: · 浏览: 0

随着技术环境的不断发展和增加,运维部门面对的运行环境呈现大规模和复杂两个趋势。一两个运维人员管理公司成百上千台服务器的情况将来会是常见的事情。这个时候,集中监控、自动运维平台是解决问题最好的方法。本篇我们就介绍一个切换到集中备份环境中出现的小问题。


--------------------------------------分割线 --------------------------------------


推荐阅读:


--------------------------------------分割线 --------------------------------------


1、问题说明


一个原先在Windows环境上运行的Oracle服务器,原来是使用服务器上自己编写的脚本进行备份。执行脚本通过windows的计划任务调用执行,长期没有任何问题。

有一天负责服务器的同事突然联系,说连续几天备份过程失败。在日志上,明确显示失败。
一般情况下,生产环境各种配置是比较稳定的,不会有特别的变更。笔者要来了错误日志查看。


恢复管理器: Release 10.2.0.1.0 - Production on 星期六 1月 4 22:13:05 2014


Copyright (c) 1982, 2005, Oracle. All rights reserved.


RMAN> connect target *


2> run{


3> backup database plus archivelog delete input;


4> crosscheck archivelog all;


5> delete noprompt expired backupset;


6> delete noprompt obsolete;


7> }


8>


RMAN-00571: ===========================================================


RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============


RMAN-00571: ===========================================================


ORA-01031: insufficient privileges



恢复管理器完成。



报错内容不存在语句命令的情况,而是执行权限错误。而之前的日志显示,相同的备份执行一直没有问题,脚本也没有修改。



2、问题分析


调用脚本是两个文件,Windows的BAT和RMAN的txt文件。Rman_bk.bat是主要的执行对象,脚本如下:


rman nocatalog @backup_command.txt Log=rman_log1.log append


命令脚本backup_command.txt如下:


connect target /


run{


backup database plus archivelog delete input;


crosscheck archivelog all;


delete noprompt expired backupset;


delete noprompt obsolete;


}


执行报错权限错误,最大的可能是在操作系统用户匿名登录时候,被拒绝。此时可以试验一下用操作系统用户是不是可以用sqlplus登录。



默认登录没有什么问题,说明匿名登录机制没有被修改。手工执行bat文件,实验结果如下:


执行过程看似正常,备份日志信息如下:



恢复管理器: Release 10.2.0.1.0 - Production on 星期三 1月 8 17:12:47 2014


Copyright (c) 1982, 2005, Oracle. All rights reserved.



RMAN> connect target *


2> run{


3> backup database plus archivelog delete input;


4> crosscheck archivelog all;


5> delete noprompt expired backupset;


6> delete noprompt obsolete;


7> }


8>


连接到目标数据库: OTSTEST (DBID=2884314031)


使用目标数据库控制文件替代恢复目录



启动 backup 于 08-1月 -14


当前日志已存档


分配的通道: ORA_DISK_1


通道 ORA_DISK_1: sid=132 devtype=DISK


通道 ORA_DISK_1: 正在启动存档日志备份集


(篇幅原因,有省略……)


输入存档日志线程 =1 序列 =4151 记录 ID=1144 时间戳=835178418


手工执行脚本没有问题。看似很诡异的问题~