plsql developer 登陆时 出现"ORA-12154: TNS:无法解析指定的连接标

plsql developer 登陆时 出现"ORA-12154: TNS:无法解析指定的连接标,第1张

ORA-12154: TNS: 无法解析指定的连接标识符 问题\x0d\\x0d\相信作为ORACLE数据库的开发人员没有少碰到“ORA-12154: TNS: 无法解析指定的连接标识符”,今天我也又碰到了类似的情况,将我的解决方法进行小结,希望能对碰到同样问题的友人们提供帮助。\x0d\\x0d\问题场景描述:\x0d\\x0d\服务器端版本:oracle 102010\x0d\\x0d\客户端版本:oracle 102010\x0d\\x0d\客户端开发工具:PL/SQL Developer\x0d\\x0d\通过客户端来连接服务器,其主要文件就是通过客户端的tnsnamesora来配置,在原文件的基础上增加:\x0d\\x0d\SID别名 =\x0d\ (DESCRIPTION =\x0d\ (ADDRESS_LIST =\x0d\ (ADDRESS = (PROTOCOL = TCP)(HOST = SERVER_IP)(PORT = 1521))\x0d\ )\x0d\ (CONNECT_DATA =\x0d\ (SID = SID_NAME)\x0d\ )\x0d\ )\x0d\\x0d\例:\x0d\\x0d\dev_db =\x0d\ (DESCRIPTION =\x0d\ (ADDRESS_LIST =\x0d\ (ADDRESS = (PROTOCOL = TCP)(HOST = 172168105)(PORT = 1521))\x0d\ )\x0d\ (CONNECT_DATA =\x0d\ (SID = ora10)\x0d\ )\x0d\ )\x0d\\x0d\通过PL/SQL Developer连接dev_db时,报“ORA-12154: TNS: 无法解析指定的连接标识符”。(这个问题以前也碰到过,但解决方法不太一样,因具体的问题不太一样。)\x0d\\x0d\我将自己知道的一些解决方法说一下:\x0d\\x0d\1先检查服务器端的监听服务是否打开,如果没有打开请启动其监听\x0d\\x0d\ 客户端:tnsping \x0d\ 服务器Linux下:\x0d\\x0d\ #>lsnrctl status 查看监听状态\x0d\\x0d\ #>lsnrctl start 启动监听\x0d\\x0d\2通过Sql Plus连接一下试试,如果Sql Plus连接能成功,那就说明你的tnsnamesora内容有错误\x0d\\x0d\我的问题就在别名dev_db前面有一个空格,这个可以通过文本编辑器(Edit Plus,UE等)来查看是否有空格,只要有空格那就肯定是不行的,而且如果那段内容是出现在文件的中间的话,将导致该文件里所有相应的连接别名都不成功,如果是在最后面就只有其自身连接别名不能成功,其他连接别名还是能连接成功。(注:我的tnsnamesora配置了多个数据库实例的连接,所有才有多个连接别名。)\x0d\\x0d\如:\x0d\\x0d\空格dev_db =\x0d\ (DESCRIPTION =\x0d\ (ADDRESS_LIST =\x0d\ (ADDRESS = (PROTOCOL = TCP)(HOST = 172168105)(PORT = 1521))\x0d\ )\x0d\ (CONNECT_DATA =\x0d\ (SID = ora10)\x0d\ )\x0d\ )\x0d\\x0d\3如果确保你的tnsnamesora内容没有错误,那请将%ORACLE_HOME%\product\1020\db_1\NETWORK\ADMIN目录下的所有文件删了,然后重新连接,一般就能解决了。\x0d\\x0d\说明一下:那个目录里的文件是在你建立连接的时候动态生成的,不要怕删了会有问题\x0d\\x0d\4进入PLSQL Developer的主界面,在登录界面选择取消即不登录进入主界面,然后选择菜单Tools(工具)-Preferences(首选项),在设置窗口中,选择Oracle-Connection(连接),对应设置窗口中,找到Oracle Home(Oracle主目录),选择你本地所安装客户端的版本,保存设置,然后重新启动PLSQL Developer,这时就可以正常登录了。

/// <summary>
/// Oracle 的数据库连接字符串
/// </summary>
private const String connString =
@"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=1921681210)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User Id=TEST;Password=TEST123";
那个 1921681210 是 Oracle 数据库服务器的 IP 地址
1521 是 默认的端口号
SERVICE_NAME=ORCL 意思是 那个 Oracle 数据库服务是 ORCL
后面就是 用户名 密码了。

1、问题 ORA-12154: TNS:could not resolve the connect identifier specified ,即无法解析指定的连接,这说明缺少了一个环境变量,TNS_ADMIN 。

2、找到PLSQL中的oracle home(主目录)和OCI library(ocidll地址)配置。

3、核对完上述问题后如发现问题仍旧没有解决,查看tnsnamesora文件,查看数据库配置信息前面是否有空格。

4、查看环境变量的设置是否正确,在环境变量path中添加oracle客户端的安装路径。

其中第一行中的orcl,是自己起的名字,就是sqlplus user/pass@orcl 中orcl、或者plsqldev中的 数据库 ;也就是“本地NET服务名”

第4行的 127001 是数据库服务器的ip,也可以是机器名。

下面倒数第3行的 orcl 就是数据库的 服务名,(也可能是sid=orcl,这样就是用sid连接数据库,要看你怎么配置的数据库了)

这个本地Net服务名,是可以用oracle的工具Net Configuration Assistant 或者 Net Manager 在界面上进行配置的,配置好了后,就可以copy到其他机器上、或者其他目录里使用了。

tnspingoracle服务器有时快有时慢是和网络有关。上班网络拥挤时间,这个现象尤为严重,下班之后好一点。但我那个备份的脚本定的时间是凌晨1:00,而且是在本机上执行。第二天的日志也经常报出ora-12500的错误。如果把执行时间定到上班时间,比如为了试验,就定到14:50,在tnsping执行一遍之后,就能正常备份,如果不执行tnsping命令,备份脚本很大的几率停在exp命令之后,也就是出现了三条提示信息之后就停了。

tnsname文件保存的是oracle服务器的链接信息。例如IP,服务名,端口号等。通常客户端连接服务器都需要配置tnsnameora。
这里分别说明一下:
1:ORCL这个名字是由你自己来命名的,客户端是通过这个名字来获得服务器的登录信息。
2:PROTOCOL是指定的通信协议,oracle是通过TCP/IP通信的。所以这里写TCP就可以。
3:HOST,如果客户端和数据库在同一台电脑可以用localhost也可以用IP。如果不同电脑就必须用IP了,是oracle所在电脑的IP。
4: PORT一般都是默认的端口值:1521
5:SERVER是dedicated检测模式的监听,SERVICE_NAME是oracle的SID


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13506592.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-21
下一篇 2023-08-21

发表评论

登录后才能评论

评论列表(0条)

保存