代码改变世界

$ORACLE_HOME变量值末尾多“/”惹的祸

2016-12-25 22:57  AlfredZhao  阅读(...)  评论(...编辑  收藏

之前一直误以为$ORACLE_HOME变量的路径中末尾多写一个"/"不会有影响。
今天做实验时碰到一个情景,发现并不是这样。

环境:OEL 5.7 + Oracle 10.2.0.5
该环境做一个oracle的rman备份实验,发现脚本并未执行成功,直接报错数据库不可用,而实际上数据库服务本身是正常的。
最终排查结果是 $ORACLE_HOME的变量值多写了一个"/"
去掉末尾这个多加的"/"之后一切正常。

可以简单实验重现问题:

[oracle@oradb30 db_1]$ env|grep ORA
ORACLE_SID=ora10
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1/
[oracle@oradb30 db_1]$ rman target /

Recovery Manager: Release 10.2.0.5.0 - Production on Sun Dec 25 22:13:54 2016

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

connected to target database (not started)

RMAN> exit


Recovery Manager complete.
[oracle@oradb30 db_1]$ export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
[oracle@oradb30 db_1]$ env|grep ORA
ORACLE_SID=ora10
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
[oracle@oradb30 db_1]$ rman target /

Recovery Manager: Release 10.2.0.5.0 - Production on Sun Dec 25 22:14:20 2016

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

connected to target database: ORA10 (DBID=914008358)

RMAN> 

可以看到前后两次执行rman target / 只是前者$ORACLE_HOME变量的最后多了一个"/".
就导致rman target / 连接不到数据库。

而之前明明清楚记得没有这个影响,果然在验证另一套实验环境(RHEL6.5 + Oracle 11.2.0.4)中, 同样结尾多一个这样的"/",的确是没有任何问题。

[oracle@jydg ~]$ env|grep ORA
ORACLE_SID=jyzhao_s
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
[oracle@jydg ~]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Sun Dec 25 09:43:56 2016

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

connected to target database: JYZHAO (DBID=2509089778)

RMAN> exit


Recovery Manager complete.
[oracle@jydg ~]$ export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1/
[oracle@jydg ~]$ rman target /

Recovery Manager: Release 11.2.0.4.0 - Production on Sun Dec 25 09:44:02 2016

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

connected to target database: JYZHAO (DBID=2509089778)

RMAN> 

建议:操作时,要规范这类细节的地方,不管实际可不可以允许多加"/",我们都不要去画蛇添足,养成好习惯,自然就不会被此类问题所困扰。