问题现象

 

Linux+Oracle环境且采用分布式部署,其中iMC NTA组件分布式部署在从服务器上:

主服务器(IP地址192.168.127.140+本地Oracle数据库(网络服务名ORCL

从服务器(IP地址192.168.127.155+本地Oracle数据库(网络服务名ORCL1

在主服务器上已经完成“网络行为分析”和“网络流量分析”的部署:

 

在从服务器上部署“网络行为分析服务”组件的时候异常终止,提示查看日志:

 

 

原因分析

主服务器上能部署平台、网络行为分析、网络流量分析组件成功,说明主服务器连接本地的Oracle数据库是没有问题的,同时从服务器能安装智能iMC部署监控代理成功,说明从服务器连接本地的Oracle数据库应该也是没有问题的,问题可能出在主从服务器之间的连接或通信上。

查看/iMC/deploy下的dma.log日志,发现从服务器在和主服务器数据库连接的时候失败了,提示连接标识符无法解析的报错:

2016-08-15 11:23:07 [INFO ] [SwingWorker-pool-1-thread-9] [com.h3c.unba.UnbamDbParameter::localDBisUsed(283)] The local db ip 192.168.127.155 hasnot been used. So return false to begin installation.
2016-08-15 11:23:07 [INFO ] [SwingWorker-pool-1-thread-9] [com.h3c.unba.UnbamDbParameter::executeTask(105)] NTA query db type:Oracle
2016-08-15 11:23:07 [INFO ] [SwingWorker-pool-1-thread-9] [com.h3c.unba.UnbamDbParameter::getUnbaMasterDbInfo(222)] server addr file path: /opt/iMC/common/conf/server-addr.xml
2016-08-15 11:23:07 [INFO ] [SwingWorker-pool-1-thread-9] [com.h3c.unba.UnbamDbParameter::getUnbaMasterDbInfo(237)]
Database address for unba master:ou, database type: Oracle, database url: jdbc:oracle:oci:@ORCL, driverClassName: oracle.jdbc.driver.OracleDriver
2016-08-15 11:23:07 [ERROR] [SwingWorker-pool-1-thread-9] [com.h3c.unba.UnbamDbParameter::initCon(209)] ORA-12154: TNS:could not resolve the connect identifier specified

检查从服务器的tnsnames.ora文件,发现只有本机数据库的网络服务名,没有连接主服务器数据库网络服务名的配置;同时主服务器上的tnsanames.ora文件中也没有连接从服务器数据库网络服务名的配置。

在数据库的连接方式上,Oracle于其他常用数据库比如SQL Server不同,其他数据库可以通过直接指定IP的方式连接,但是Oracle数据库则是通过配置网络服务名的方式来连接的,配置网络服务名的文件为tnanames.ora,文件的默认路径为%ORACLE_HOME%/network/bin。如果不配置的话就会出现“ORA-12514:TNS:无法解析指定的连接标识符”的报错。

解决办法

手工修改主、从服务器上的tnsnames.ora文件,保证都有对方数据库的网络服务名配置,并且两台服务器上tnsnames.ora文件中相同网络服务名的配置是一样的。主机的tnsnames.ora文件内容如下:

从机的tnsnames.ora文件内容如下:

最终NTA组件部署成功,状态如下: 

 

 

建议与总结

1、下面重点圈出常见场景下网络服务名的配置说明:

场景一:

有三台服务器,Server_AiMC 主服务器,Server_BServer_C为从服务器,三台服务器都使用本地数据库。Server_A需要配置指向本地数据库的网络服务名TNSNAME_AServer_B需要配置指向本地数据库的网络服务名TNSNAME_BServer_C需要配置指向本地数据库的网络服务名TNSNAME_C。同时,Server_A还需要配置TNSNAME_BTNSNAME_CServer_B还需要配置TNSNAME_ATNSNAME_CServer_C还需要配置TNSNAME_ATNSNAME_B,否则iMC不能正常工作。安装iMC 时,各服务器使用指向本地数据库的网络服务名。各服务器上相同网络服务名的配置内容必须相同。

场景二:

有三台服务器,Server_AiMC主服务器,Server_BServer_C为从服务器,使用远程的数据库服务器DBServer_D。在Server_AServer_BServer_C上需要配置指向DBServer_D的网络服务名TNSNAME_D。在Server_AServer_BServer_C 安装iMC时,使用网络服务名TNSNAME_D连接数据库即可。同时在DBServer_D上也需要配置TNSNAME_D

2tnsping可以测试本机能否正常解析对应数据库的网络服务名,正常则返回OK,无法解析则类似如下报错,iMC不管是集中式部署还是主从分布式部署的环境,需要保证所有iMC服务器tnsping所有数据库的网络服务名都测试OK

[root@ou ~]# tnsping orcl

TNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 15-AUG-2016 11:44:26

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

Used parameter files:

/u01/app/oracle/product/11.1.0/db_1/network/admin/sqlnet.ora

TNS-03505: Failed to resolve name

 

 

案例信息

案例类型:经验案例
案例号:201608270001
创建时间:2016年8月27日
更新时间:2016年9月2日
发布时间:2016/9/2 11:34:06
文章密级:游客可见
有效期:长期有效
发布者:欧阳露 [ofw0938]
点击次数:1856
评论平均得分:4.00
关键词:分布式部署 NTA Oracle tnsnames
产品线:NSM
产品系列:iMC-NTA网络流量分析组件
产品版本:
故障类型:

常用操作
收藏