Oracle 11g下TNS连接报错ora-12532故障解决

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介:

TNS连接错误是Oracle用户经常遇到的问题。在实际工作中,由于用户终端环境的复杂,各种TNS连接问题经常困扰日常用户。操作系统版本问题、客户端服务器双重安装、多版本客户端安装、本地环境变量配置是我们经常遇到的故障场景和原因。

本篇记录一个TNS Bug引发问题的解决,记录下来,供有需要的朋友不时之需。

1、问题说明

问题是一个同事在配置连接到数据库时候,总是报错不能连接。笔者使用tnsping继续测试,发现客户端不能正确解析连接名称。

这种问题出现的最大可能,就是tnsnames.ora文件中配置格式出现问题。Oracle Net网络协议中,listener.ora、tnsnames.ora和sqlnet.ora是三个核心配置文件。三个文件保持着文本规格配置方法,是比较简单、但也容易出错的配置文件。

果然在tnsnames.ora文件中,我们发现了配置片段。

testDB =

 (DESCRIPTION =

 (ADDRESS_LIST =

 (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.xx.xx)(PORT = 1521))

)

 (CONNECT_DATA =

 (SERVICE_NAME = testdb)

)

)

这种格式显然是同事从其他地方黏贴过来的。在之前的博客文章中,我们讨论过tnsnames.ora中格式的解析规则,具体如下:

ü 本地Net名称必须顶行头书写,不能出现空格;

ü 配置信息括号中,只有最外层括号允许顶行头书写,其他括号不允许。注意:如果最外层括号顶行头书写,虽然tnsping和连接可以识别连接,但是netca配置工具不能识别,会出现配置工具hang住的情况;

根据这个思路,进行格式整理,形成如下格式:

testDB =

   (DESCRIPTION =

     (ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.xx.xx)(PORT = 1521))

)

   (CONNECT_DATA =

    (SERVICE_NAME = testdb)

)

)

之后,使用tnsping进行测试。

C:\Users\Thinkpad>tnsping testdb

 

TNS Ping Utility for 32-bit Windows: Version 11.1.0.6.0 - Production on 01-6月 -

2015 14:12:27

 

Copyright (c) 1997, 2007, Oracle.  All rights reserved.

 

已使用的参数文件:

F:\app\xxx\product\11.1.0\db_1\network\admin\sqlnet.ora

 

 

已使用 TNSNAMES 适配器来解析别名


Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)

(HOST = 172.16.xx.xx)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = testdb)))

TNS-12532: TNS: 无效的参数

这个就有超出笔者经验的情况了。从tnsping的情况看,Oracle Net是可以正确解析出链接字符串。而且配置参数类型都是比较常见的类型,没有出现错误的概率。

最诡异的是错误提示:无效的参数。让人一时摸不到头脑。

无奈之下,笔者尝试删除掉连接内容,重新执行netca配置一个相同的连接。但是在最后测试的环节,出现相同提示错误:

正在连接...ORA-12532: TNS: 无效的参数

测试未成功。

您提供的一些信息可能不正确。

单击“后退”检查提供的 Net 服务名的信息, 或单击“更改登录”来更改用户名。

比较诡异的问题了。

2、问题分析与解决

数据库服务器、监听程序肯定是正常的,其他用户连接没有问题。问题根源依然是在客户端没错。根据经验:首先详细检查一下同事本地机器的配置和软件情况。

首先,发现同事安装的不是客户端程序,而是Oracle 11gR1版本服务器。

C:\Users\Thinkpad>tnsping sicsdb

 

TNS Ping Utility for 32-bit Windows: Version 11.1.0.6.0 - Production on 01-6月 -

2015 14:12:27

具体版本是11.1.0.6,此外同事64位服务器上安装了32位数据库软件。根据经验,Oracle任何一个大版本发布,不到release 2的时候,是可能有很多潜在Bug出现的。另外,虽然在Windows环境下,64位操作系统可以兼容32位软件程序,但是很多底层调用是会出现问题的,更容易引起bug的出现。

按照这个思路,笔者在官方MOS网站上找到对应的文章信息:11g: TNS-12532 / ORA-12532 Reported When Firewall Is Enabled (文档 ID 748466.1)。

在文章中,说明在11.1.0.6的Oracle Net Services中,可能会出现ora 12532错误。标准的该错误提示内容为:

[oracle@SICS-MIGPC-DB ~]$ oerr ora 12532

12532, 00000, "TNS:invalid argument"

// *Cause:  An internal function received an invalid parameter.

// *Action: Not normally visible to the user. For further details, turn

// on tracing and reexecute the operation. If error persists, contact

// Oracle Customer Support.

这是一个很内部的错误,一般不会被普通用户看到。主要原因在于从客户端向外发送信息的时候,被防火墙或者其他原因阻塞。

这个问题已经被Oracle内部识别为一个bug,编号是6031201。出现12532错误的提示信息显然是不正确的,应该对应TNS:connection refused信息。

联系同事修改该问题,将本机的防火墙关闭,重新实验,连接成功。

C:\Users\Thinkpad>tnsping testdb

 

TNS Ping Utility for 32-bit Windows: Version 11.1.0.6.0 - Production on 01-6月 -

2015 14:39:54

 

Copyright (c) 1997, 2007, Oracle.  All rights reserved.

已使用的参数文件:

F:\app\xxxx\product\11.1.0\db_1\network\admin\sqlnet.ora

已使用 TNSNAMES 适配器来解析别名

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)

(HOST = 172.16.xx.xx)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = testdb)))

OK (10 毫秒)

故障消失。建议同事卸载低版本Oracle,安装11.2.0.4系列客户端。
3、结论
Oracle Net是官方提供的连接策略,很多朋友在配置过程中存在各种各样的问题。在实际中,不要被问题表象所迷惑,抽丝剥茧、逐步深入可以帮助我们正确的解决问题。

本文转自ICT时空 dbasdk博客,原文链接Oracle 11g下TNS连接报错ora-12532故障解决 :,如需转载请自行联系原博主。

相关文章
|
29天前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
1月前
|
SQL Oracle 关系型数据库
Python连接Oracle
Python连接Oracle
20 0
|
3月前
|
Oracle 关系型数据库
Navicat 连接Oracle ORA-28547: connection to server failed, probable Oracle Net admin error
Navicat 连接Oracle ORA-28547: connection to server failed, probable Oracle Net admin error
112 0
|
4月前
|
Oracle 关系型数据库 数据库
关系型数据库Oracle 故障转移能力
【7月更文挑战第10天】
62 2
|
5月前
|
Oracle 数据可视化 关系型数据库
Oracle数据库安装及使用Navicat连接oracle2
Oracle数据库安装及使用Navicat连接oracle
|
5月前
|
Oracle 关系型数据库 数据库
实时计算 Flink版产品使用问题之连接到Oracle数据库但无法读取到数据,是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
Oracle 安全 关系型数据库
Oracle数据库安装及使用Navicat连接oracle1
Oracle数据库安装及使用Navicat连接oracle
|
5月前
|
Oracle 关系型数据库 数据库
Oracle 11G数据库安装步骤及截图操作2
Oracle 11G数据库安装步骤及截图操作
64 0
|
5月前
|
Oracle 安全 关系型数据库
Oracle 11G数据库安装步骤及截图操作1
Oracle 11G数据库安装步骤及截图操作
106 0
|
5月前
|
资源调度 Oracle 关系型数据库
实时计算 Flink版产品使用问题之同步oracle表时,任务不报错,但是读不到数据,是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。