$ORACLE_HOME变量值末尾多“/”惹的祸
之前一直误以为$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>
建议:操作时,要规范这类细节的地方,不管实际可不可以允许多加"/",我们都不要去画蛇添足,养成好习惯,自然就不会被此类问题所困扰。
随机推荐
- mapreduce多文件输出的两方法
mapreduce多文件输出的两方法 package duogemap; import java.io.IOException; import org.apache.hadoop.conf ...
- MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息
MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二 ...
- 使用技术手段限制DBA的危险操作—Oracle Database Vault
概述 众所周知,在业务高峰期,某些针对Oracle数据库的操作具有很高的风险,比如修改表结构.修改实例参数等等,如果没有充分评估和了解这些操作所带来的影响,这些操作很可能会导致故障,轻则导致应用错误, ...
- Yeoman 官网教学案例:使用 Yeoman 构建 WebApp
STEP 1:设置开发环境 与yeoman的所有交互都是通过命令行.Mac系统使用terminal.app,Linux系统使用shell,windows系统可以使用cmder/PowerShell/c ...
- Android Studio —— 重装 HAXM
Android Studio -- 重装 HAXM 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. Android SDK 自带模拟器一直以慢.卡 ...
- 程序猿都没对象,JS竟然有对象?
现在做项目基本是套用框架,不论是网上的前端还是后端框架,也会寻找一些封装好的插件拿来即用,但还是希望拿来时最好自己过后再回过头了解里面的原理,学习里面优秀的东西,不论代码封装性,还是小到命名. 好吧, ...
- 使用NUnit为游戏项目编写高质量单元测试的思考
0x00 单元测试Pro & Con 最近尝试在我参与的游戏项目中引入TDD(测试驱动开发)的开发模式,因此单元测试便变得十分必要.这篇博客就来聊一聊这段时间的感悟和想法.由于游戏开发和传统软 ...
- [转载]Cookie/Session的机制与安全
Cookie和Session是为了在无状态的HTTP协议之上维护会话状态,使得服务器可以知道当前是和哪个客户在打交道.本文来详细讨论Cookie和Session的实现机制,以及其中涉及的安全问题. 因 ...
- Response.Redirect引起的性能问题分析
现象: 最近做的一个系统通过单点登录(SSO) 技术验证用户登录.用户在SSO 系统上通过验证后,跳转到该系统的不同模块.而跳转的时间一直维持子啊几分钟左右. 分析步骤: 在问题复现时抓取Hang d ...
- jdb调试scala代码的简单介绍
在linux调试C/C++的代码需要通过gdb,调试java代码呢?那就需要用到jdb工具了.关于jdb的用法在网上大家都可以找到相应的文章,但是对scala进行调试的就比较少了.其实调试的大致流程都 ...