oracle11g安装出现TNS:协议适配器错误问题相关整理总结

本文详细介绍了在Windows环境下安装Oracle11g时遇到的“TNS协议适配器错误”及“错误3系统找不到指定路径”的解决方法。通过修改注册表、配置监听服务、调整客户端与服务器端的网络配置,确保了数据库的正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

天安装Oracle11g的Windows版时,发生“TNS协议适配器错误”,我进入Windows系统的服务管理器启动“OracleOraDb11g_home1TNSListener”时,又发生了“错误3 系统找不到指定路径”。在网上查找了些资料,很多都是Oracle9i或是Oracle10g的解决办法,但是在11g中也是有帮助的,只是不同的版本之间,TNSLSNR.EXE的存放目录不同。在11g中,该文件存放在“oracle11.1.0\product\db\BIN”(部分目录名我修改过)
    如果是在安装时发生这个错误,以下是我的解决办法,需要修改注册表。
一、在“开始”->“运行”中输入“regedit”,打开注册表
二、进入注册表,“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraDb11g_home1TNSListener”查看“OracleOraDb11g_home1TNSListener”值中有没有“ImagePath”键,如果没有的话,需要添加,然后给这个键赋值,这值是“J:\oracle11.1.0\product\db\BIN\TNSLSNR.EXE”(不同机器路径不同,需要注意)。保存推出注册表。
三、进入服务管理,右键点击“我的电脑”,选择“管理”进入“计算机管理”,然后点击“服务和应用程序”打开树形列表,点击“服务”。这样我们就能开到整个计算的服务,找到Oracle11g的监听服务“OracleOraDb11g_home1TNSListener”,点击启动就可以安装“Oracle Database Configuration Assistant”了。
以下是安装“Oracle Database Configuration Assistant”时Oracle11g打出的日志:
已通过 Configuration Assistant "Oracle Net Configuration Assistant" 生成输出:
Command = C:\WINDOWS\system32\cmd /c call J:\oracle11.1.0\product\db/bin/netca.bat /orahome J:\oracle11.1.0\product\db /orahnam OraDb11g_home1 /instype typical /inscomp client,oraclenet,javavm,server,ano /insprtcl tcp,nmp /cfg local /authadp NO_VALUE /nodeinfo NO_VALUE /responseFile J:\oracle11.1.0\product\db\network\install\netca_typ.rsp
正在对命令行参数进行语法分析:
参数"orahome" = J:\oracle11.1.0\product\db
参数"orahnam" = OraDb11g_home1
参数"instype" = typical
参数"inscomp" = client,oraclenet,javavm,server,ano
参数"insprtcl" = tcp,nmp
参数"cfg" = local
参数"authadp" = NO_VALUE
参数"nodeinfo" = NO_VALUE
参数"responsefile" = J:\oracle11.1.0\product\db\network\install\netca_typ.rsp
完成对命令行参数进行语法分析。
Oracle Net Services 配置:
完成概要文件配置。
监听程序的启动端口:1521
Oracle Net 监听程序启动:
正在运行监听程序控制:
      J:\oracle11.1.0\product\db\bin\lsnrctl start LISTENER
   监听程序控制完成。
启动监听程序失败。监听程序可能已经在运行。
监听程序配置完成。
成功完成 Oracle Net Services 配置。退出代码是0
Configuration Assistant "Oracle Net Configuration Assistant" 成功
-----------------------------------------------------------------------------
已通过 Configuration Assistant "Oracle Database Configuration Assistant" 生成输出:
Command = oracle.assistants.server.DbcaCfgPlugIn C:\WINDOWS\system32\cmd /c call J:\oracle11.1.0\product\db/bin/dbca.bat  -progress_only -createDatabase -templateName General_Purpose.dbc -sid orcl -gdbName orcl  -emConfiguration LOCAL      -datafileJarLocation J:\oracle11.1.0\product\db\assistants\dbca\templates  -datafileDestination J:\oracle11.1.0\oradata -responseFile NO_VALUE   -characterset ZHS16GBK   -obfuscatedPasswords false  -sampleSchema true   -recoveryAreaDestination NO_VALUE     -totalMemory 614   -automaticMemoryManagement true  -maskPasswords false   -sysPassword  ${S_SYSPASS}  -systemPassword  ${S_SYSTEMPASS}  -dbsnmpPassword  ${S_DBSNMPPASS}  -sysmanPassword  ${S_SYSMANPASS}  ${S_SYSASMPASS}  ${S_HOSTUSERPASS}
Configuration Assistant "Oracle Database Configuration Assistant" 失败
-----------------------------------------------------------------------------
"J:\oracle11.1.0\product\db\cfgtoollogs\configToolFailedCommands" 脚本包含所有失败的, 跳过的或取消的命令。可使用此文件在 OUI 外运行这些 Configuration Assistant。请注意, 执行此脚本前, 您可能需要用口令 (如果有) 来更新此脚本。-----------------------------------------------------------------------------

 

 

 

