ORA-12516 TNS 监听程序无法找到匹配协议栈的可用句柄

合集下载

Oracle 客户端连接服务器常见问题

Oracle 客户端连接服务器常见问题

Oracle 客户端连接服务器常见问题之今天安装软件一直在测试链接不能通过,出现ORA-12154: TNS: could not resolve service name,后来才发现是tnsnames.ora中有误。

查找网上的资料,记录下来。

要排除客户端与服务器端的连接问题,首先检查客户端配置是否正确(客户端配置必须与数据库服务器端监听配置一致),再根据错误提示解决。

下面列出几种常见的连接问题:1、ORA-12541: TNS:没有监听器显而易见,服务器端的监听器没有启动,另外检查客户端IP地址或端口填写是否正确。

启动监听器:$ lsnrctl start或C:\lsnrctl start2、ORA-12500: TNS:监听程序无法启动专用服务器进程对于Windows而言,没有启动Oracle实例服务。

启动实例服务:C:\oradim –startup -sid myoracle3、ORA-12535: TNS:操作超时出现这个问题的原因很多,但主要跟网络有关。

解决这个问题,首先检查客户端与服务端的网络是否畅通,如果网络连通,则检查两端的防火墙是否阻挡了连接。

4、ORA-12154: TNS:无法处理服务名检查输入的服务名与配置的服务名是否一致。

另外注意生成的本地服务名文件(Windows下如D:\oracle\ora92\network\admin\tnsnames.ora,Linux/Unix下$ORACLE_HOME/network/admin/tnsnames.ora)里每项服务的首行服务名称前不能有空格。

5、ORA-12514: TNS:监听进程不能解析在连接描述符中给出的 SERVICE_NAME打开Net Manager,选中服务名称,检查服务标识栏里的服务名输入是否正确。

该服务名必须与服务器端监听器配置的全局数据库名一致。

6、Windows下启动监听服务提示找不到路径用命令或在服务窗口中启动监听提示找不到路径,或监听服务启动异常。

oracle常见错误及代码

oracle常见错误及代码

1、ORA-12541:TNS:没有监听器原因:没有启动监听器或者监听器损坏。

若是前者,使用命令net start OracleOraH ome10gTNSListener(名字可能有出入)即可;如果是后者,则使用“Net Configuration Assistant”工具向导之“监听程序配置”增加一个监听器即可(基本不用写任何信息,一路O K。

在添加之前可能需要把所有的监听器先删!)2、ORA-12500:TNS:监听程序无法启动专用服务器进程或ORA-12560:TNS:协议适配器错误原因:ORACLE的数据库服务没有启动。

使用命令net start ORACLESERVICEORA DB(ORADB为数据库名字)即可。

如果仍没有解决,请继续向下看。

3、如果数据库服务启动失败,则很有可能是其注册表项值损坏,最好的做法是以下两步:1)ORADIM -DELETE -SID oradb 删除数据库服务项2)ORADIM -NEW -SID oradb 新增数据库服务项注:这个过程中如果出错,就重启计算机!4、ORA-12154:TNS:能解析服务名原因:ORACLE的网络服务名没有正确配置。

请使用“Net8 Configuration Assistan t”工具向导之“本地网络服务名配置”配置TNS即可。

如果仍没有解决,请继续向下看。

5、ORA-1034 :TNS:ORACLE不可用原因:ORACLE的数据库服务正确启动,但是数据库没有打开!使用命令:1)svrmgrl 启动服务管理器2)connect internal 以internal身份登陆3)startup 打开数据库6、ORA-12560:TNS:协议适配器错误(顽固性的)原因:未知。

解决:必杀技--打开“Windows任务管理器”,杀死ORACLE.exe及ORADIM.exe进程,书写自己的ora_startup.bat,执行之!PS:1、ora_startup.bat:net start OracleOraHome81TNSListenernet start ORACLESERVICEORADBsvrmgrl 一般情况下不用,不过有时少不了它的,具体步骤见第5步。

讲解Oracle数据库TNS常见错误的解决方法

讲解Oracle数据库TNS常见错误的解决方法

讲解Oracle数据库TNS常见错误的解决方法育龙网WWW.CHINA-B.C0M 2009年08月13日来源:互联网育龙网核心提示: 1、ORA-12541:TNS:没有监听器原因:没有启动监听器或者监听器损坏。

若是前者,使用命令net start OracleOraHome10gTNSListener即可;1、ORA-12541:TNS:没有监听器因:没有启动监听器或者监听器损坏。

