关于Oracle本地连接出现与监听有关的问题的解决方法探讨

监听的作用:

用于应用桌面即用户与数据库服务器建立连接的媒介,客户端发送连接请求,监听识别请求并建立客户端与服务器的连接后,监听的使命并完成了。也就是说,在建立客户端与服务器的连接后,监听可以关闭了。

Oracle连接出现常见的几种与监听有关的问题::

1、无监听

1)一般是监听出现没有启动造成。

解决方法:

工具栏右键>>>任务管理器>>>选择服务>>>找到Oracle相关的服务>>>启动。

菜单>>>运行>>>服务(有可能是server>>>本地服务)>>>找到Oracle相关的服务>>>启动

如图1。

图1

2)服务实例没有注册到监听中

出现此问题一般是配置监听失败,或者多个实例多个监听造成监听实例搞混淆的情况(一般很少见)。

一般数据库监听配置用NET Configuration assistance来进行,在进配置的时候,可能选择添加监听程序,如图3,在后续配置中,可能服务实例没有注册到监听中。

解决方法:

一般一个监听可以管理多个数据库实例,所以没必要配置多个监听。目前本人只研究一个监听对于多个监听造成的错误的解决方法,至于多个监听多个实例本人猜测可以用此类似方法解决。有待后续研究。

图2

图3

在安装Oracle数据库软件的文件夹下有三个关于监听或net的配置文件,本人电脑中,三个该文件的地址为:D:\oraclehudatabasesofeware\oraclestationofsoftware\NETWORK\ADMIN。三个文件名为:listener.ora,sqlnet.ora,tnsnames.ora。顾名思义三个文件listener与监听有关,tnsnames与数据库实例有关,sqlnet与网络连接有关。

上述以说出现错误为服务实例没有注册到监听中。所以打开listener文件,在文件中添加数据库实例名,内容如下,红色为加入内容:

# listener.ora Network Configuration File: D:\oraclehudatabasesofeware\oraclestationofsoftware\network\admin\listener.ora

# Generated by Oracle configuration tools.

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = CLRExtProc)

(ORACLE_HOME = D:\oraclehudatabasesofeware\oraclestationofsoftware)

(PROGRAM = extproc)

(ENVS = "EXTPROC_DLLS=ONLY:D:\oraclehudatabasesofeware\oraclestationofsoftware\bin\oraclr11.dll")

)

(SID_DESC =

(GLOBAL_DBNAME = ORADB)

(ORACLE_HOME = D:\oraclehudatabasesofeware\oraclestationofsoftware)

(SID_NAME = ORADB)

)

(SID_DESC =

(GLOBAL_DBNAME = ORCL)

(ORACLE_HOME = D:\oraclehudatabasesofeware\oraclestationofsoftware)

(SID_NAME = ORCL)

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

)

)

ADR_BASE_LISTENER = D:\oraclehudatabasesofeware

注意:

  1. 本人中包含两个数据库实例,所以加入两段话。GLOBAL_DBNAME = ORADB,全局数据库名称;ORACLE_HOME =D:\oraclehudatabasesofeware\oraclestationofsoftware,数据库所在位置;SID_NAME = ORADB。特别注意该文字必须包含在SID_LIST的括号内。
  2. 最后注意ADR_BASE_LISTENER = D:\oraclehudatabasesofeware,监听位置,如果数据库不在同一文件夹内,设置ADR_BASE_LISTENER的值指向某一数据库实例所在文件夹,将会出现监听无法启动的错误(连接时并不会显示监听无法启动,而是显示无监听,但在登陆日志中会记录listener.ora参数错误,日志所在位置为:D:\oraclehudatabasesofeware\Oraclebasedoct\diag\tnslsnr\hudage\listener下的trace文件夹下,和alter文件夹下均可看到)。
  3. 修改保存后,必须重启监听服务和数据库实例服务后才能连接数据库,否则,还会提示同样的错误。
  4. 虽然监听是主要问题,但是数据库实例名文件tnsnames也与监听有关,所以在listener修改完后,重启监听服务和数据库实例服务后,连接数据库,如果还有问题,就要查看tnsnames文件有没有问题。一般文件内容如下:

# tnsnames.ora Network Configuration File: D:\oraclehudatabasesofeware\oraclestationofsoftware\network\admin\tnsnames.ora

# Generated by Oracle configuration tools.

ORADB =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = oradb)

)

)

ORACLR_CONNECTION_DATA =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

(CONNECT_DATA =

(SID = CLRExtProc)

(PRESENTATION = RO)

)

)

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

2、当前监听无法识别连接描述符中请求的服务

如图5:

图5

监听无法识别连接描述符中请求的服务同样说明服务实例没有被监听程序发现,即没有注册到监听程序中,所以解决方法如上问题1中的第二种。

*多监听多实例问题有待进一步研究。

