RMAN备份出现ORA-7217错误

一个刚接触RMAN的同事碰到的问题。

 

 

一个刚接触RMAN不久的同事,在使用RMAN备份的时候碰到了错误,本以为是个很普通的错误,结果发现这个错误以前还真没有碰到过。

RMAN-03009: failure of backup command on ch2 channel at 01/21/2010 14:51:19
ORA-07217: sltln: environment variable cannot be evaluated.
continuing other job steps, job failed will not be re-run
released channel: ch1
released channel: ch2
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup plus archivelog command at 01/21/2010 14:51:19
ORA-07217: sltln: environment variable cannot be evaluated.

看到这个错误还真是愣了一下,因为以前确实没有碰到过类似的问题,第一反应是是否设置了不正确的环境变量,导致RMAN运行的时候异常。

检查了一下备份的脚本,倒是一眼就能找到问题所在:

[oracle@localhost ~]$ rman target / nocatalog

RMAN> run{
2> allocate channel ch1 device type disk format '/u02/bak/${DATE}_%U';
3> allocate channel ch2 device type disk format '/u02/bak/${DATE}_%U';
4> backup incremental level=0 skip inaccessible filesperset 10 database plus

archivelog filesperset 20 delete all input;
5> sql 'alter system archive log current';
6> release channel ch1;
7> release channel ch2;
8> }

allocated channel: ch1
channel ch1: sid=142 devtype=DISK

allocated channel: ch2
channel ch2: sid=151 devtype=DISK


Starting backup at 21-JAN-10
current log archived
channel ch1: starting archive log backupset
channel ch1: specifying archive log(s) in backup set
input archive log thread=1 sequence=32 recid=5 stamp=708879077
channel ch1: starting piece 1 at 21-JAN-10
channel ch2: starting archive log backupset
channel ch2: specifying archive log(s) in backup set
input archive log thread=1 sequence=30 recid=3 stamp=708877585
input archive log thread=1 sequence=31 recid=4 stamp=708878150
channel ch2: starting piece 1 at 21-JAN-10
RMAN-03009: failure of backup command on ch2 channel at 01/21/2010 14:51:19
ORA-07217: sltln: environment variable cannot be evaluated.
continuing other job steps, job failed will not be re-run
released channel: ch1
released channel: ch2
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup plus archivelog command at 01/21/2010 14:51:19
ORA-07217: sltln: environment variable cannot be evaluated.

唯一可疑之处就是使用了${DATE}的语法。将${DATE}去掉之后问题消失。显然是同事不知道从哪里搜索来的脚本,也不知道到底是什么作用就直接运行了。这个语法回认为DATE是一个环境变量,正确的方法是需要预先定义变量的值:

RMAN> run
2> {
3> allocate channel c1 device type disk format '/data/${ABC}_%U';
4> backup spfile;
5> }

释放的通道: ORA_DISK_1
分配的通道: c1
通道 c1: SID=162 设备类型=DISK

启动 backup 22-1 -10
通道 c1: 正在启动全部数据文件备份集
通道 c1: 正在指定备份集内的数据文件
备份集内包括当前的 SPFILE
通道 c1: 正在启动段 1 22-1 -10
释放的通道: c1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: backup
命令 (c1 通道上, 01/22/2010 00:32:50 ) 失败
ORA-07217: sltln:
无法对环境变量求值。

RMAN> exit


恢复管理器完成。
[oracle@bjtest ~]$ export ABC=abc
[oracle@bjtest ~]$ rman target /

恢复管理器: Release 11.2.0.1.0 - Production on 星期五 1 22 00:33:08 2010

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

连接到目标数据库: TEST112 (DBID=4284478783)

RMAN> run
2> {
3> allocate channel c1 device type disk format '/data/${ABC}_%U';
4> backup spfile;
5> }

使用目标数据库控制文件替代恢复目录
分配的通道: c1
通道 c1: SID=178 设备类型=DISK

启动 backup 22-1 -10
通道 c1: 正在启动全部数据文件备份集
通道 c1: 正在指定备份集内的数据文件
备份集内包括当前的 SPFILE
通道 c1: 正在启动段 1 22-1 -10
通道 c1: 已完成段 1 22-1 -10
段句柄=/data/abc_04l42aqj_1_1 标记=TAG20100122T003322 注释=NONE
通道 c1: 备份集已完成, 经过时间:00:00:01
完成 backup 22-1 -10
释放的通道: c1

如果想要在备份集中显示时间信息可以使用%T参数:

RMAN> run
2> {
3> allocate channel c1 device type disk format '/data/%T_%U';
4> backup spfile;
5> }

使用目标数据库控制文件替代恢复目录
分配的通道: c1
通道 c1: SID=162 设备类型=DISK

启动 backup 22-1 -10
通道 c1: 正在启动全部数据文件备份集
通道 c1: 正在指定备份集内的数据文件
备份集内包括当前的 SPFILE
通道 c1: 正在启动段 1 22-1 -10
通道 c1: 已完成段 1 22-1 -10
段句柄=/data/20100122_07l42u89_1_1 标记=TAG20100122T060457 注释=NONE
通道 c1: 备份集已完成, 经过时间:00:00:01
完成 backup 22-1 -10
释放的通道: c1

这样就可以实现备份集中包含备份时间的功能了。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-626996/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/4227/viewspace-626996/

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值