若是前者,使用命令net start OracleOraHome10gTNSListener即可;如果是后者,则使用“Net Configuration Assistant”工具向导之“监听程序配置”增加一个监听器即可2、ORA-12500:TNS:监听程序无法启动专用进程或ORA-12560:TNS:协议适配器错误因:ORACLE的服务没有启动。

使用命令net start ORACLESERVICEORADB即可。

如果仍没有解决,请继续向下看。

3、如果数据库服务启动失败,则很有可能是其项值损坏,最好的做法是以下两步:1)ORADIM -DELETE -SID oradb 删除数据库服务项2)ORADIM -NEW -SID oradb 新增数据库服务项注:这个过程中如果出错,就重启计算机!4、ORA-12154:TNS:能解析服务名因:ORACLE的网络服务名没有正确配置。

请使用“Net8 Configuration Assistant”工具向导之“本地网络服务名配置”配置TNS即可。

如果仍没有解决,请继续向下看。

5、ORA-1034 :TNS:ORACLE不可用因:ORACLE的数据库服务正确启动,但是数据库没有打开!使用命令:1)svrmgrl 启动服务管理器2)connect internal 以internal身份登陆3)startup 打开数据库6、ORA-12560:TNS:协议适配器错误因:未知。

解决:必杀技打开“Windows任务管理器”,杀死ORACLE.exe及ORADIM.exe进程,书写自己的ora_startup.bat,执行之!PS:1、ora_startup.bat:net start OracleOraHome81TNSListenernet start ORACLESERVICEORADBsvrmgrl 一般情况下不用,不过有时少不了它的,具体步骤见第5步。

ORA-12516 解决方法

ORA-12516 解决方法

起初,我也没有太在意,的确是因为这两天公司内部网络不太正常,ping物理开发库延时比较严重,偶有timed out现象,就一直以为是网络的问题了。直到中午的时候,同事说网络基本正常了,用PL/SQL Developer客户端工具连数据库的时候报出Ora-12516的错误,这才引起了我的注意!
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
logmnr_max_persistent_sessions integer 1
sessions integer 60
shared_server_sessions integer
gcs_server_processes integer 0
job_queue_processes integer 10
log_archive_max_processes integer 2
这样,问题得到了基本的解决。
事后,又出现了一些不痛不痒的问题。
这不,年后简单记录下发生在这个春节前的种种问题,及解决问题的方法:
① 会话数不够用,导致Ora-12516的错误。解决方法,加大process初始化参数,或者通知修改应用程序中的连接数;
② 通过在数据库端配置profile来控制每个会话的活动时间,过期由数据库自动断开会话;
logmnr_max_persistent_sessions integer 1
sessions integer 60
shared_server_sessions integer

ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务_监听程序不支持服务

ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务_监听程序不支持服务

ORA-12514:TNS:监听程序当前⽆法识别连接描述符中请求的服务_监听程序不⽀持服务今天⼤黄蜂同学重启虚拟机之后再链接数据库就报了这个错,先查看了⼀下监听的状态C:> lsnrctl status... ...服务摘要..服务 "CLRExtProc" 包含 1 个实例。

实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...命令执⾏成功监听中的服务并没有数据库实例orcl,检查了⼀下listener.ora⽂件,配置并没有问题,怀疑是数据库启动时出了问题,导致监听并没有找到数据库服务,为了连上数据库,在listener.ora⽂件中强制添加orcl的监听SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = CLRExtProc)(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)(PROGRAM = extproc)(ENVS = "EXTPROC_DLLS=ONLY:D:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll"))# 以下是添加部分(SID_DESC =(GLOBAL_DBNAME = ORCL)(ORACLE_HOME = D:\app\Administrator\product\11.2.0\dbhome_1)(SID_NAME = ORCL)))然后重启监听,让监听可以识别orcl服务C:> lsnrctl stop... ...C:> lsnrctl start... ...服务 "ORCL" 包含 1 个实例。

