各位,
错误:最近工作时发现我们测试服务器出现“ORA_12514:TNS:listener does not currently know of service requested in connect descriptor”错误。处理办法:右键点击我的电脑-》管理——》服务和应用程序(左侧列表)——》双击右侧服务——》重启“OracleJobScheduler[oracle_sid]”
这样就可以登陆数据库访问了。我想请问一下这个问题是什么原因造成的。

解决方案 »

  1.   

    原因比较多,OS的硬件资源,你的oracle运行模式等都有可能,不过我估计最有可能是,最大连接数太小了,
    简单的说就是这两个参数不够大,open_cursors,processes
    你改大点试试
      

  2.   


    你早cmd命令行模式下 lsnrctl start; 启动下lsnr吧,估计是这个没有启动。
      

  3.   

    谢谢各位,我ORACLE相关服务设置的都是自动启动,LSNRCTL START启动后连接仍然不可用,必须重启OracleJobScheduler[oracle_sid]。
     show parameter process
     
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    aq_tm_processes                      integer     0
    db_writer_processes                  integer     1
    gcs_server_processes                 integer     0
    job_queue_processes                  integer     10
    log_archive_max_processes            integer     2
    processes                            integer     150
     
    SQL> show parameter open_cursors
     
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    open_cursors                         integer     300参数设置也都不小,各位辛苦
      

  4.   

    最近使用本地数据库的时候也报类似错误,我在关闭数据库的时候报了一个 database nomount 的信息,我判断应该是在启动电脑室数据库未装载实例成功造成的,应该在SQLPLUS中 alter database mount,alter database open就可以了,下次试试,仍然很感谢各位。
      

  5.   

    ORA-12514: TNS:listener does not currently know of service requested in connect descriptor 
    Cause: The listener received a request to establish a connection to a database or other service. The connect descriptor received by the listener specified a service name for a service (usually a database service) that either has not yet dynamically registered with the listener or has not been statically configured for the listener. This may be a temporary condition such as after the listener has started, but before the database instance has registered with the listener.
     
    Action: 
    - Wait a moment and try to connect a second time.
    - Check which services are currently known by the listener by executing: lsnrctl services <listener name>
    - Check that the SERVICE_NAME parameter in the connect descriptor of the net service name used specifies a service known by the listener.
    - If an easy connect naming connect identifier was used, check that the service name specified is a service known by the listener.
    - Check for an event in the listener.log file.
     
    从这段解释来看,还是监听的问题。 不知道楼主的监听是怎么配置的。 Oracle Listener 动态注册 与 静态注册
    http://blog.csdn.net/tianlesoftware/archive/2010/04/30/5543166.aspx
    ------------------------------------------------------------------------------ 
    Blog: http://blog.csdn.net/tianlesoftware 
    网上资源: http://tianlesoftware.download.csdn.net 
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
    DBA1 群:62697716(满); DBA2 群:62697977
      

  6.   

    解决ORA-12560: TNS: 协议适配器错误,与大家共享
    今天遭遇ORA-12560: TNS: 协议适配器错误的问题,经过一番努力问题已经解决,与大家共享。
    造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个:
    1.监听服务没有起起来。windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,启动oraclehome92TNSlistener服务。
    2.database instance没有起起来。windows平台如下操作:开始---程序---管理工具---服务,打开服务面板,启动oracleserviceXXXX,XXXX就是你的database SID.
    3.注册表问题。regedit,然后进入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0将该环境变量ORACLE_SID设置为XXXX,XXXX就是你的database SID.或者右几我的电脑,属性--高级--环境变量---系统变量--新建,变量名=oracle_sid,变量值=XXXX,XXXX就是你的database SID.或者进入sqlplus前,在command line下输set oracle_sid=XXXX,XXXX就是你的database SID.
    经过以上步骤,就可以解决问题。