第二种解决方案:

我们知道oracle客户端连接时涉及用到的几个配置文件有:sqlnet.ora、tnsnames.ora、listener.ora。其中sqlnet.ora和tnsnames.ora是在客户端的配置文件,listener.ora则是在服务器端的监听配置文件。

想要顺利的连接上服务器端,首先要确保两者之间的网络通畅。其二在服务器上配置好监听程序。其三是客户端配置好相应的tnsnames.ora。

  在配置服务器端监听程序时要注意几点:

  1、在服务器上的/etc/hosts文件中需要有127.0.0.1  localhost 这一条.默认情况下是有的。若没有则在启动监听器是会报TNS-12537:TNS:connection closed的错误.同时最好添加上你的服务器IP  主机名。

  2、配置监听器时可以使用netca或者直接写配置文件listener.ora也行

# listener.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.120)(PORT = 1521))
)
)

其中的HOST最好使用IP,主机名可能会发生改变——影响较多。

  客户端的配置主要的是tnsnames.ora这个文件

CENTOS =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.120)(PORT = 1521))
)
(CONNECT_DATA =
(SID = centos)
(SERVER = DEDICATED)
)
)

其实也没什么东西

  对于sqlnet.ora这个文件中的NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)这个参数,其中EZCONNECT是oracle10G新加的,好像是用来快速连接的。使用主机名Easy的连接掉服务器。不用TNSNAMES的方式连接。

  所有的设置都弄好了,如果你还是发现在客户端(Windows)不能连接到服务器端(Linux),查看服务器上的防火墙对oracle的1521端口是否开放。不是很重要的练习用的机子可以直接将防火墙关闭。

1) 永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop

  最后在说下在排错时用到的一些命令:lsnrctl (start、stop、status)、tnsping (IP/主机名)、netstat -anp (查看端口)、telnet等。

转载于:https://www.cnblogs.com/alterhu/archive/2012/03/05/2381079.html

### Oracle 19c 安装 ORA-12560 TNS 协议适配器错误解决方案 当遇到TNS-12560和TNS-00530错误时,这通常意味着监听程序未能成功启动或客户端无法连接到数据库实例。可能的原因包括但不限于网络配置不正确、环境变量设置不当以及监听文件配置有误。 #### 检查并修正`listener.ora` 和 `tnsnames.ora` 确保这两个重要配置文件位于 `$ORACLE_HOME/network/admin` 目录下,并且其内容无语法错误。对于`listener.ora`, 需要确认其中定义的服务名和服务地址是否准确[^1]: ```plaintext LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orclpdb) (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1) (SID_NAME = orclpdb) ) ) ``` 同样地,在`tnsnames.ora` 文件里也要保证目标数据库描述符被正确定义: ```plaintext ORCLPDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orclpdb) ) ) ``` #### 设置必要的环境变量 为了使Oracle软件能够正常工作,必须适当设定一些操作系统级别的环境变量,比如`$ORACLE_HOME` 和 `$PATH`. 这些可以通过编辑用户的shell profile脚本实现, 如 `.bash_profile` 或者 `.bashrc`. ```bash export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATH ``` 之后重新加载该profile文件以应用更改. ```bash source ~/.bash_profile ``` #### 启动Listener服务 尝试通过命令行工具来手动启动监听进程,并观察是否有任何异常提示信息输出至终端窗口中。 ```bash lsnrctl start ``` 如果一切顺利的话,则应该可以看到类似于下面的信息显示出来表示监听已经成功开启: ```text Starting /u01/app/oracle/product/19.0.0/dbhome_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 19.0.0.0.0 - Production Log messages written to /u01/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production Start Date ... Uptime ... Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))) The listener supports no services The command completed successfully ``` #### 使用Net Manager图形界面调整配置 除了上述方法外还可以考虑利用Oracle自带的Net Configuration Assistant (`netca`) 工具来进行更直观便捷的操作;或者是采用 Net Manager GUI 应用来修改相应的参数选项。 #### 测试连接 最后一步就是验证能否建立有效的数据库会话链接了。可以借助SQL*Plus或其他第三方应用程序完成这项测试作业。 ```sql sqlplus system/password@orclpdb ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值