实例 "ORCL", 状态 UNKNOWN, 包含此服务的 1 个处理程序...命令执⾏成功然后连接Oracle数据库,尝试重启数据库C:> sqlplus sys/sys@127.0.0.1/orcl as sysdba... ...SQL> shutdown immediate;ORA-01034 - Oracle not availableORA-27101 - shared memory realm does not exist⽹上⼤部分说是ORACL_HOME或ORACLE_SID问题,可惜并不适⽤,后找到⼀篇说查看⽇志,⽇志路径位于ORACLE_HOME\database\ORADIM.LOG,⽇志中找到数据库启动时的报错信息如下:Tue Jun 21 15:10:17 2016D:\app\Administrator\product\11.2.0\dbhome_1\bin\oradim.exe -startup -sid orcl -usrpwd * -log oradim.log -nocheck 0Tue Jun 21 15:10:33 2016ORA-00847: MEMORY_TARGET/MEMORY_MAX_TARGET and LOCK_SGA cannot be set together继续查询报错信息ORA-00847,看起来是数据库系统参数设置的问题,先把pfile导出看⼀下SQL> create pfile from spfile;创建了之后宝宝傻眼了,不在ORACLE_HOME/dbs⾥啊!后来经查才知原来Windows下pfile的默认⽣成路径和linux下不⼀样,位于$ORACLE_BASE\admin\db_name\pfile然后打开pfile注释掉MEMORY_TARGET参数的设置...# memory_target=898629632...然后从pfile启动数据库,根据pfile⽣成spfileSQL> startup pfile='D:\app\Administrator\admin\orcl\pfile\init.ora.115201614250';SQL> create spfile from pfile='D:\app\Administrator\admin\orcl\pfile\init.ora.115201614250';然后便可以重启数据库了,最后将listener.ora还原,重启服务器,再查看监听状态就可以看到orcl服务正常了C:> lsnrctl status... ...服务摘要..服务 "CLRExtProc" 包含 1 个实例。

oracle数据库常见错误

oracle数据库常见错误

3
Oracle 常见错误
5 、 ORA - 1034 : TNS : ORACLE 不可用 原因: ORACLE 的数据库服务正确启动,但是数据库没有打开! 使用命令: 1 ) svrmgrl 启动服务管理器 2 ) connect internal 以 internal 身份登陆 3 ) startup 打开数据库 6 、 ORA - 12560 : TNS :协议适配器错误(顽固性的) 原因:未知。 解决:打开“ Windows 任务管理器”,杀死 ORACLE.exe 及 ORADIM.exe 进程,书写自己的 ora_startup.bat 并执行。
Oracle SQL 开发基础
—— Orace 数据库基础
1
Oracle 常见错误
1 、 ORA - 12541 : TNS :没有监听器
原因:没有启动监听器或者监听器损坏。如果是前者,使用命令
net start OracleOraHome81TNSListener (名字可能有出入)即可 ;如果是后者,则使用“ Net8 Configuration Assistant” 工具向 导之“监听程序配置”增加一个监听器即可(基本不用写任何信息 ,一路 OK 。在添加之前可能需要把所有的监听器先删除!) 2 、 ORA - 12500 : TNS :监听程序无法启动专用服务器进程 或 ORA - 12560 : TNS :协议适配器错误
5
Oracle 常见错误
8 、 ORA-01652:unable to extend temp segment by num in tablespace name
原因: ORACLE 临时段表空间不足,因为 ORACLE 总是尽量分配连续空间,一但没有足够的可 分配空间或者分配不连续就会出现上述的现象。 解决方法:由于 ORACLE 将表空间作为逻辑结构 - 单元,而表空间的物理结构是数据文件, 数据文件在磁盘上物理地创建,表空间的所有对象也存在于磁盘上,为了给表空间增加空间,就 必须增加数据文件。先查看一下指定表空间的可用空间,使用视图 SYS.DBA_FREE_SPACE ,视图中 每条记录代表可用空间的碎片大小: SQL>;Select file_id,block_id,blocks,bytes from sys.dba_free_space where tablespace_na me=’’; 返回的信息可初步确定可用空间的最大块,看一下它是否小于错误信息中提到的尺寸,再查 看一下缺省的表空间参数: SQL>;SELECT INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,PCT_INCREASE FROM SYS.DBA_TABLESPA CES WHERE TABLESPACE_NAME=name; 通过下面的 SQL 命令修改临时段表空间的缺省存储值: SQL>;ALTER TABLESPACE name DEFAULT STORAGE (INITIAL XXX NEXT YYY); 适当增大缺省值的大小有可能解决出现的错误问题,也可以通过修改用户的临时表空间大小 来解决这个问题: SQL>;ALTER USER username TEMPORARY TABLESPACE new_tablespace_name; 使用 ALTER TABLESPACE 命令,一但完成,所增加的空间就可使用,无需退出数据库或使表空 间脱机,但要注意,一旦添加了数据文件,就不能再删除它,若要删除,就要删除表空间。

处理Oracle监听程序当前无法识别连接描述符中请求的服务异常(ORA-12514)

处理Oracle监听程序当前无法识别连接描述符中请求的服务异常(ORA-12514)

处理Oracle监听程序当前⽆法识别连接描述符中请求的服务异常(ORA-12514)最近⼏天刚学习oracle11g,安装完成之后直接使⽤,今天⽤PLSQL链接突然报错,报错代码为:ORA-12514:监听程序当前⽆法识别连接描述符中请求的服务。

