ORA-12162: TNS:net service name is incorrectly specified

举报
小工匠 发表于 2021/09/11 00:21:56 2021/09/11
【摘要】 概述 因未设置系统环境变量ORACLE_SID导致ORA-12162错误 分析原因 首先登录数据库主机执行 oerr ora 12162 我们首先查看看下 tnsnames.ora文件 ...

概述

因未设置系统环境变量ORACLE_SID导致ORA-12162错误

分析原因

首先登录数据库主机执行 oerr ora 12162
这里写图片描述

  • 我们首先查看看下 tnsnames.ora文件

这里写图片描述

  • 执行tnsping CC命令 检查下是否可以tnsping通,核对IP和端口以及实例名

    这里写图片描述

    数据库服务器端使用TNSNAMES.ORA中记录的连接串连接没有问题

  • 查看是否指定ORACLE_SID ,使用echo $ORACLE_HOMEecho $ORACLE_SID确认系统当前的ORACLE_HOME和ORACLE_SID环境变量

    发现 ORACLE_SID未指定.......
    
        
       

解决方法

如何查看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相同的多个实例!

文章来源: artisan.blog.csdn.net,作者:小小工匠,版权归原作者所有,如需转载,请联系作者。

原文链接:artisan.blog.csdn.net/article/details/52447511

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。