SUM服务器监控软件监控ORACLE报错ERR=12505

校睿宝培训机构ERP,学员课时管理软件
实验预约管理软件,实验室管理软件,大学、高校实验预约平台
网站日志分析软件,网站访问日志在线分析
哲涛服务器监控软件,IT运维管理软件,CPU、内存、磁盘监控软件
在使用SUM服务器监控软件监控Oracle数据库性能(监控Oracle表空间,IO,命中率等)时,在配置过程中报"Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=186647296)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))"错误,发生如下错误:

Error occured while trying to connect to the database

Error connecting to database: (using class racle.jdbc.driver.OracleDriver)
Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
192.168.1.1:1521:bbcd

----解决办法,经查找,以上的bbcd并不是sid_name,而是SERVICE_NAME

改用sid_name后,运行正常。

Oracle 

使用jdbc连接oracle xxxxxxx 数据库的时候出现了下列错误:

Connection refused(DESCRIPTION=(TMP=)(VSNNUM=153093120)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))

而直接通过plsql可以正常连接数据库,或者可以通过sqlplus 连接数据库

经过debug和查找相关的资料发现问题原因如下:
jdbc连接数据库的时候,需要使用数据库的sid_name,而不是数据库的services_name
而使用plsql连接数据库的时候,只需要数据库的services_name即可,所以修改连接字符串中的services_name 为sid_name

附:
察看数据库中当前的sid:

SQL> select INSTANCE_NAME from v$instance;

INSTANCE_NAME
----------------
hasl


通过PL/SQL developer工具sqlplus ,用户名是aty,密码是xiu,url是11.12.22.142:1522/wfm能够正常连接oracle数据库。

 

但是通过以下JDBC代码不能连接 

 

Java代码  收藏代码
  1. public static Connection getOracleConnection() throws Exception  
  2.     {  
  3.         Class.forName("oracle.jdbc.driver.OracleDriver");  
  4.         String url = "jdbc:oracle:thin:@11.12.22.142:1522:wfm";  
  5.         String user = "aty";  
  6.         String pwd = "xiu";  
  7.         Connection connection = DriverManager.getConnection(url, user, pwd);  
  8.         return connection;  
  9.     }  
 

 

Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=186647296)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))

 

 

 

通过pl/sql developer,执行以下sql

Sql代码  收藏代码
  1. select * from v$instance;  
  2. select * from v$database;  
  3. select * from v$parameter where name like '%db_name%';  
  4. select * from v$parameter where name = 'instance_name';  
  5. select * from v$parameter where name = 'service_names';  

 

发现数据库名称是wfm,但是实例名是wfm1。jdbc连接使用的是实例名,改成wfm1即可。

关于数据库名、实例名、服务名、域名等oracle中的概念,现在不是很理解,后面有时间再去了解。

校睿宝培训机构ERP,学员课时管理软件
实验预约管理软件,实验室管理软件,大学、高校实验预约平台
网站日志分析软件,网站访问日志在线分析
哲涛服务器监控软件,IT运维管理软件,CPU、内存、磁盘监控软件

上海哲涛网络科技有限公司版权所有 © 2005-2023       沪ICP备06058430号-1

沪公网安备 31011302000898号

点我咨询