⽹上查了这种异常的解决办法,特在此记录。

出现该问题⼀般有两种情况。

第⼀种是在你安装完之后未配置监听(在此我暂时忘记安装完之后有没有配置监听);第⼆种是之前配置了监听但是系统未写⼊到listener.ora⽂件中(在此我暂未搞明⽩什么时候写⼊),所以只需要在该⽂件中写⼊配置参数就可以了。

解决办法:1、打开listener.ora⽂件找到listener.ora⽂件的存放位置并打开。

我本机⽂件⽬录在D:\app\iLife1988\product\11.2.0\dbhome_1\NETWORK/ADMIN下。

该⽂件须根据⾃⼰安装⽬录的实际情况找。

(注:Oracle10g与11g的⽬录好像不太⼀样)。

⽂件内容如下图:从上图中我们可以看出我已经配置过监听了,但是报错是由于Oracle的地址没有写到SID_DESC中,在此我们将此写⼊就可以了。

2、修改listener.ora⽂件将以下内容追加到该⽂件的SID_LIST节点下(SID_DESC =(GLOBAL_DBNAME = orcl)(ORACLE_HOME = D:\app\iLife1988\product\11.2.0\dbhome_1)(SID_NAME = orcl))注:标红的部分根据⾃⼰机器安装⽬录修改3、我在此本机修改完毕后,总是提⽰我不能保存,提⽰说该⽂件已在别的地⽅打开。

于是我另存⼀份,然后直接将原来的⽂件给覆盖掉。

修改完成之后如下图所⽰:4、重启监听服务。

OK搞定!!以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

ORA-12505:TNS:监听程序当前无法识别连接描述符中所给出的SID等错误解决方法

ORA-12505:TNS:监听程序当前无法识别连接描述符中所给出的SID等错误解决方法

ORA-12505:TNS:监听程序当前⽆法识别连接描述符中所给出的SID等错误解决⽅法程序连接orarle报ORA-12505错误⼀、异常{ORA-12505, TNS:listener does not currently know of SID given in connect descriptorThe Connection descriptor used by the client was:10.190.121.95:1521:sxzhdb}⼆、查询{ORA-12505:TNS: 监听程序当前⽆法识别连接描述符中所给出的 SIDSID:是⼀个数据库的唯⼀标识符!是建⽴⼀个数据库时系统⾃动赋予的⼀个初始ID,SID主要⽤于在⼀些DBA操作以及与操作系统交互,从操作系统的⾓度访问实例名,必须通过ORACLE_SID,且它在注册表中也是存在的.ORACLE_SID就是Oracle System Identifier.在Oracle系统中,ORACLE_SID以环境变量的形式出现,当Oracle实例启动时,操作系统上fork 的进程必须通过这个SID将实例与其他实例区分开来,这就是SID的作⽤。

}三、修改{将原来的:jdbc:oracle:thin:@10.190.121.95:1521:sxzhdb改为:jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.190.121.95)(PORT=1521)) (LOAD_BALANCE=yes))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=sxzhdb)))后,程序连接数据库OK。

------最后将:url简化为:jdbc:oracle:thin:@(description=(address=(protocol=tcp)(port=1521)(host=10.190.121.95))(connect_data= (service_name=sxzhdb)))----其中address的三个属性protocol,port,host顺序可以变化,⼤⼩写均可以。

ORA-12516:

ORA-12516:

ORA-12516: TNS:监听程序找不到符合协议堆栈要求的可⽤处理程错误解决⽅案今天在测试的时候使⽤PL/SQL DEVELOPER 连接数据的时候出现了错误,ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可⽤处理程错误解决⽅案如下:--⾸先检查process和session的使⽤情况,在sqlplus⾥⾯查看。

以sys最⾼权限登录,执⾏如下语句:SQL> show parameter processesNAME TYPE VALUE------------------------------------ ----------- ------------------------------aq_tm_processes integer 0db_writer_processes integer 6gcs_server_processes integer 0job_queue_processes integer 0log_archive_max_processes integer 2processes integer 150SQL> select count(*) from v$process;COUNT(*)----------147--明显process已经⼏乎达到了顶峰。

SQL> show parameter sessionNAME TYPE VALUE------------------------------------ ----------- ------------------------------java_max_sessionspace_size integer 0java_soft_sessionspace_limit integer 0license_max_sessions integer 0license_sessions_warning integer 0logmnr_max_persistent_sessions integer 1session_cached_cursors integer 20session_max_open_files integer 10sessions integer 160shared_server_sessions integerSQL>SQL> select count(*) from v$session;COUNT(*)----------153--同样⼏乎达到顶峰。

