一个listener.ora配置细节的问题

今天做练习的时候,发现一个问题,可能是很小的细节问题,但确实稍微折腾了一下,记录于此,方便以后查阅。

问题现象:

1. 配置listener.ora静态监听。

2. 使用静态监听创建EM。

3. 使用sqlplus system/oracle@XXX或EZCONNECT方式,也提示错误:

4. 使用sqlplus / as sysdba可以正常登录。

问题排查:

1. 看报错,ORA-01034错误,给出了几种可能:

(1) SGA不足。

> 我是跑着虚拟机,sqlplus / as sysdba可以登录,尝试将参数文件的memory_target改小一些,仍报错。

(2) 指向实例的操作系统变量设置不正确。

> 看看上面的listener.ora、tnsnames.ora,都没有什么明显的异常啊?奇了怪了。。。

3. 网上搜索,一般还是说ORACLE_HOME或ORACLE_SID设置不正确。

4. 参考官方文档,发现有一些非常细节的不同,

如上所示,ORACLE_HOME的路径中结尾没有“/”,而我的版本是有这个符号,

难道真是这问题?将“/”删除后再试,sqlplus system/oracle@xxx或EZCONNECT均可登录,EM可以使用静态监听继续创建。问题就在于此,ORACLE_HOME多了一个“/”。

总结:

1. 这个问题的根源就是ORACLE_HOME的路径结尾多了一个“/”,想必Oracle的解析程序在得到ORACLE_HOME的value值后,是做了直接匹配,并没有对结尾的“/”进行转换,他要找"dbhome_1/"这个文件夹,自然错了。按常理讲,结尾的“/”不会是目录名称,因此这块其实容错性可以做得更好些。而且listener.ora的官方文档中除了示例中体现了这点,并没有其他介绍(至少我未找到),想必他认为这是一个常识。

2. 其实从报错上,就可以为问题排查指明方向,ORA-01034错误给出了两个可能的原因,要么内存SGA不足,要么环境变量有问题,只是自己开始没有注意这个细节。

3. sqlplus / as sysdba可以登录,sqlplus system/oracle@xxx不能登录, 这其实和内存无关,这两者只是登录的不同认证方式,不存在和内存使用有关的问题。

4. 一个小小的“/”,虽然是细节问题,但出现问题时的错误提示,依然可以为我们指明一些方向,足以进一步体会到Oracle的精湛。还未入道,还需努力。

时间: 2024-10-13 12:15:59

一个listener.ora配置细节的问题的相关文章

RAC环境listener.ora和tnsnames.ora配置总结

RAC环境下面如果LISTENER.ORA和TNSNAMES.ORA没有配置好的话最常见的会出现 ora-12545 异常: 为了达到更好的使用目的,这里做一下总结: 首先,参考书 Oracle? Database Net Services Administrator's Guide Oracle? Database Net Services Reference 在6节 Local Naming Parameters (tnsnames.ora) 有一句话比较重要 Do not set the 

ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)

        不论是单实例还是RAC,对于非缺省端口下(1521)的监听器,pmon进程不会将service/instance注册到监听器,即不会实现动态注册.与单实例相同,RAC非缺省端口的监听器也是通过设置参数local_listener来达到目的.除此之外,还可以对实例进行远程注册,以达到负载均衡的目的.这是通过一个参数remote_listener来实现.   有关Oracle 网络配置相关基础以及概念性的问题请参考:      配置ORACLE 客户端连接到数据库   配置非默认端口

ORACLE RAC 监听配置 (listener.ora tnsnames.ora)

    Oracle RAC 监听器的配置与单实例稍有不同,但原理和实现方法基本上是相同的.在Oracle中 tns进程用于为指定网络地址上的一个或多个Oracle 实例提供服务注册,并响应来自客户端对该服务提出的连接请求.一旦连接请求到达,并派生出一个服务器进程建立服务器与用户端之间的连接(专有服务器dedicated server)或转发服务请求(共享服务器模式shared server).如果监听器知道多于一个实例提供所请求的服务,则可能会根据客户端与服务器端相关配置将请求定位到较低负载的

listener.ora,tnsnames.ora中一个空格的威力

最近几天被网络监听配置搞得焦头烂额,有时候配置没问题,有时候就出莫名其妙的问题,今天专门花时间总结了一下,希望对大家有所帮助. listener.ora,tnsnames.ora有时候没有netca,netmgr这样的图形工具来创建的时候,只能手工来做,手工做的时候会有一些格式的问题,多加一个空格,或者少一个空格,就会有不同的结果. 案例一 下面是一个监听的基本配置,我故意在前面多加了一个空格(黄色标记所示).  LISTE1=   (DESCRIPTION=     (ADDRESS_LIST

oracle双机热备,hibernate的配置以及listener.ora和tnsname.ora的配置

问题描述 oracle双机热备一台IP:172.16.0.1,虚拟ip:10.10.10.10.另一台IP:172.16.0.2,虚拟IP:10.10.10.11.请问:listener.ora和tsnnames.ora应该如何配置,以及hibernate如何配置.高手请赐教.调好立刻给分. 解决方案 解决方案二:关注....

Oracle环境变量、监听listener.ora、tnsnames.ora、sqlnet.ora配置

Oracle环境变量.监听listener.ora.tnsnames.ora.sqlnet.ora配置 点击(此处)折叠或打开 NLS_DATE_FORMAT=YYYY-MM-DD HH24:mi:ss NLS_LANG=AMERICAN_CHINA.ZHS16GBK ORACLE10G=D:\Program files\app\oracle\product\10.2.0\db_1 ORACLE11G=D:\Program files\app\oracle\product\11.2.0.1\db

oracle的sqlnet.ora , tnsnames.ora , Listener.ora 文件的作用(转)

oracle网络配置三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora ,都是放在$ORACLE_HOME/network/admin目录下.1. sqlnet.ora-----作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串.例如我们客户端输入sqlplus sys/oracle@orcl假如我的sqlnet.ora是下面这个样子SQLNET.AUTHENTICATION_SERVIC

listener.ora中PLSExtPro 和ExtProc的作用(转)

默认安装时,会安装一个PL/SQL外部程序(ExtProc)条目在listener.ora中,是oracle为调用外部程序默认配置的监听,它的名字通常是ExtProc或PLSExtProc,但一般不会使用它,可以直接从listener.ora中将这项移除,因为对ExtProc已经有多种攻击手段了,在不使用外部程序时,oracle也是建议删除的. PLSExtPro 是pl/sql   external  procdure 的意思,就是在pl/sql中调用外部语句,如c,java写的过程. 现在,

Oracle的网络三大配置文件(sqlnet.ora、tnsnames.ora、listener.ora)

Oracle的网络三大配置文件(sqlnet.ora.tnsnames.ora.listener.ora)   blog文档结构图: 1  说明 为了使得外部进程能够访问Oracle 数据库则必须配置Oracle 网络服务器环境配置, Oracle 网络服务器环境是通过配置listener.ora .sqlnet.ora 和 tnsnames.ora 共三个文件来进行的.由于oracle数据库是一个客户端服务器的软件,所以,首先需要接收来自客户端的连接请求,服务器就必须配置监听器:其次,客户端要