之前一直误以为$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>

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

随机推荐

  1. C#给PDF文档添加文本和图片页眉

    页眉常用于显示文档的附加信息,我们可以在页眉中插入文本或者图形,例如,页码.日期.公司徽标.文档标题.文件名或作者名等等.那么我们如何以编程的方式添加页眉呢?今天,这篇文章向大家分享如何使用了免费组件 ...

  2. 玩转spring boot——结合JPA入门

    参考官方例子:https://spring.io/guides/gs/accessing-data-jpa/ 接着上篇内容 一.小试牛刀 创建maven项目后,修改pom.xml文件 <proj ...

  3. UWP简单示例(三):快速开发2D游戏引擎

    准备 IDE:VisualStudio 2015 Language:VB.NET/C# 图形API:Win2D MSDN教程:UWP游戏开发 游戏开发涉及哪些技术? 游戏开发是一门复杂的艺术,编码方面 ...

  4. iOS 委托与文本输入(内容根据iOS编程编写)

    文本框(UITextField) 本章节继续编辑 JXHypnoNerd .文件地址 . 首先我们继续编辑  JXHypnosisViewController.m 修改  loadView 方法,向  ...

  5. 将DataTable中的某列转换成数组或者List

    string[] arrRate = dtRate.AsEnumerable().Select(d => d.Field<string>("arry")).ToA ...

  6. maven-sprigmvc-mybatis配置

    pom.xml配置 <?xml version="1.0"?> <project xsi:schemaLocation="http://maven.ap ...

  7. JavaScript基础学习-函数及作用域

    函数和作用域是JavaScript的重要组成部分,我们在使用JavaScript编写程序的过程中经常要用到这两部分内容,作为初学者,我经常有困惑,借助写此博文来巩固下之前学习的内容. (一)JavaS ...

  8. 微信小程序监控 - HotApp统计

    HotApp小程序统计,第一个专业的微信第三方小程序监控统计工具 1.什么是HotApp小程序统计 HotApp小程序统计是第一个微信第三方小程序统计工具,就像做android 和 ios开发的人知道 ...

  9. Mysql - 存储过程/自定义函数

    在数据库操作中, 尤其是碰到一些复杂一些的系统, 不可避免的, 会用到函数/自定义函数, 或者存储过程. 实际项目中, 自定义函数和存储过程是越少越好, 因为这个东西多了, 也是一个非常难以维护的地方 ...

  10. (转载)linux下各个文件夹的作用

    linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基 ...