Oracle数据库监听配置与报错解决方法

Oracle数据库监听配置与报错解决方法

Oracle数据库监听配置与报错解决方法作者:范美卉张俊萌来源:《电脑知识与技术》2023年第24期关键词:监听日志;Oracle数据库;监听器中图分类号:TP311 文献标识码:A文章编号:1009-3044(2023)24-0073-030 引言想要使用Oracle数据库,首先需要用户与数据库建立连接,而怎么在两者之间建立连接,Oracle使用了一个叫网络服务的概念,从而客户端或者中间层的应用服务器与数据库服务器能建立连接,并能在两者之间传递数据。

在客户端,网络服务作为后台运行的进程,在数据库服务器端,网络服务则通过一个叫“监听器”的组件接收来自客户端的连接请求。

监听器(LIS⁃TENER)是位于服务器端的、独立运行的一个后台进程,运行在服务器端,但独立于数据库服务器单独运行,在数据库没有启动的时候,监听器也能独立运行。

1 Oracle 数据库监听配置Oracle监听负责监听客户端传入的连接请求,同时也负责调整服务器的连接负荷。

客户端试图连接数据库服务器时,监听器将接收到客户端的请求并将其传递给服务器进行处理。

一旦客户端与服务器建立连接,它们之后将直接进行通信,而不再需要监听器的介入,监听器将保持空闲状态。

dbca建库后一般会有默认配置好的监听,默认服务端口是1521,通常一个库一个监听就足够,但如果需要处理大量并发请求数,就可能需要配置多个监听,非默认监听的端口号设置成大于1024,不同监听之间服务名和端口号不能一样[1]。

配置监听器有两种方法。

1.1 通过图形界面工具Net Manager如图1所示,选中图中的Oracle Net配置下的本地树形目录中的监听程序项,再点击左侧绿色的“+”按钮添加监听程序,点击监听程序目录,新加的监听器名称默认为LISTENER。

选中该名称,窗口右侧栏的下拉选项中含有四个选项:一般参数、监听位置、数据库服务、其他服务,选中“监听位置”,点击添加地址按钮。

在出现的网络地址栏的协议下拉选项中选中“TCP/IP”,主机文本框中输入主机名称或IP地址(如果主机即用作服务端也作为客户端,输入两项之一均有效;如果主机作为服务端并需要通过网络连接,建议输入IP地址),端口文本框中输入数字端口,默认是1521,也可以自定义任意有效数字端口[2]。

ORA-12516TNS:监听程序找不到符合协议堆栈要求的可用处理程序

ORA-12516TNS:监听程序找不到符合协议堆栈要求的可用处理程序

ORA-12516TNS:监听程序找不到符合协议堆栈要求的可⽤处理
程序
问题场景:
之前有⼀个库⼀直作为测试⽤(部门A),昨天晚上因另⼀个测试部门(部门B)过来测试程序,在这库上建⽴了两个⽤户并导⼊了数据,今天下午突然接这两个部门⼈员电话说数据库⼀会掉⼀会⼜能连接上。

当时感觉挻奇怪的,因为10分钟前我还⽤其他⽤户连接过这个库。

结果当通过客户端测试就报ORA-12516 TNS: 监听程序找不到符合协议堆栈要求的可⽤处理程序。

看到这个错误时并没有反映过来到底是哪⾥出错了,接着部门A的负责⼈就叫我把部门B数据导出来,让他们重新找台机器去测试。

后⾯我在服务器上导这两个⽤户的数据时也是直接报错,接着我⽤那两个⽤户之⼀登陆数据库时,看到⽐较明显的错误信息:数据库的最⼤进程数据是150,到这⾥就知道是什么原因引起的?
解决⽅法:
1、通过sysdba⽤户登陆
2、查看当前进程数
select count(*) from v$processes
看到149个进程
show parameter processes的值为150(当时数据库是另外⼀个⼈建⽴的)
3、更改进程数
alter system set processees=500 scope=spfile
4、关闭数据库
shutdown immediate
5、启动数据库使配置⽣效
startup;。

解决过程如下

解决过程如下

