- 浏览: 684883 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
yzs5273:
没什么用。都试过了
WIN7下CS不能全屏的解决方法 -
di1984HIT:
不错,学习了
读取本地计算机中的安装程序列表 -
ffedu:
[flash=200,200][url][img][list] ...
linux/unix中如何用find命令详解,非常详细的介绍,比man find强100倍(转) -
lintghi:
...
Log4j使用相对路径指定log文件及使用总结 -
nick.s.ni:
唉,Java中引用的包没有介绍啊,如果数据库用UTF-8的格式 ...
Oracle 中Java 对象与PL/SQL类型的映射及使用(转)
发现一个很有趣的bug,TNSNAMES.ORA中缺少空格导致ORA-12154错误。
还是看一个具体的例子:
TEST08 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.13.229)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test08)
)
)
由于网页显示的时候,会自动吞掉所有的前导空格,下面将上面真正的配置中的前导空格用下划线来代替:
TEST08 =
__(DESCRIPTION =
____(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.13.229)(PORT = 1521))
____(CONNECT_DATA =
______(SERVER = DEDICATED)
______(SERVICE_NAME = test08)
____)
__)
这是一个普通到不能再普通的TNS配置了。
下面通过这个配置来连接数据库:
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 7月 13 21:02:36 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn test/test@test08已连接。
显然可以连接到目标数据库。
下面将配置里面的前导空格完全删除:
TEST08 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.13.229)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test08)
)
)
这次没有必要用下划线替换前导空格了,因为二者的格式完全一样。
再次连接数据库:
SQL> conn test/test@test08
ERROR:
ORA-12154: TNS: 无法解析指定的连接标识符
警告: 您不再连接到 ORACLE。
很奇怪,只是删除了一些无关紧要的空格,就导致了TNSNAMES解析错误。
于是逐渐的还原空格,寻找到底是哪里的空格被删除后,导致了这个错误的产生:
TEST08 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.13.229)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = test08)
)
)
最终发现其他的空格都无所谓,只是SERVICE_NAME下一行的前导空格会影响TNSNAMES的解析。
替换下划线的版本为:
TEST08 =
__(DESCRIPTION =
____(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.13.229)(PORT = 1521))
____(CONNECT_DATA =
______(SERVER = DEDICATED)
______(SERVICE_NAME = test08)
)
__)
这时连接就会报错:
SQL> conn test/test@test08
ERROR:
ORA-12154: TNS: 无法解析指定的连接标识符
而只要在这一行前面加上一个空格,或者删除掉SERVICE_NAME这一行的回车换行符,使得这个括号回到SERVICE_NAME的同一行,都可以顺利的连接到目标数据库。
使用TNSPING命令监测,发现这种情况下,TNSNAME在解析的时候丢失了最后两个右括号信息,造成ORA-12533错误:
E:>tnsping test08
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 13-7月 -
2009 21:27:10
Copyright (c) 1997, 2005, Oracle. All rights reserved.
已使用的参数文件:
E:\ORACLE\ORACLE1020\network\admin\sqlnet.ora
已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.1
3.229)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = test08
)
TNS-12533: TNS: 非法的 ADDRESS 参数
而正常的TNSNAMES解析如下:
E:>tnsping test08
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 13-7月 -
2009 21:29:00
Copyright (c) 1997, 2005, Oracle. All rights reserved.
已使用的参数文件:
E:\ORACLE\ORACLE1020\network\admin\sqlnet.ora
已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.1
3.229)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = test08
)))
OK (270 毫秒)
上面的测试是在10.2.0.1的windows版本上进行的。
在9i上测试发现同样的问题,不过错误信息略有区别:
SQL*Plus: Release 9.2.0.4.0 - Production on 星期一 7月 13 21:32:34 2009
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn test/test@test08
ERROR:
ORA-12154: TNS: 无法处理服务名
最后看看11g的情况:
E:>sqlplus /nolog
SQL*Plus: Release 11.1.0.6.0 - Production on 星期一 7月 13 21:36:38 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.
SQL> conn test/test@test08
ERROR:
ORA-12154: TNS: 无法解析指定的连接标识符
11g中的错误和10g一致,不知道是否Oracle根本没有发现这个问题。这么简单的错误居然在3个大版本中都存在
发表评论
-
Mongo vs. Couchbase
2017-07-05 22:21 0https://www.couchbase.com/com ... -
Backup DDL on Oracle DB
2016-03-01 10:31 726set trimspool on lines 500 pa ... -
Identifying Relationship vs. Non-identifying Relationship
2015-10-20 23:49 1191Identifying vs non-identifying ... -
Re-post: DBMS_XPLAN : Display Oracle Execution Plans
2014-07-23 16:14 997DBMS_XPLAN : Display Oracle Ex ... -
Optimistic Locking with Concurrency in Oracle
2014-04-16 11:37 617A very good document about opti ... -
SQL*PLUS - SET Statement
2012-10-24 19:38 903Syntax: SET option value ... -
Get DDL via SQLPLUS
2012-10-24 19:36 944set pagesize 0 -- The height of ... -
Oracle 子程序参数模式,IN,OUT,NOCOPY ( 转)
2012-03-06 14:54 1814Oracle 子程序参数模式主 ... -
Oracle 中Java 对象与PL/SQL类型的映射及使用(转)
2011-11-05 23:45 4674一、Jpublisher概述 Oracle JPu ... -
Refresh statistics for all tables
2011-11-03 14:10 868select 'analyze table '||tab ... -
What's blocking my lock?(Reposted)
2011-10-31 13:44 989If you've ever gotten a phone c ... -
Oracle exp direct(Reposted)
2011-06-15 14:55 2141使用直接导出模式 direct=y exp 比传统模式导 ... -
九大Oracle性能优化基本方法详解(转)
2011-05-12 18:18 1042Oracle性能优化基本方法包括一下几个步骤,包括: 1)设 ... -
深入了解oracle的高水位(HWM)
2011-05-12 09:23 1122转自http://tolywang.itpub.net ... -
Oracle 聚簇(收集)
2011-05-11 22:02 18571. 什么是聚簇 聚簇是 ... -
怎样正确显示oracle异常行数(转)
2011-01-20 16:17 2581在oracle中的存储过程中,使用的EXCEPTION并用 ... -
Oracle function translate(Reposted)
2011-01-08 22:51 1597一、语法: TRANSLATE(string,f ... -
Oracle用Start with...Connect By子句递归查询(转)
2011-01-07 11:39 4177一、语法 大致写法:sel ... -
Spool和SQLLDR--Oracle数据导出导入(传)
2010-12-02 14:58 4439对于SPOOL数据的SQL,最好要自己定义格式,以方便程序直 ... -
TNS:listener could not find instance with matching protocol stack
2010-09-27 15:41 1377When the listener believes the ...
相关推荐
oracle修改配置tnsnames
ORACLE配置tnsnames.ora文件实例 客户机为了和服务器连接,必须先和服务器上的监听进程联络。ORACLE通过tnsnames.ora文件中的连接描述符来说明连接信息。 一般tnsnames.ora 是建立在客户机上的。如果是客户机/服务器...
tnsnames.ora 配置文件
Tnsnames.ora——这个文件类似于unix 的hosts文件,提供的tnsname到主机名或者ip的对应,只有当...NAMES.DIRECTORY_PATH= (TNSNAMES) 这样,也就是客户端解析连接字符串的顺序中有TNSNAMES是,才会尝试使用这个文件。
oracle服务端配置 tnsnamesoracle服务端配置 tnsnamesoracle服务端配置 tnsnames
Oracle\Network\ADMIN\tnsnames.ora
oracle TNS 配置示例,tnsnames oracle TNS 配置示例 第一次置与不会配置的可以照着配制
tnsnames.ora配置文件,免安装使用pl/sql连接远程数据库
配置ORACLE的listener.ora、tnsnames.ora
oracle网络配置 主要讲解listener.ora、sqlnet.ora、tnsnames.ora三个配置文件的构成及作用,对了解oracle网络配置有很大的帮助
仅供自己参考,仅供自己参考仅供自己参考仅供自己参考
Oracle的tnsnames.ora配置(PLSQL Developer)
常用Dos命令和Oracle数据库tnsnames.ora配置,上传只是可能自己以后会用到
使用plsql developer 时,需要的配置文件 tnsnames.ora 下载
试用了网上的一些配置文件,竟然没有好用的,就根据oracle官方的配置方法制作了一个,大家共享。节省我们的时间。
没有按装本地oracle的同学用得上需要配置tnsnames.ora
Oracle中,Oracle\Network\ADMIN\tnsnames.ora 文件很重要
主要介绍了plsql配置tnsnames.ora的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
oracle数据库的配置文件,用于进行连接配置
tnsnames2013-2-22