ORA-12505


启动服务报错ORA-12505

    * 博客分类: 数据库


今天在工作中配置plsqldev时,报错误是找不到服务名
同时给我的信息看似没有错误,研究半天发现是SID 给我的  qhltkf1是错误的。正确的是qhltkf

后来在配置TOMATE是报错误ORA-12505。
很是郁闷,咋在plsqldev可以登录在TOMAT不能登录,SID没错误。
在网上参考解决方式:
==========================================================

ORA-12505:
之前用PL/SQL DEVELOPER和SQLPLUS 登录数据库都没有问题,就是应用程序通过JDBC连接Oracle时无法成功连接,出现ORA-12505错误listener does not currently know of SID given in connect descriptor......。

经过查找,发现Oracle的service_name 和sid_name不一致,而PL/SQL DEVELOPER和SQLPLUS 采用service_name进行连接,而应用程序是按照sid_name进行连接,所以出现PL/SQL DEVELOPER和SQLPLUS 能够连接而应用程序却无法连接的问题。

解决问题很简单,首先查找当前实例的sid_name:SELECT INSTANCE_NAME FROM V$INSTANCE,然后把得到的sid_name填入应用程序的连接串中。

====================================================
找了个DBA权限的用户执行以下
SELECT INSTANCE_NAME FROM V$INSTANCE
查询的信息竟然是qhltkf1。
将TOMCAT修改文件SID为qhltkf1就正常。
按照工作习惯plsqldev可以正常登录,tomat配置就不会有问题,是错误的。
后来想了想,在做双机后就会出现此类问题。




解决方法:

打开Oracle的 listener.ora 文件:

(oracle/oracle/product/10.2.0/db_1/network/admin/listener.ora)



修改前:

# listener.ora Network Configuration File: /app/oracle/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /app/oracle/oracle/product/10.2.0/db_1)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = suse10.site)(PORT = 1521))
    )
  )

------------------------------------------------------------------------------------------------------------------------------

修改后:

# listener.ora Network Configuration File: /app/oracle/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /app/oracle/oracle/product/10.2.0/db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = ORCL)
      (ORACLE_HOME = /app/oracle/oracle/product/10.2.0/db_1)
      (SID_NAME = ORCL)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = suse10.site)(PORT = 1521))
    )
  )



上面的红色文字是增加的内容。 (ORCL -- 是你的SID 数据库名)

重启Oracle的监听器。

问题解决。

你可能感兴趣的:(oracle)