故障现象:网站访问报错ORA-12516: TNS: 监听程序无法找到匹配协议栈的可用句柄由此网站服务器sqlplus连接报相同错误C:\Documents and Settings\Administrator>sqlplus "sys/orac1e@SEARCH_sync1 as sy dba"SQL*Plus: Release 9.2.0.1.0 - Production on 星期三8月31 12:50:37 2011Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.ERROR:ORA-12516: TNS: 监听程序无法找到匹配协议栈的可用句柄ORA-12516: TNS: 监听程序无法找到匹配协议栈的可用句柄.解决过程如下:1.在服务器端以dba身份登入.2.查看当前的session数量,及系统默认的最大session数.SQL> select count(*) from v$session;COUNT(*)----------147SQL> show parameter processesNAME TYPE V ALUE------------------------------------ ----------- ----------aq_tm_processes integer 0db_writer_processes integer 1job_queue_processes integer 0log_archive_max_processes integer 2processes integer 150SQL> show parameter sessionsNAME TYPE V ALUE------------------------------------ ----------- ----------java_max_sessionspace_size integer 0java_soft_sessionspace_limit integer 0license_max_sessions integer 0license_sessions_warning integer 0logmnr_max_persistent_sessions integer 1mts_sessions integer 0sessions integer 170shared_server_sessions integer 03.修改processes及sessions的值:SQL> show parameter spfile;NAME TYPE V ALUE------------------------------------ ----------- ------------------------------spfile string %ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORASQL>alter system set processes=200 scope=spfile;SQL>alter system set sessions=200 scope=spfile;4.查看当前的processes及sessions发现并无改变,故重启数据库:SQL>shutdown immediateSQL>startupSQL> show parameter processesNAME TYPE V ALUE------------------------------------ ----------- ----------aq_tm_processes integer 0db_writer_processes integer 1job_queue_processes integer 0log_archive_max_processes integer 2processes integer 200SQL> show parameter sessionsNAME TYPE V ALUE------------------------------------ ----------- ----------java_max_sessionspace_size integer 0java_soft_sessionspace_limit integer 0license_max_sessions integer 0license_sessions_warning integer 0logmnr_max_persistent_sessions integer 1mts_sessions integer 0sessions integer 225shared_server_sessions integer 05.在客户端再次利用pl/sql dev连接数据库,测试可以正常连接.没有再出现错误提示.说明:ORACLE的连接数(sessions)与其参数文件中的进程数(processes)有关,它们有如下的关系式: sessions=1.1*processes+5曾经用过命令客户端运行1、tnsping SEARCH_sync1服务器端2、sqlplus / as sysdbaselect status from v$instance //查看状态是否为open3、sqlplus "用户/密码@SEARCH_sync1 as sysdba"。

oracle解决监听问题导致连接失败的的三种方法

oracle解决监听问题导致连接失败的的三种方法

一.使用netca命令适用范围:从服务中能看到监听服务是启动状态,但还是连接不上数据库,报ORA-12505,ORA-12518,TNS-04406等错误解决方法:1.运行-cmd打开dos窗口,输入netca,删除现有监听2.进入到oracle_home\bin下输入netca,重建监听二.手动修改监听文件适用范围:当方法一失效时解决方法:进入oracle_home\network\admin\下,编辑listener.ora文件为如下格式并保存:SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME =”路径”)(PROGRAM = extproc))(SID_DESC =(SID_NAME = “SID”)(ORACLE_HOME = “路径”)(PROGRAM = “SID”)))LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = “主机ip”)(PORT = 1521))(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))))三.修改监听文件为9i格式适用范围:当方法一和二都失效时解决方法: 进入oracle_home\network\admin\下,编辑listener.ora文件为如下格式并保存:SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = “路径”)(PROGRAM = extproc))(SID_DESC =(SID_NAME = “SID”)(ORACLE_HOME = “路径”)(GLOBAL_DBNAME = “SID”)))LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))(ADDRESS = (PROTOCOL = TCP)(HOST = “主机ip”)(PORT = 1521)) ))。

Oracle连接数太多报错-ORA-12516错误

Oracle连接数太多报错-ORA-12516错误

Oracle ORA-12516 错误解析(2007-05-09 17:20:51)转载分类:Oracle数据库五一期间,负责的内蒙项目的数据库连接的时候突然出现“ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程”的异常,很是郁闷!!可看看Tomcat还在正常连接着,可PL/SQL怎么着就登录不了,报这个异常,一时之间把我吓坏了,还以为数据库又出现什么问题了!!于是就赶紧去网上查查。

得到了一系列的答案,其中下面这个我还是比较认可的。

ORA-12516:TNS:监听程序无法找到匹配的信息栈的可用句柄错误ORA-12520:解决方法:查了一下,原来是以前设置共享服务器时SESSION设了170,PROCESSES设了150,共享服务器时就肯定够用,专用服务器就不行了,后来改为SESSION设555,PROCESSES设500。

重启数据库,正常了。

然后又马上再查了,PROCESSES已经达到140了,奇怪,不可能有这么多人,再查SESSION发现只有30多,想了一下,哦!原来是共享服务器SHARED_SERVER设了100,就将它改成了10。