关于Oracle本地连接出现与监听有关的问题的解决方法探讨的更多相关文章

  1. oracle配置监听图形界面不出来解决方法

    ROOT用户下,执行 xhost +   然后再切换到oracle用户运行netca DISPLAY 在Linux/Unix类操作系统上, DISPLAY用来设置将图形显示到何处. 直接登陆图形界面或 ...

  2. 本地连接出现"已启用检测该状态的服务"解决方法、方案

    1.运行 输出dcomcnfg 2.组件服务-计算机-我的电脑-DCOM配置-netprofm 3.右键属性-安全-启动和激活权限-自定义 4.编辑-添加-输入对象名称来选择-输入“LOCAL SER ...

  3. 安装完oracle重新启动后报ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务(重启前正常)

    安装完oracle重新启动后报ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务(重启前正常) 刚安装完后用plSql登录正常. 在dos命令行下 输入  sqlplus 用户 ...

  4. 解决windows7无法连接CentOS7系统中oracle问题:ORA-12514 TNS 监听程序当前无法识别

    linux开启后终端按下面输入(容易忘记,记录下): [oracle@localhost ~]$ lsnrctl stop                #先关闭监听服务 [oracle@localh ...

  5. 连接Oracle 10g时ORA-12514:TNS:监听进程不能解析在连接描述符中给出的SERVICE_NAME错误的解决

    近日服务器断电,导致客户端连接ORACLE服务器时出现ORA-12514错误,在网上查得解决方法如下 解决方法: 1. 打开/network/admin/listener.ora文件,找到: SID_ ...

  6. (转)oracle 启动监听 报“监听程序不支持服务” 解决

    转自 http://www.51testing.com/html/99/478599-842622.html 今天安装了oracle后,启动监听,报错如下:    启动tnslsnr: 请稍候... ...

  7. oracle 11g 一直提示 严重: 监听程序未启动或数据库服务未注册到该监听程序

    From:http://blog.sina.com.cn/s/blog_6734ea6d0102v6sn.html 增加操作系统环境变量:ORACLE_HOSTNAME=localhost 然后在cm ...

  8. oracle client ORA-12541: TNS: 无监听程序

    1. Question description: if you are setting the oracle client to add a local network service,  you m ...

  9. 对于HDMI设备连接状态的监听

    对与最近主要做的是电视机盒子端的开发,其中涉及到设备的状态监听比较繁琐,所以对HDMI的连接状态的监听方法做个记录,方便后续查看. 主要通过两种方式: (1)比较常用的广播监听 注册一个动态广播来获取 ...

随机推荐

  1. 通过字节码分析java中的switch语句

    在一次做题中遇到了switch的问题,由于对switch执行顺序的不了解,在这里简单的通过字节码的方式理解一下switch执行顺序(题目如下): public class Ag{ static pub ...

  2. 【JavaScript】深入理解call,以及与apply、bind的区别

    一.call call有两个妙用 1.继承(我前面的文章有提到用call实现call继承,有兴趣可以看下.https://www.cnblogs.com/pengshengguang/p/105476 ...

  3. Docker笔记(二):Docker管理的对象

    原文地址:http://blog.jboost.cn/2019/07/14/docker-2.html 在Docker笔记(一):什么是Docker中,我们提到了Docker管理的对象包含镜像.容器. ...

  4. Ray-基础部分目录

    基础部分: 引言 Actor编写-ESGrain与ESRepGrain 消息发布器与消息存储器 Event编写 Handler之CoreHandler编写 Handler之ToReadHandler编 ...

  5. markdown插入表格语法

    markdown插入表格语法 举例 如表格标题为,姓名,班级,成绩 标题内的内容为,yang,a班,100 我们要在markdow文件中插入表格 如 姓名|班级|成绩 -|-|- yang|a班|10 ...

  6. Android拨打电话权限总结

    android在6.0和6.0以上拨打电话的权限声明 /** * 打电话 * * @param phoneNumber */ protected void startCallPhone(String ...

  7. 「Sqlserver」数据分析师有理由爱Sqlserver之九-无利益关系推荐Sqlserver书单

    在前面系列文章的讲述下,部分读者有兴趣进入Sqlserver的世界的话,笔者不太可能在自媒体的载体上给予全方位的带领,最合适的方式是通过系统的书籍来学习,此篇给大家梳理下笔者曾经看过的自觉不错值得推荐 ...

  8. [翻译] .NET Core 3.0 Preview 7 发布

    原文: Announcing .NET Core 3.0 Preview 7 今天,我们宣布推出 .NET Core 3.0 Preview 7 .我们的工作已经从创建新功能过渡到打磨版本.预计剩余的 ...

  9. Java IO 为什么我们需要缓冲区

    在执行IO操作我们通常会设置一个字节数组作为缓冲区用来写/读数据,一般情况下一个合理大小的缓冲区是有利于提升性能的,但是有一个问题一直困扰着我,为什么缓冲区可以提升IO操作的性能? 经查阅资料之后,总 ...

  10. PHP与ECMAScript_5_常用数组相关函数

    PHP ECMAScript 长度 $length = count($array) length = array.length       增 array_unshift($array, new1,n ...