rman备份密码报错-转义

同事备份遇到了一个报错,提示用户密码拒绝。经过确认用户和密码都没有问题,那可能是什么问题呢!

1、现象

<roidb01:orcl:/u01/app/oracle/product/11.2.0/dbhome_1/network/admin>$
<roidb01:orcl:/u01/app/oracle/product/11.2.0/dbhome_1/network/admin>$sh rman.sh 

Recovery Manager: Release 11.2.0.4.0 - Production on Tue Feb 13 22:12:56 2018

copyright (c) 1982,2011,Oracle and/or its affiliates.  All rights reserved.

connected to target database: ORCL (DBID=1483481154)

RMAN> 2> 3> 
using target database control file instead of recovery catalog
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-12001: Could not open channel t1
RMAN-10008: Could not create channel context
RMAN-10003: unable to connect to target database
ORA-01017: invalid username/password; logon denied

RMAN>

2、部分脚本内容

<roidb01:orcl:/u01/app/oracle/product/11.2.0/dbhome_1/network/admin>$vi rman.sh
$ORACLE_HOME/bin/rman target / <<EOF
run{
allocate channel t1 device type disk connect 'sys/xxxx$2017_sys@orcl';
#发现这个密码里有特殊符号$
}
exit
EOF

3、解决方法

<roidb01:orcl:/u01/app/oracle/product/11.2.0/dbhome_1/network/admin>$
<roidb01:orcl:/u01/app/oracle/product/11.2.0/dbhome_1/network/admin>$cat rman.sh 
$ORACLE_HOME/bin/rman target / <<EOF
run{
allocate channel t1 device type disk connect 'sys/xxxx\$2017_sys@orcl';
}
exit
EOF

shell 脚本中特殊符号需要使用\转义处理一下。

再次执行

<roidb01:orcl:/u01/app/oracle/product/11.2.0/dbhome_1/network/admin>$sh rman.sh 

Recovery Manager: Release 11.2.0.4.0 - Production on Tue Feb 13 22:13:20 2018

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

connected to target database: ORCL (DBID=1483481154)

RMAN> 2> 3> 
using target database control file instead of recovery catalog
allocated channel: t1
channel t1: SID=46 device type=disK
released channel: t1

RMAN>

小结:当我们在shell脚本里执行相关命令,一定要关注特殊符号的转义问题。

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...