解决方法:加大PROCESSES后来,我把数据库给停了,但并没有按照上面的说法去增加PROCESSES,重新启动之后,连接就正常了,个人认为是访问量达到了设置的最大限,不过上面的解决方法是可以解决的,并且也比较彻底。

如果大家以后再遇到这种问题,可以尝试着把PROCESSES放大来解决这个问题!!ORA-12516错误的处理分类:数据库Oracle技术2007-06-08 11:47 5734人阅读评论(1) 收藏举报解决过程:1、查看当前会话数、processes和sessions值,发现session数和2个参数的值已经非常逼近SQL*Plus: Release 10.2.0.1.0- Production on星期一 10月915:50:21 2006Copyright (c) 1982, 2005, Oracle. All rights reserv ed.SQL> conn /as sysdba已连接。

ora-12516 tns listener could not find available handler with matching protocol

ora-12516 tns listener could not find available handler with matching protocol

否则会报错误ORA-27101 Shared memory realm does not exist。使用UltraEdit或者EditPlus之类的可以编辑二进制文件的编辑器打开此文件(直接编辑二进制文件),然后在Windows服务中重新启动Oracle服务器即可。
方法3.通过Oracle Enterprise Manager Console在图形化管理器中修改
SQL> alter system set processes=600 scope=spfile;
System altered.
SQL>
方法2.修改Oracle配置文件
值得注意的是,修改SPFILEORCL.ORA文件中的processes的值,在Oralce的不同版本中在所区别。Oracle 8.1.5中是init.ora文件,在Oracle 9i及更高版本中修改init.ora文件是无效的,这个文件由于是一个二进制的文件,不能直接使用notepad此类的编辑器打开。
aq_tm_processes integer 0
db_writer_processes integer 1
gcs_server_processes integer 0
今天EPP(Enterprise Product Protal)系统间客户端连线出现如题ORA-1251器和DB并没有问题后,即判断为客户端连接问题;其二,查找ORA-12516错误引起的原因,发现为Processes数量导致,Oacle的sessions和processes的关系是sessions=1.1*processes + 5.这样的话,增加Processes的数量即可解决.最后的解决方案见下文所示:
job_queue_processes integer 10

Oracle_ORA一些错误整理

Oracle_ORA一些错误整理

1、ORA-12560: TNS: 协议适配器错误场景:在cmd窗口输入:sqlplus "/as sysdba"想打开数据库时报的错;原因:没有启动Oracle服务器;解决:WIN+R,跳出运行窗口,输入"services.msc",打开服务窗口;找到OracleServiceORACLE服务,查看是否为启动,右键启动即可。

2、ORA-12541:TNS:no listener场景:用pl/sql developer客户端连接数据库;原因:监听器没有启动;解决:打开服务,启动OracleOraDB12Home1TNSListener。

3、ORA-28547:connection to server failed,probable Oracle Net admin error 场景:将监听器配置文件:listener.ora中的SID_NAME 更改后导致的;原因:多数是因为navicat本地的OCI版本与Oracle服务器器不符造成的;解决:将SID_NAME修改为原来的名称。

4、ORA-01438因为插入的数值大于所在的列的最大允许精度。

5、ORA-12899字符值大于此列指定的允许精度6、ORA-00942:表或视图不存在表或试图不存在7、ORA-01400: 无法将NULL 插入("SCOTT"."ITEMS"."ITEMNAME")因向表中插入数据时,主键/约束的列为空。

8、ORA-00001: 违反唯一约束条件(SCOTT.PK_ITEMS)因想表中插入数据时,某列设置了唯一约束,插入的值,表中已经存在了。

9、ORA-01017: 用户名/口令无效; 登录被拒绝有可能用户名或者密码错误10、ORA-01507有可能是关系数据库后,启动的时候没有加载数据库,如:startup nomount就是启动实例不加载数据库的11、ORA-01034: ORACLE not available数据库处于关闭状态。

解决OracleXE报错ORA-12516(oracle回话数超出限制)

解决OracleXE报错ORA-12516(oracle回话数超出限制)

解决OracleXE报错ORA-12516(oracle回话数超出限制)本地安装的oracleXEUniv—oracle特别版,免费⽤户可以⾃由使⽤,但有连接数量和存储限制。

最近遇到⼀个问题,当我的SSM项⽬连接本地数据库oracleXE后,我的navicat再连接时就会报错ORA-12516,就是oracle的会话数超出了限制,⼀般都是由于多次connect建⽴多个连接会话引起的,最后导致oracle⽆法响应新的请求,从⽽出现ora-12516错误。

