概述
因未设置系统环境变量ORACLE_SID导致ORA-12162错误
分析原因
首先登录数据库主机执行 oerr ora 12162
我们首先查看看下 tnsnames.ora文件
执行tnsPing CC命令 检查下是否可以tnsPing通,核对IP和端口以及实例名
数据库服务器端使用TNSnameS.ORA中记录的连接串连接没有问题
查看是否指定ORACLE_SID,使用echo $ORACLE_HOME和echo $ORACLE_SID确认系统当前的ORACLE_HOME和ORACLE_SID环境变量
发现 ORACLE_SID未指定.......
1
解决方法
如何查看ORACLE_SID呢?
两种方式:
select name from v$database
查看tnsnames.ora文件得到 $ORACLE_HOME\network\admin\tnsnames.ora
我们这里的ORACLE_SID为 CC
如果只想临时生效的话,直接在当前窗口 执行 export ORACLE_SID=CC,此时只对当前的bash登录session生效,重新打开的会话窗口依然无效。
export设置只对当前的bash登录session有效。这是存在内存里面的。
长期生效的话可以写入配置文件。之后source 配置文件 ,使其生效。
将ORACLE_SID等环境变量写入到系统profile中,确保系统profile文件内容的有效性;
设置RACLE_SID,重新尝试登录,解决。
详说ORACLE_HOME和ORACLE_SID
通常情况下,ORACLE_SID这个环境变量全称Oracle System IDentifIEr,,用于在一台服务器上标识不同的实例,默认情况下,实例名就是ORACLE_SID的值(即INSTANCE_name=$ORACLE_SID。
当然实例名也可以不同于ORACLE_SID这个环境变量,只要在初始化参数文件里显示指定INSTANCE_name参数值不同于ORACLE_SID环境变量的值即可)。
在UNIX/linux平台下,该环境变量主要作用是同ORACLE_HOME这个环境变量做hash运算,得到一个唯一值,用来标识共享内存段,及SGA
ORACLE_HOME环境变量是Oracle软件的安装路径,顺带ORACLE_BASE环境变量是Oracle软件安装的基目录。
结论:在UNIX、linux平台上, 相同的ORACLE_HOME下不可以同时运行ORACLE_SID相同的多个实例, 不同的ORACLE_HOME下可以同时运行ORACLE_SID相同的多个实例!
总结以上是内存溢出为你收集整理的ORA-12162: TNS:net service name is incorrectly specified全部内容,希望文章能够帮你解决ORA-12162: TNS:net service name is incorrectly specified所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)