ORACLE_HOME的设置与conn / as sysdba

最近发现了这一挺有意思的内容,以前没遇见过这个问题,或者遇见了,但是没有去思考、解决。 先回忆一下过程: 我是为了配置database vault,所以需要重新配置数据库的dbconsole(之前使用EM管理,但是后来EM服务器没人维护……这是另一个故事了)。 使用emca 配置dbconsole时,会要求输入ORACLE_SID 之类的,按说应该使用OS认证,完成数据库操作后,配置oc4j,一切ok……但是我操作的时候,提示我,不能连接到Oracle Instance,可能是实例未启动或者是ORACLE_HOME环境变量设置不正确——emca非常友好,还特别指出,可能ORACLE_HOME设置为以 / 符号结尾了,这样会导致emca不能连接到实例。 我查看了一下ORACLE_HOME,确实是以 / 符号结尾的(比如/oracle/app/product/11.2/),这时我并没有思考,只是简单想,有没有 / 符号,其实应该没区别的,既然emca认为不要有 / ,那我们就去除 / (如 /oracle/app/product/11.2)。 修改完环境变量后,重新运行emca,错误没有进展…… 这时有点挠头,用sqlplus / as sysdba 登陆数据库实例,检查一下哪有问题,这时候,我们发现 会显示为 connect to idle instance…… 这时我才意识到,启动Oracle Instance时的ORACLE_HOME,跟现在运行sqlplus时的ORACLE_HOME是不一样的,区别是少了一个 / 符号。这种情况下可能就没法连上实例了(这时候通过TNS连接还是可以的)。 总结一下来说,就是ORACLE_HOME设置不能以 / 结尾,否则emca没法设置。 这事有点坑人,如果是生产库,修改ORACLE_HOME,还得重启Instance…… 代价太大了。