于是上⽹查找解决办法,下⾯⽅⾯亲测成功。

select count(*) from v$process; --取得数据库⽬前的进程数select value from v$parameter where name ='processes'; --取得进程数的上限alter system set session_cached_cursors=200 scope=spfile;alter system set session_max_open_files=200 scope=spfile;alter system set sessions=20 scope=spfile;alter system set license_max_sessions=200 scope=spfile;alter system set license_sessions_warning=200 scope=spfile;alter system set processes=200 scope=spfile;select count(*) from v$process; --取得数据库⽬前的进程数开始执⾏时,结果为21连接数量:select value from v$parameter where name = 'processes'; --取得进程数的上限开始执⾏上述语句后,结果为40执⾏上述修改后,重启oracle实例:1. 如安装于 Windows 上,先运⾏ net stop oracleservicexe,再运⾏ net start oracleservicexe 即可。

解决ORATNS监听程序当前无法识别连接描述符中请求的服务

解决ORATNS监听程序当前无法识别连接描述符中请求的服务

解决ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务错误原因分析:检查监听,发现未设置对服务名的监听(默认安装后不自动设置监听)当你的tnsnames.ora 文件中的SERVICE_NAME没有向你想要连接的数据库服务器中的监听器注册的时候,就会出现这个错误信息。

如果你的客户端配置没有发生变化,那么数据库服务器配置就必须进行改变,否则你用来进行连接的SERVICE_NAME就永远不会注册到监听器。

注册到监听器的SERVICE_NAME是由数据库实例的service_names参数来决定的。

解决办法:1. 打开文件"OracleHome/network/admin/listener.ora" ,你将看到如下的内容SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)(PROGRAM = extproc)))2. 将下面的语句添加到上面的语句中去。

(SID_DESC =(GLOBAL_DBNAME = ORCL2)(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)(SID_NAME = ORCL2))3. 文件的内容则变成了如下所示SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)(PROGRAM = extproc))(SID_DESC =(GLOBAL_DBNAME = ORCL2)(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)(SID_NAME = ORCL2)))4. 保存文件,然后重新启动监听服务就可以了!问题解决主动跟被动的关系1.是让listener主动加载服务,原因是添加(SID_DESC =(SID_NAME = orcl)(ORACLE_HOME = /data/cache1/oracleDB/oracle/product/10.2.0/db_2) )后,在使用lsnrctl start监听程序时会将listene的服务注册到进程监视器(pmon)中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

使用PL/SQL Developer 数据库远程客户端连接程序连接数据库:
错误信息:
ORA-12516: TNS: 监听程序无法找到匹配协议栈的可用句柄.
TNS-12516 TNS:listener could not find available handler with matching protocol stack
导致原因可能为:
1.一般是由于数据库的当前会话数不满足造成的,相关的参数有两个:processes和sessions
(1)首先查看当前这两个参数的值
sql>conn / as sysdba
sql>select count(*) from v$session; 从这里可以看出当前的session数
sql>show parameter processes; 从输出的信息可以看到当前数据库中参数processes 的值
sql>show parameter sessions; 从输出的信息可以看到当前数据库中参数sessions
的值
这二者的关系是:sessions=(1.1*processes+5)
(2)修改这两个参数
alter system set processes=300 scope=spfile;
alter system set sessions=335 scope=spfile;
(3)重新启动数据库服务,使这两个参数生效。

(4)如果数据库服务无法正常启动,则可能是solaris10系统参数seminfo_semmns设置的偏小,因为每个process会占用一个semmns,semmns调整后需要重新启动操作系统。

semmns的计算公式为:SEMMNS>processes+instance_processes+system processes=数据库参数processes的
值instance_processes=5(smon,pmon,dbwr,lgwr,arch)
2.可能是tnsnames.ora文件中的配置的"SERVICE_NAME ="和对应值(数据库名称)中间多了个空格,需要去掉之间的空格,好像有没有空格没有影响,已验证(可能有时候是这样引发ORA-12516)
3.如果做以上操作仍无法排除ORA-12516 ,需要做最后尝试:单独重启启动databasenameSeverice (databasename:是要连接目标数据库而引发ORA-12516 错误的目标数据库名称)
已尝试:有效
(4) listener.log日志太大引发的,listener.log日志记录了通过listener处理的网络请求信息,它包含客户端请求的时间,连接方式(专用或共享),连接程序,网络协议,主机名,网络端口号等信息,listener.log的文件内容没有太大意义,可以不让listener 写日志。

操作时:#在listener.ora文件最后加入一行:logging_listener=off。

相关文档
最新文档