之前一直误以为$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>
建议:操作时,要规范这类细节的地方,不管实际可不可以允许多加"/",我们都不要去画蛇添足,养成好习惯,自然就不会被此类问题所困扰。
: