ORACLE客户端监听配置错误
Oracle安装遇到INS-30131错误的解决方法
Oracle安装遇到INS-30131错误的解决⽅法需要学习SDE配置相关知识,其中Oracle数据库安装遇到错误INS-30131,虽然未能最终解决,但找到了初步的思路,记录下来给⼤家提供参考。
下⽂对很多知识的理解可能存在错误或不够精准,仅作参考。
软件:Oracle12cR1 版本:12.1.0.2系统:win10 版本:10.0.10240问题描述:配置SDE需注意:数据库服务端应与SDE统⼀,数据库客户端应与ArcMap统⼀。
安装数据库时遇到INS-30131错误,未能解决。
安装过程中先装数据库服务端,再装客户端。
其中11gR2版本服务端安装中,第⼆步选择跳过软件更新报INS-30131错误;12cR1版本服务端可顺利安装,随后安装客户端时第⼆步选择跳过软件更新报INS-30131错误。
如图选择“跳过软件更新(S)”,点击“下⼀步(N)”。
报错INS-30131,未能解决。
⽹上流传⽅法两种:其中⽅法2⽹上流传较⼴,有不少⼈表⽰成功解决问题。
11gR2版本的错误未尝试解决,对于12cR1版本尝试了以上两种⽅法,两种⽅法都可使客户端安装顺利完成。
但是对于⽅法1,最终⽹络服务名配置时报错,⼀般报“⽆监听程序”错误。
对于⽅法2⾃⼰遇到问题(这个问题应该不是普遍情况),系统原本就有名为C$的c盘共享⽂件夹。
右键停⽌名为C$的c盘共享⽂件夹后,(系统会提⽰即使删除当计算机重启时还会恢复)新建共享会提⽰C$已存在,⽆法创建。
重启计算机后系统原有C$共享⽂件夹⾃动恢复。
为了删除该共享⽂件夹并使其在系统重启时不恢复,采⽤以下⽅法:打开注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters⾥⾯有两条是控制共享⽂件夹在计算机重启时⾃动恢复的,为:AutoShareServer和AutoShareWks,这两条可能不存在。
oracle错误ORA-01017问题分析与解决方法
Oracle常见错误 ORA-01017通常表示用户名或密码不正确,但在您的情况下,问题可能与 Oracle 11g 客户端和 Oracle 19c 数据库之间的兼容性有关。
可能的原因用户名或密码错误:首先,确保输入的用户名和密码是正确的。
密码版本兼容性:Oracle 19c 默认使用更高版本的密码加密算法,而 Oracle 11g 客户端可能不支持。
数据库参数配置:某些数据库参数可能需要调整以支持旧版本客户端的连接。
解决方案1. 确认用户名和密码首先,确保您输入的用户名和密码是正确的,并且没有输入错误。
2. 检查密码案例敏感Oracle 11g 和 19c 在处理密码时可能有不同的大小写敏感。
确保密码的大小写与创建用户时设置的密码一致。
3. 调整密码版本兼容Oracle 19c 默认使用 12c 及以上版本的密码加密算法。
为了兼容旧版本客户端,可以调整数据库参数,使其支持旧版本的密码加密算法。
连接到 Oracle 19c 数据库实例:sqlplus / as sysdba检查当前的 SQLNET.ALLOWED_LOGON_VERSION_SERVER 参数:SHOW PARAMETER SQLNET.ALLOWED_LOGON_VERSION_SERVER;如果需要修改参数,可以编辑 sqlnet.ora 文件:vi $ORACLE_HOME/network/admin/sqlnet.ora添加或修改以下参数:SQLNET.ALLOWED_LOGON_VERSION_SERVER=11SQLNET.ALLOWED_LOGON_VERSION_CLIENT=11保存并关闭文件,然后重启数据库监听程序:lsnrctl stoplsnrctl start4. 重新设置用户密码重新设置用户密码可以确保密码使用兼容的加密算法。
连接到 Oracle 19c 数据库实例:sqlplus / as sysdba重新设置用户密码:ALTER USER <username> IDENTIFIED BY <new_password>;5. 检查和调整数据库参数某些数据库参数可能需要调整以支持旧版本客户端的连接。
ORA-12514:TNS:listenerdoesnotcurrentlyknowofs。。。
ORA-12514:TNS:listenerdoesnotcurrentlyknowofs。
1,登录报错如下:[oracle@oracle_yueworld admin]$ rlwrap sqlplus system/system51@st1SQL*Plus: Release 11.2.0.1.0 Production on Thu Dec 3 16:33:26 2015Copyright (c) 1982, 2009, Oracle. All rights reserved.ERROR:ORA-12514: TNS:listener does not currently know of service requested in connectdescriptor2,查看下lsnrctl状态,看是否是lsnrctl监听的问题[oracle@oracle_yueworld admin]$ lsnrctl statusLSNRCTL for Linux: Version 11.2.0.1.0 - Production on 03-DEC-2015 17:03:07Copyright (c) 1991, 2009, Oracle. All rights reserved.Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.121.51)(PORT=1521)))STATUS of the LISTENER------------------------Alias LISTENERVersion TNSLSNR for Linux: Version 11.2.0.1.0 - ProductionStart Date 03-DEC-2015 17:02:55Uptime 0 days 0 hr. 0 min. 11 secTrace Level offSecurity ON: Local OS AuthenticationSNMP OFFListener Parameter File /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.oraListener Log File /oracle/app/oracle/diag/tnslsnr/oracle_yueworld/listener/alert/log.xmlListening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.121.51)(PORT=1521)))The listener supports no servicesThe command completed successfully[oracle@oracle_yueworld admin]$[oracle@oracle_yueworld admin]$从中可以看出监听正常,但是The listener supports no services这个貌似是不识别service_name啊3,去查看下参数SQL> show parameter name;NAME TYPE VALUE------------------------------------ ----------- ------------------------------db_file_name_convert string /oracle/app/oracle/oradata/powerdes, /oracle/app/oracle/oradata/orcldb_name string orcldb_unique_name string stunqglobal_names boolean FALSEinstance_name string orcllock_name_space stringlog_file_name_convert stringservice_names string stunqSQL>看到db_name和db_unique_name以及service_names不⼀样4,解决⽅案在listener.ora⽂件⾥⾯添加SID_LIST_LISTENER,如下所⽰:作⽤:以下红⾊的模块是静态注册监听服务,⽅便客户端远程连接该数据库使⽤[oracle@oracle_yueworld admin]$ more listener.ora# listener.ora Network Configuration File: /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora# Generated by Oracle configuration tools.SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = stunq)(ORACLE_HOME = /oracle/app/oracle/product/11.2.0/dbhome_1)(SID_NAME = stunq)))LISTENER =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.121.51)(PORT = 1521)))ADR_BASE_LISTENER = /oracle/app/oracle[oracle@oracle_yueworld admin]$再重启lsnrctl服务:[oracle@oracle_yueworld admin]$ lsnrctl startLSNRCTL for Linux: Version 11.2.0.1.0 - Production on 03-DEC-2015 18:00:09Copyright (c) 1991, 2009, Oracle. All rights reserved.Starting /oracle/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait...TNSLSNR for Linux: Version 11.2.0.1.0 - ProductionSystem parameter file is /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.oraLog messages written to /oracle/app/oracle/diag/tnslsnr/oracle_yueworld/listener/alert/log.xmlListening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.121.51)(PORT=1521)))Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.121.51)(PORT=1521)))STATUS of the LISTENER------------------------Alias LISTENERVersion TNSLSNR for Linux: Version 11.2.0.1.0 - ProductionStart Date 03-DEC-2015 18:00:09Uptime 0 days 0 hr. 0 min. 0 secTrace Level offSecurity ON: Local OS AuthenticationSNMP OFFListener Parameter File /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.oraListener Log File /oracle/app/oracle/diag/tnslsnr/oracle_yueworld/listener/alert/log.xmlListening Endpoints Summary...(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.121.51)(PORT=1521)))Services Summary...Service "stunq" has 1 instance(s).Instance "stunq", status UNKNOWN, has 1 handler(s) for this service...The command completed successfully[oracle@oracle_yueworld admin]$看到The listener supports no services错误已经没有了,可以去试试登录5,再次登录报错[oracle@oracle_yueworld admin]$ rlwrap sqlplus orclk/st141118@st1SQL*Plus: Release 11.2.0.1.0 Production on Thu Dec 3 18:03:55 2015Copyright (c) 1982, 2009, Oracle. All rights reserved.ERROR:ORA-01034: ORACLE not availableORA-27101: shared memory realm does not existLinux-x86_64 Error: 2: No such file or directoryProcess ID: 0Session ID: 0 Serial number: 0Enter user-name:6,去修改服务端和客户端的配置⽂件google了很多资料,⼤部分都说是listener.ora配置错误导致listener找不到你要请求的sid。
oracle监听器启动出错:本地计算机上的oracleoradb11ghome1tnsl
Oracle 监听器启动出错:本地计算机上的OracleOraDb11ghome1TNSL...分类:Oracle 一、错误描述登陆PL/SQLDeveloper 登陆本地数据库时先报没有监听程序,查看服务发现Oracle 监听服务没有启动。
右击启动监听程序,报错:错误描述:本地计算机上的OracleOraDb11g_home1TNSListener 服务启动后又停止了。
一些服务自动停止,如果它们没有什么可做的,例如"性能日志和警报"服务。
二、原因分析你安装oracle 的时候是连网的,那么listener.ora 文件里的HOST= 网络给你分配的IP 地址,而在你断网的时候就会出现这样的情况。
三、解决办法方法一:监听器通过listener.ora 或者NetManager 修改监听器配置。
将原来本地字符串127.0.0.1 或者localhost 改为主机名。
首先查阅你的**product11.2.0dbhome_1NETWORKADMIN 目录下的"tnsnames.ora" 和"listener.ora" 这两个文件,然后看看里面的"HOST" 信息,看看是不是你当前的ip 地址,如果不是尝试着把这个 2 个文件改成你的ip 地址,或直接就改成127.0.0.1 (或计算机名字):注意:此时的监听配置文件"listener.ora" 里面的HOST= 的内容(IP 或者主机名)必须和,服务配置文件"tnsnames.ora" 里面,你想要链接的服务的HOST= 的内容完全一致。
意思就是说要么都是IP 地址,要么都是主机名。
如果有多个服务(NetManager 中配置的网络服务)那么查看"tnsnames.ora" 文件中与监听HOST 内容一致的PL/SQL 才可正常登录进去,否则无监听程序。
Oracle监听配置文件
Oracle监听配置文件最近看到好多人说到tns或者数据库不能登录等问题,就索性总结了下面的文档。
首先来说Ora cle的网络结构,往复杂处说能加上加密、LDAP等等。
这里不做讨论,重点放在基本的网络结构也就是我们最常用的这种情况。
三个配置文件重点:三个文件的作用和使用。
listene r.ora、sqlnet.ora、tnsname s.ora,都是放在$ORACLE_HOME\network\admin 目录下。
sqlnet.ora作用类似于li nux或者其他unix的nsswit ch.conf文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串。
例如我们客户端输入sqlp lus sys/oracle@orcl假如我的sq14lnet.ora是下面这个样子:SQLNET.AUTHENT ICATIO N_SERV ICES= (NTS)NAMES.DIRECTO RY_PAT H= (TNSNAME S,HOSTNAM E)那么,客户端就会首先在tnsna mes.ora文件中找orcl的记录。
如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的i p地址然后去连接这个ip上GLOBA L_DBNA ME=orcl这个实例,当然我这里or cl并不是一个主机名如果我是这个样子:NAMES.DIRECTO RY_PAT H= (TNSNAME S)那么客户端就只会从tnsn ames.ora查找or cl的记录。
括号中还有其他选项,如LDAP等并不常用。
附注:没有SQLNET.AUTHENT ICATIO N_SERV ICES= (NTS)这条语句,用户登录时就不经过OS认证,而需要通过用户名/密码认证登录。
Oracle监听配置文件
Oracle监听配置文件最近看到好多人说到tns或者数据库不能登录等问题,就索性总结了下面的文档。
首先来说Oracle的网络结构,往复杂处说能加上加密、LDAP等等。
这里不做讨论,重点放在基本的网络结构也就是我们最常用的这种情况。
三个配置文件重点:三个文件的作用和使用。
listener.ora、sqlnet.ora、tnsnames.ora,都是放在$ORACLE_HOME\network\admin 目录下。
sqlnet.ora作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串。
例如我们客户端输入sqlplus sys/oracle@orcl假如我的sq14lnet.ora是下面这个样子:SQLNET.AUTHENTICATION_SERVICES= (NTS)NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)那么,客户端就会首先在tnsnames.ora文件中找orcl的记录。
如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的ip地址然后去连接这个ip上GLOBAL_DBNAME=orcl这个实例,当然我这里orcl并不是一个主机名如果我是这个样子:NAMES.DIRECTORY_PATH= (TNSNAMES)那么客户端就只会从tnsnames.ora查找orcl的记录。
括号中还有其他选项,如LDAP等并不常用。
附注:没有SQLNET.AUTHENTICATION_SERVICES= (NTS)这条语句,用户登录时就不经过OS认证,而需要通过用户名/密码认证登录。
#------------------------Tnsnames.ora——客户端这个文件类似于unix 的hosts文件,提供的tnsname到主机名或者ip的对应。
只有当sqlnet.ora中类似NAMES.DIRECTORY_PATH= (TNSNAMES)这样,也就是客户端解析连接字符串的顺序中有TNSNAMES时,才会尝试使用这个文件。
oracle中监听程序当前无法识别连接描述符中请求服务的解决方法
oracle中监听程序当前⽆法识别连接描述符中请求服务的解决⽅法早上同事⽤PL/SQL连接虚拟机中的Oracle数据库,发现⼜报了“ORA-12514 TNS 监听程序当前⽆法识别连接描述符中请求服务”错误,帮其解决后,发现很多⼈遇到过这样的问题,因此写着这⾥。
也许你没有遇到过,原因如下:你oracle安装成功后,⼀直未停⽌数据库(即数据库是启动的),客户端配置成功后,应该⼀直不会有什么问题。
⽽⼀旦你和我同事⼀样,有时把Oracle安装在虚拟机中,⽽且Oracle安装完毕后,没在进⾏任何监听的配置,则虚拟机再启动,则就会出现ORA-12514的问题。
如下图如下是解决思路:根据出错信息判断出客户端未监听到实例服务名1、通过重启服务的⽅式启动数据库,再次连接仍⽆法连接服务器。
2、既然第⼀种⽅法不能解决问题,那就第⼆种⽅法。
考虑监听listener.ora监听配置⽂件listener.ora中可以不必指定监听的服务名(安装Oracle10g后也是没有指定的)。
正常情况下⼀般只要数据库启动,客户端连接数据库也没有什么问题,但是有时重复启动关闭也会出现ORA-12514错误。
既然listener.ora中没有指定监听,我们可以在listener.ora⽂件中指定监听的实例名,这样该问题应该可以连接。
步骤如下:在oracle服务器Oracle安装⽬录(我的在E:\Oracle10g下,每个⼈的不⼀样,根据⾃⼰的情况查找)Network/admin⽬录下找到listener.ora 我的如下图所⽰# listener.ora Network Configuration File: E:\Oracle10g\network\admin\listener.ora# Generated by Oracle configuration tools.SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = E:\Oracle10g)(PROGRAM = extproc))(SID_DESC =(GLOBAL_DBNAME = ORCL)(ORACLE_HOME = E:\Oracle10g)(SID_NAME = ORCL)))LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))(ADDRESS = (PROTOCOL = TCP)(HOST = onest)(PORT = 1521))))标红的为我添加的部分,ORCL为监听的实例名。
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]。
Oracle数据库监听配置
近段时间很多网友提出监听配置相关问题,客户终端(Client)无法连接服务器端(Server)。
本文现对监听配置作一简单介绍,并提出一些客户终端无法连接服务器端的解决思路,愿对广大网友与读者有一些帮助。
一、监听器(LISTENER)监听器是Oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务器端提出的连接请求。
既然是基于服务器端的服务,那么它也只存在于数据库服务器端,进行监听器的设置也是在数据库服务器端完成的。
二、本地服务名(Tnsname)Oracle客户端与服务器端的连接是通过客户端发出连接请求,由服务器端监听器对客户端连接请求进行合法检查,如果连接请求有效,则进行连接,否则拒绝该连接。
本地服务名是Oracle客户端网络配置的一种,另外还有Oracle名字服务器(Oracle Names Server)等。
Oracle常用的客户端配置就是采用的本地服务名,本文中介绍的也主要是基于本地服务名的配置。
三、Oracle网络连接配置方法配置Oracle服务器端与客户端都可以在其自带的图形化Oracle网络管理器(Oracle Net Manager)里完成(强烈建议在这个图形化的工具下完成Oracle服务端或客户端的配置)。
在Windows下,点击“开始/程序/Oracle - OraHome92/Configuration and Migration Tools/Net Manager”启动Oracle网络管理器工具,在Linux/Unix下,利用netmgr命令来启动图形化Oracle网络管理器,如:$ netmgrWindows下启动Net Manager图形窗口如下图示:图(一)1、 Oracle监听器配置(LISTENER)如图(一)示,选中树形目录中监听程序项,再点击左上侧“+”按钮添加监听程序,点击监听程序目录,默认新加的监听器名称是LISTENER(该名称也可以由任意合法字符命名)。
ORA-12518 TNS 监听程序无法分发客户机连接
ORA-12518: TNS: 监听程序无法分发客户机连接在团队成员增多时,经常出现“无法分发客户端连接”等问题。
在网上搜索一番后,最终解决了该问题,现将解决方案总结如下,以供参考和以后备用。
原因:团队成员增多,原有数据库设置不够用,导致连接plsql和启动tomcat时经常抛出“无法分发客户端连接”的异常。
解决方案:第一步:调整process和session值1. 检查process和session是否够用。
a)使用plsql连接到oracle,查看process进程数:select count(*) from v$process; --取得数据库目前的进程数。
select value from v$parameter where name = 'processes'; --取得进程数的上限。
b)查看session会话数:select count(*) from v$session; --取得数据库目前的会话数。
select value from v$parameter where name = 'sessions'; --取得会话数的上限。
查看当前process和sessions是否接近上限值。
若接近,可以将其增大。
2. 调整这两个参数值大小。
系统进程数process和系统会话数session之间存在一个关系:process数=session数*1.1+5我们在配置时参考该规律进行设定。
a) 修改process值alter system set processes=1000 scope=spfile; --将process值改为1000b) 修改session值alter system set sessions=1105 scope=spfile; --将sessions值改为11053. 备份pfile,重启oraclea) 修改完成后,备份pfilecreate pfile from spfile; --从spfile(运行时配置)创建pfile(系统配置)c) 重启oracle重启的方法有很多种,可以重启oracle服务,或者重启数据库。
Oracle经验分享-常用报错及解决办法
问题一、监听器未能启动专用的服务器进程今天通信频道,在更新代码后,出现WEB或PLSQL客户端连接数据库连接不上。
重启下数据库和TOMCA T后正常一段后又出现此故障。
监听器日志后面都提示:08-1月 -2010 14:10:59 *(CONNECT_DATA=(SID=vnet)(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))) *(ADDRESS=(PROTOCOL=tcp)(HOST=某IP)(PORT=3947)) * establish * fjroom * 12500 TNS-12500: TNS:监听器未能启动专用的服务器进程TNS-12560: TNS: 协议适配器错误TNS-00530: 协议适配器错误PLSQL客户端连接的时候提示:监听器未能启动专用的服务器进程原因:ORACLE数据库所在服务器的防火墙被启动,之前是关着(不知被谁启起来的)。
而且防火墙仅开放1521端口。
分析:服务器A安装有:ORACLE数据库和运行WEB程序(连接本台数据库)。
同样的WEB 程序在服务器B运行并连接服务器A的数据库。
问题出现在12月31号,应该是防火墙被启起来时候。
由于防火墙只开放1521监听器端口。
由于ORACLE用到不止一个端口(还有一个随机端口),所有服务器B程序虽然可以监听到ORACLE可就是获取不上数据库的连接!(之前,我查看ORACLE监听日志有从服务器B过来的记录,我错以为服务器B有连接上数据库。
另外,服务器B程序访问少,所以我没去在意他是否连接程序)这样服务器B程序可以监听到但获取不到数据库连接,故导致死循环:监听->获取不到连接->再监听->获取不到连接。
在监听日志有大量这样连接记录:08-1月 -2010 12:14:02 *(CONNECT_DATA=(SID=vnet)(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))) *(ADDRESS=(PROTOCOL=tcp)(HOST=某IP)(PORT=4280)) * establish * fjroom * 0 时间过去几个小时候后,便会出现上面所说的故障。
Oracle数据库TNS常见错误解决方法
Oracle数据库TNS常见错误解决方法收藏1、ORA-12541:TNS:没有监听器原因:没有启动监听器或者监听器损坏。
若是前者,使用命令net start OracleOraHome10gTNSListener(名字可能有出入)即可;如果是后者,则使用“Net Configuration Assistant”工具向导之“监听程序配置”增加一个监听器即可(基本不用写任何信息,一路OK。
在添加之前可能需要把所有的监听器先删!)2、ORA-12500:TNS:监听程序无法启动专用服务器进程或ORA-12560:TNS:协议适配器错误原因:ORACLE的数据库服务没有启动。
使用命令net start ORACLESERVICEORADB(ORADB为数据库名字)即可。
如果仍没有解决,请继续向下看。
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步。
oracle protocol adapter error -回复
oracle protocol adapter error -回复标题:Oracle Protocol Adapter Error:解读、常见原因及解决方案导言:在使用Oracle数据库时,可能会遇到“Oracle Protocol Adapter Error”错误。
这个错误提示信息并不直观,经常让人感到困惑和不知所措。
本文将深入探讨这个错误的含义、可能的原因以及一步一步解决方案,帮助读者更好地理解和解决这个问题。
第一部分:了解Oracle Protocol Adapter Error1. 什么是Oracle Protocol Adapter?Oracle Protocol Adapter是Oracle数据库的一个重要组件,负责管理、控制和协调数据库与客户端之间的通信。
它提供了一种机制,使客户端能够与Oracle数据库进行交互,执行SQL语句、管理会话和链接等操作。
2. Oracle Protocol Adapter Error意味着什么?当出现Oracle Protocol Adapter Error错误时,意味着数据库无法正常处理并响应客户端请求。
这个错误通常与网络连接、数据库配置或数据库访问权限等相关。
第二部分:常见的Oracle Protocol Adapter Error原因1. 无效的网络连接这可能是最常见的原因之一。
无效的网络连接可能是由于网络中断、防火墙设置、网络配置错误或者主机名称解析问题等引起的。
在这种情况下,客户端无法与数据库建立有效的连接,最终导致了Oracle Protocol Adapter Error。
2. 监听器(Listener)配置问题如果数据库配置的监听器出现问题,即使客户端连接信息是正确的,Protocol Adapter Error也可能会发生。
这可能是由于监听器配置文件(listener.ora)中的错误、监听器服务未启动、监听器端口被占用等原因导致的。
oracle 安装后出现 ORA-12545因目标主机或对象不存在问题
oracle 安装后出现 ORA-12545:
因目标主机或对象不存在
一、用客户端登录时的提示
二、在网上搜索提示说tnsnames.ora 和listener.ora配置有问题,
按照提示查看果然是配错了,如下图
三、将配置修改后客户端可以登录,但是在dos窗口内
exp BS/BS@orcl_192.167.29.93 file=d:\BS.dmp log=d:\BS.log
exp OBEBS/OBEBS@orcl_192.167.29.93 file=d:\OBEBS.dmp log=d:\OBEBS.log
或者
imp BS/BS@orcl_192.167.29.93 full=y file=d:\BS.dmp log=d:\BS.log imp OBEBS/OBEBS@orcl_192.167.29.93 full=y file=d:\OBEBS.dmp log=d:\OBEBS.log
备份或者导入数据时就会报了“ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务”错误,仔细检查没有问题,后来发现pl/sql登录界面数据库显示界面是192.167.29.93_orcl,而不是orcl_192.167.29.93,与正常数据库实例是相反的,不明白什么原因,在网上也没有查到具体原因,如下图
将命令中的orcl_192.167.29.93改为192.167.29.93_orcl就可以备份和还原数据库了。
oracle12592解决方法
oracle12592解决方法Oracle 12592 解决方法Oracle 数据库是一种功能强大的关系型数据库管理系统,常用于企业级应用。
然而,使用Oracle数据库时,有时会遇到各种问题和错误代码。
其中一个常见的错误是 "ORA-12592",它表示客户端和服务器之间的连接存在问题。
本文将介绍一些解决这个问题的方法。
1. 检查网络连接首先,确保网络连接正常。
检查客户端和服务器之间的网络是否正常工作。
可以使用ping命令测试网络连通性。
如果网络连接出现问题,可能会导致ORA-12592错误。
解决网络问题后,再次尝试连接数据库。
2. 检查监听器设置ORA-12592错误可能由于监听器配置问题引起。
请确保监听器已正确配置,并监听数据库实例的监听地址。
可以使用lsnrctl工具来管理监听器。
通过检查监听器配置文件(listener.ora)中的设置,确保数据库实例的监听地址和端口号正确。
3. 检查数据库状态ORA-12592错误有时会出现在数据库实例未启动或处于不可用状态时。
检查数据库的状态,确保它处于运行状态。
可以使用SQL*Plus或者Enterprise Manager等工具连接到数据库,并使用如下命令检查数据库的状态:```SQL> SELECT status FROM v$instance;```如果数据库状态不是"OPEN",则需要启动数据库。
可以使用SQL*Plus连接到数据库,并使用如下命令启动数据库:```SQL> STARTUP;```4. 检查客户端设置ORA-12592错误可能也与客户端的配置有关。
首先,检查客户端的tnsnames.ora文件是否正确配置了目标数据库的连接信息。
确保数据库的主机名、端口号以及服务名等连接参数都正确设置。
其次,检查客户端的环境变量设置是否正确。
特别是ORACLE_HOME和ORACLE_SID参数,确保它们指向正确的Oracle软件安装目录和数据库实例。
连接Oracle数据库时报ORA-12541:TNS:无监听程序的图文解决教程
连接Oracle数据库时报ORA-12541:TNS:⽆监听程序的图⽂解决教程在⽤PL/SQL Developer等客户端⼯具连接oracle服务器时出现ORA-12541:TNS:⽆监听程序的错误,如下图:发现原来是oracle的监听没有启动,重启监听后就连接成功了,下⾯跟⼤家分享⼀下如何启动oracle的监听。
1.在安装Oracle服务器的主机上,打开Net Configuration Assistant2.选择监听程序配置,下⼀步3.选择重新配置,下⼀步 4.选择监听程序,默认,下⼀步 注:如果你的监听已启动,则出现提⽰框,选择是 5.选择协议,使⽤默认的TCP协议,下⼀步 6.选择端⼝号,使⽤标准端⼝号1521,下⼀步 7.不配置另⼀个监听程序,选择否,下⼀步 8.监听程序配置完成,下⼀步 重配服务名,测试连接 1.选择Net服务器配置,下⼀步 2.选择重新配置,下⼀步 3.选择数据库名,下⼀步 4.填写服务名,也就是你创建数据库时的全数据库名,下⼀步 5.选择TCP协议,下⼀步 6.填写主机名(可填写你的IP地址,也可填写你的主机名),使⽤标准端⼝号1521,下⼀步 7.进⾏测试,下⼀步 8.选择更改登录 9.填写⽤户名和⼝令,确定 10.测试连接成功,下⼀步 11.⽹络服务名,默认(和之前的数据库名⼀样),下⼀步 12.不配置另⼀个Net服务名,选择否,下⼀步 服务名配置完毕,下⼀步,完成 启动PL/SQLDeveloper,输⼊⽤户名和⼝令,登录成功以上所述是⼩编给⼤家介绍的连接Oracle数据库时报ORA-12541:TNS:⽆监听程序的图⽂解决教程,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
在此也⾮常感谢⼤家对⽹站的⽀持!。
oracle数据库protocol adapter error
oracle数据库protocol adapter error"Oracle Protocol Adapter Error" 通常是Oracle 数据库连接问题的一种错误信息。
这个错误可能由多种原因引起,下面是一些可能的解决方案:1. 监听程序未启动:确保Oracle 数据库监听程序(Listener)已经启动。
你可以通过在命令行中执行以下命令来检查:```bashlsnrctl status```如果监听程序未启动,可以使用以下命令启动:```bashlsnrctl start```2. 检查连接字符串:确保你使用的连接字符串是正确的。
连接字符串应该包含正确的主机名、端口号和服务名称。
3. 确认数据库实例状态:使用SQL*Plus 或者其他数据库客户端工具连接到数据库,检查数据库实例是否处于打开状态。
4. 查看监听程序日志:检查监听程序的日志文件,通常位于Oracle 安装目录下的`diag` 目录。
检查日志是否包含有关连接错误的信息。
5. 检查防火墙设置:如果在连接数据库的网络路径上存在防火墙,请确保防火墙允许数据库连接通过所需的端口。
6. 确认TNS 检查:检查`tnsnames.ora` 文件,其中定义了数据库的连接别名。
确保文件中的信息是正确的。
7. 重新启动数据库服务:尝试重新启动Oracle 数据库服务。
8. 确认Oracle 客户端安装:如果是在客户端上出现此错误,确保Oracle 客户端正确安装,并且包含必要的库和文件。
9. 检查环境变量:确保系统环境变量(如`ORACLE_HOME`、`TNS_ADMIN` 等)已正确设置。
oracle tns12592解决方法 -回复
oracle tns12592解决方法-回复Oracle TNS-12592解决方法在使用Oracle数据库时,有时你可能会遇到一个TNS-12592错误。
这个错误通常表示无法连接到Oracle数据库实例。
下面将为你详细介绍如何逐步解决这个问题。
1. 理解TNS-12592错误TNS-12592错误指示了一个网络连接问题,它发生在客户端(例如,SQL*Plus)试图连接到Oracle数据库实例时。
这个错误可能是因为无法在网络上找到数据库服务,或者是因为连接请求被拒绝。
2. 确保TNS Listener正在运行首先,你需要检查Oracle数据库服务器上的TNS Listener是否正在运行。
TNS Listener负责接收来自客户端的连接请求,并将其路由到相应的数据库实例。
如果TNS Listener没有运行,客户端将无法与数据库实例建立连接。
你可以通过以下步骤检查TNS Listener的状态:- 打开命令提示符或终端窗口。
- 输入以下命令,以检查TNS Listener的状态:bashlsnrctl status如果TNS Listener正在运行,你将在输出中看到相应的信息。
如果TNS Listener没有运行,你可以使用以下命令启动它:bashlsnrctl start这将启动TNS Listener,并允许客户端连接到数据库实例。
3. 检查Oracle数据库实例名在连接到Oracle数据库时,需要提供正确的数据库实例名。
确保你正在使用正确的实例名,并将其配置在TNS连接描述符(TNSNAMES.ORA 文件)中。
TNS连接描述符是一个文本文件,它包含了数据库实例的网络连接信息。
它通常位于ORACLE_HOME/network/admin目录下。
打开这个文件,确保其中包含正确的实例名和对应的连接信息。
例如,假设你尝试连接到一个名为"ORCL"的数据库实例,你的TNS连接描述符中将有一个类似于以下内容的条目:bashORCL =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))确保你的实例名与TNS连接描述符中的实例名一致。
oracle解决“OORA-12541 TNS 没有监听器”问题的实验
20、解决“ORA-12541 TNS no listener”问题的实验
问题描述:在客户端连接数据库时,经常会出现“ORA-12541:TNS:no listener”错误信息,这是什么原因造成的呢?
问题分析:这类错误往往与Oracle监听器有关,需要从目标服务器的监听器启动或配置入手,或者是网络的问题。
1、检查监听器是否已启动,没有启动就启动一下。
可以使用lsnrctl>status <listener_name>
检查监听器的状态。
2、检查监听器已经启动并监听指定的地址,查看监听器文件listener.ora文件。
如果改变
了监听器文件或者通过NETCA改变了监听器的配置,一定要重启监听器:lsnrctl>reload 一般要静态注册一下数据库服务,如:
(SID_DESC=
(GLOBAL_DBNAME= orcl)
(ORACLE_HOME=c:\oracle\product\10.2.0\db_1)
(SID_NAME=orcl)
)
3、保证网络连接畅通
如果监听器已经启动,而且配置正确,但问题一直存在,此时要检查网络连接是否正常,协议是否正确。
一般来说主机要使用明确的IP地址,尽量不要使用计算机名,因为网络中往往有重名或者解析时容易出错。
如果ping没问题,再用tnsping来测试Oracle数据库前端与数据库之间的连接是否畅通。
如果是本机连接,可以使用ipconfig查看,如果不能正确显示,说明网络有问题,,可以将listener.ora中的HOST=主机名改为HOST=127.0.0.1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
问题现象:在本地ORACLE客户端下配置26数据库本地服务名时配置正常,连接正常。
同样操作用于配置150数据库本地服务名时,用PL/SQL连接报错解决办法:定位问题初期,张媚茜可以通过本地服务名访问到150数据库,我这边不可以。
决定首先保持环境一致,即服务端都是150数据库(相同),客户端均采用同一个安装文件安装(保持相同)通过对比张媚茜机器上oracle客户端中tnsmanes.ora与我本地机器文件发现出现orcl的位置,我的本地文件中参数名SERVICE_NAME,张媚茜的文件中参数名SID_NAME更改我的参数名为SID_NAME或SID时,问题解决,可以成功连接。
问题分析:Oracle配置连接流程客户端==》监听器==》服务端服务端的数据库对外提供service_name供客户端连接所以客户端需要配置服务端提供的service_name,服务端启动的时候会在监听器上注册两个参数,SID和SERVICE_NAMESID提供给JDBC连接,SERVICE_NAME提供给客户端连接ORACLE8i之后oracle引入service_name参数就是专门用来提供给客户端连接Oracle服务端在监听器上注册时读取%ORACLE_HOME%//product/10.2.0/network/admin/ listener.ora文件其中GLOBAL_DBNAME就是注册在监听器上的对外网连接名称。
SID_NAME就是注册在监听器上的实例名。
所以通过修改此文件中的GLOBLE_DBNAME也可以解决此问题,并且客户端可以按照标准要求配置。
参考资料:一、什么是注册?注册就是将数据库作为一个服务注册到监听程序。
客户端不需要知道数据库名DB_NAME和实例名SID,只需要知道该数据库对外提供的服务名SERVICE_NAME就可以申请连接到数据库。
这个服务名可能与实例名一样,也有可能不一样。
(即本地Net Configuration Assistant => 本地Net服务名配置时,所添加的服务名)在数据库服务器启动过程中,数据库服务器会向监听程序注册相应的服务(无论何时启动一个数据库,默认地都有两条信息注册到监听器中:数据库服务器对应的实例和服务。
)26服务器上DB_NAME和SERVICE_NAME和SID保持一致,都是orcl150服务器上DB_NAME和SERVICE_NAME一致,是oracle,但是SID是orcl相当于是这样:在数据库服务器和客户端之间有一监听程序(Listener),在监听程序中,会记录相应数据库对应的服务名(一个数据库可能对应有多个服务名),当客户端需要连接数据库时,只需要提供服务名,就可以建立客户端和服务器之间的连接。
疑问:1、为什么一个数据库可以有多个实例?有什么好处?数据库名与实例名之间的关系一般是一一对应关系,有一个数据库名就有一个实例名,如果在一个服务器中创建两个数据库,则有两个数据库名,两个数据库实例名,用两个标识确定一个数据库,用户和实例相连接。
但在8i、9i的并行服务器结构中,数据库与实例之间不存在一一对应关系,而是一对多关系,(一个数据库对应多个实例,同一时间内用户只一个实例相联系,当某一实例出现故障,其它实例自动服务,以保证数据库安全运行。
)2、为什么一个数据库可以有多个服务名?有什么好处?打个比方,你的名字叫小明,但是你有很多外号。
你父母叫你小明,但是朋友都叫你的外号。
这里你的父母就是oracle实例,小明就是sid,service name就是你的外号3、动态注册静态注册的主要区别是什么?有什么好处?二、静态注册静态注册就是实例启动时读取listener.ora文件的配置,将实例和服务注册到监听程序。
无论何时启动一个数据库,默认地都有两条信息注册到监听器中:数据库服务器对应的实例和服务。
静态注册时,listener.ora中的GLOBAL_DBNAME向外提供服务名,listener.ora中的SID_NAME提供注册的实例名。
采取静态注册方法时,listener.ora中的内容如下: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 =orcl)(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)(SID_NAME =orcl))(SID_DESC =(GLOBAL_DBNAME =orcl1)(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)(SID_NAME =orcl))该文件表明数据库是单实例的,实例名为orcl,向外提供了两个服务:orcl和orcl1三、动态注册动态注册是在instance启动的时候PMON进程根据init.ora中的instance_name,service_names两个参数将实例和服务动态注册到listener中。
首先要在init.ora中指定instance_name,service_names两个参数的值。
在sqlplus下通过show parameter service_names 和show parameter instance_name可以查看这两个参数的值。
注册到监听器中的实例值从init.ora文件中的instance_name参数取得。
如果该参数没有设定值,那么它将取init.ora文件中的db_name的值。
注册到监听器中的服务值从init.ora文件中的参数service_names取得。
如果该参数没有设定值,数据库将拼接init.ora文件中的db_name和db_domain的值来注册自己。
如果选择提供service_names值,您可以使用完全限定的名称(比如)或缩写的名称(比如orcl)。
如果选择缩写的名称并设置了db_domain参数,注册到监听器中的服务将是service_name值和db_domain值的拼接。
例如下面的设置将导致服务被注册到监听器中:db_domain=service_names=orcl ;采取动态注册方法时,listener.ora中的内容如下:SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)(PROGRAM = extproc)))可选择的是,您可以在service_names参数中指定多个服务值,值之间用逗号格开,这对于共享服务器配置是很有用的。
动态注册默认只注册到默认的监听器上(名称是LISTENER、端口是1521、协议是TCP),如果需要向非默认监听注册,则需要配置local_listener参数!如果没有显式设置service_names和instance_name的值,那么仅当数据库在监听器运行之后启动时,动态注册才会发生;在这种情况下,如果监听器后来发生了重启,动态注册信息将会丢失。
显然,最好在所有的数据库启动之前先启动监听器,这样就会避免没有显式设置service_names和instance_name的值时,若重启监听器带来的动态注册信息丢失的情况。
为初始化参数service_names和instance_name设置显式的值是个值得可取的方法和建议。
因为如果监听器在数据库运行过程中要重新启动,仅当你在init.ora文件中显式地设置了service_names和instance_name的值时,每个数据库的PMON进程才会在很短的时间之内完成动态注册。
4、怎么查看静态注册还是动态注册?可以使用命令lsnrctl status来查看某服务是静态注册还是动态注册。
实例状态为UNKNOWN值时表明此服务是静态注册的设置。
这时监听器用来表明它不知道关于该实例的任何信息,只有当客户发出连接请求时,它才检查该实例是否存在。
动态注册的数据库通过状态信息中的状态READY或状态BLOCKED(对于一个备用数据库)来指明。
不管关闭何时数据库,动态注册的数据库都会动态地从监听器注销,而与之相关的信息将从状态列表中消失。
这样,不管数据库是在运行还是已经关闭,监听器总是知道它的状态。
该信息将被用于连接请求的回退(fallback)和负载平衡。
关键字:DB_NAME,数据库名,随着由多个数据库构成的分布式数据库的普及,这种命令数据库的方法给数据库的管理造成一定的负担,因为各个数据库的名字可能一样,造成管理上的混乱。
为了解决这种情况,引入了Db_domain参数,这样在数据库的标识是由Db_name和Db_domain两个参数共同决定的,避免了因为数据库重名而造成管理上的混乱。
这类似于互连网上的机器名的管理。
我们将Db_name和Db_domain两个参数用’.’连接起来,表示一个数据库DB_DOMAIN,定义数据库所在的域该域的命名同互联网的’域’没有任何关系,只是数据库管理员为了更好的管理分布式数据库而根据实际情况决定的。
当然为了管理方便,可以将其等于互联网的域。
GLOBLE_NAME,对一个数据库的唯一标识,默认是DB_NAME.DBDOMAIN(监听器识别globle_name)oracle建议用此种方法命令数据库。
该值是在创建数据库是决定的SERVICE_NAME,数据库服务名,ORACLE8i引入,默认是DB_NAME.DBDOMAIN (客户端识别service_name) 该参数是oracle8i新引进的。
在8i以前,我们用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。
为了方便并行环境中的设置,引进了Service_name参数,该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。
该参数的缺省值为Db_name. Db_domain,即等于Global_name。
一个数据库可以对应多个Service_name,以便实现更灵活的配置。
该参数与SID没有直接关系,即不必Service name 必须与SID 一样。
INSTANCE_NAME,数据库实例名(数据库参数oracle识别)数据库实例名。
用于和操作系统之间的联系,用于对外部连接时使用。
在操作系统中要取得与数据库之间的交互,必须使用数据库实例名ORACLE_SID数据库实例名(操作系统环境变量linux识别)操作系统环境变量。