• ORA-12505 错误解决


     
        在Fedora下安装了Oracle 10gR2,安装完成之后,使用netca创建了监听,创建的时候没有使用默认的LISTENER和1521端口,而是使用了LISTENER_DELL和1522端口,终端下显示完成,然后在$ORACLE_HOME/network/admin/tnsnames.ora下增加一个tns别名。
     
    DELL =
      (DESCRIPTION =
        (ADDRESS_LIST = 
          (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1522))
        )
        (CONNECT_DATA = 
          (SERVER = DEDICATED)
          (SID = dell)
        )
      )
    加好之后,如下登录
    sqlplus /nolog
    connect scott/tiger@dell
    登录之后就报错了,ORA-12505,按说监听方面的错误还是很好解决的,结果检查了监听也是正常启动的,但就是无法按照@DELL来登录,将tnsnames.ora里面SID = dell 改成 SERVER_NAME = dell  还是一直报错ORA-12505, TNS:listener does not currently know of SID given in connect descriptor。 
          然后发现$ORACLE_HOME/network/admin/目录下没有sqlnet.ora文件,运行netca,设置命名方法,运行之后sqlnet.ora文件有了,内容如下: 
    more sqlnet.oraNAMES.DIRECTORY_PATH= (TNSNAMES)
    再次尝试登录,发现还是同样的错误。于是突然想到Oracle肯定一直是以LISTENER这个并未启动的监听来来Oracle提供监听信息,而我并没有使用默认监听名称所以造成这个错误,于是给监听文件listener.ora添加SID信息。
    LISTENER_DELL =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = avon)(PORT = 1522))
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
        )
      )
     
    SID_LIST_LISTENER_DELL =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
          (PROGRAM = extproc)
        )
      )
    添加SID信息 (见蓝色加粗字体)
     SID_LIST_LISTENER_DELL =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
          (PROGRAM = extproc)
        )
        (SID_DESC =
          (GLOBAL_DBNAME = dell)
          (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
          (SID_NAME = dell)
        )
      )
     
    加好之后保存退出 :wq
    进行测试,还是报错,发现tnsnames.ora 里面我设置的是SERVER_NAME,于是给改成SID = dell 再次测试
    sqlplus /nolog
    SQL> conn scott/tiger@dell
    Connected.
    OK,一切正常。
     
    后记:在windows下也进行了同样的尝试,发现如果不使用LISTENER作为默认监听名称 端口不为1521的话,也会导致这个错误,而解决方法和上面一致。 不过并没有尝试名称为LISTENER但是端口不为1521的情况。
     
     
     
    C:Windowssystem32>lsnrctl
    LSNRCTL for 32-bit Windows: Version 10.2.0.3.0 - Production on 13-9月 -2010 23:2
    6:34
    Copyright (c) 1991, 2006, Oracle.  All rights reserved.
    欢迎来到LSNRCTL, 请键入"help"以获得信息。
    LSNRCTL> status
    正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
    TNS-12541: TNS: 无监听程序
     TNS-12560: TNS: 协议适配器错误
      TNS-00511: 无监听程序
       32-bit Windows Error: 61: Unknown error
    LSNRCTL> set current_listener LISTENER_DEMO
    目前的监听程序为 LISTENER_DEMO
    LSNRCTL> status
    正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=scott-PC)(PORT=1522)))
    LISTENER 的 STATUS
    ------------------------
    别名                      LISTENER_DEMO
    版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.3.0 - Produ
    ction
    启动日期                  13-9月 -2010 23:17:13
    正常运行时间              0 天 0 小时 9 分 41 秒
    跟踪级别                  off
    安全性                    ON: Local OS Authentication
    SNMP                      OFF
    监听程序参数文件          D:oracleproduct10.2.0db_1 etworkadminlistener.o
    ra
    监听程序日志文件          D:oracleproduct10.2.0db_1 etworkloglistener_dem
    o.log
    监听端点概要...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=scott-PC)(PORT=1522)))
      (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC0ipc)))
    服务摘要..
    服务 "PLSExtProc" 包含 1 个例程。
      例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
    命令执行成功
    以上为出现ORA-12505错误时,监听的状态,
    以下为修改正常,监听重启后的状态
    LSNRCTL> set current_listener LISTENER_DEMO
    目前的监听程序为 LISTENER_DEMO
    LSNRCTL> stop
    正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=scott-PC)(PORT=1522)))
    命令执行成功
    LSNRCTL> start
    启动tnslsnr: 请稍候...
    TNSLSNR for 32-bit Windows: Version 10.2.0.3.0 - Production
    系统参数文件为D:oracleproduct10.2.0db_1 etworkadminlistener.ora
    写入D:oracleproduct10.2.0db_1 etworkloglistener_demo.log的日志信息
    监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=scott-PC)(PORT=1522)))
    监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC0ipc)))
    正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=scott-PC)(PORT=1522)))
    LISTENER 的 STATUS
    ------------------------
    别名                      LISTENER_DEMO
    版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.3.0 - Produ
    ction
    启动日期                  13-9月 -2010 23:35:14
    正常运行时间              0 天 0 小时 0 分 6 秒
    跟踪级别                  off
    安全性                    ON: Local OS Authentication
    SNMP                      OFF
    监听程序参数文件          D:oracleproduct10.2.0db_1 etworkadminlistener.o
    ra
    监听程序日志文件          D:oracleproduct10.2.0db_1 etworkloglistener_dem
    o.log
    监听端点概要...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=scott-PC)(PORT=1522)))
      (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC0ipc)))
    服务摘要..
    服务 "PLSExtProc" 包含 1 个例程。
      例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
    服务 "demo" 包含 1 个例程。
      例程 "demo", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
    命令执行成功
  • 相关阅读:
    MyBatis学习总结——MyBatis快速入门
    Java网络socket编程详解
    java中导出EXCEL表格
    利用反射将xml转换为List<Object>
    Java中将xml转为List<实体类>
    JavaWeb | 之 | 角色管理的表结构设计和原理
    fastjson把对象转化成json避免$ref
    JSON解析(DATE)对象数据
    jstl中<c:forEach>的用法
    请求转发与请求重定向的区别
  • 原文地址:https://www.cnblogs.com/Sir-Li/p/4036616.html
Copyright © 2020-2023  润新知