Oracle ORA-12170:TNS:发生连接超时
我试图使用Oracle Toad连接到笔记本电脑中的数据库,但一直出现以下错误: ORA-12170:TNS:发生连接超时 我一直犯这个错误的可能原因是什么 我昨天访问了同一个数据库,并且能够访问它。[在评论中收集答案] 问题是Oracle服务在一个IP地址上运行,而主机配置了另一个IP地址 要查看Oracle服务的IP地址,请发出Oracle ORA-12170:TNS:发生连接超时,oracle,toad,ora-12170,Oracle,Toad,Ora 12170,我试图使用Oracle Toad连接到笔记本电脑中的数据库,但一直出现以下错误: ORA-12170:TNS:发生连接超时 我一直犯这个错误的可能原因是什么 我昨天访问了同一个数据库,并且能够访问它。[在评论中收集答案] 问题是Oracle服务在一个IP地址上运行,而主机配置了另一个IP地址 要查看Oracle服务的IP地址,请发出lsnrctl status命令并检查报告的地址(本例中为127.0.0.1,本地主机): 要查看主机IP地址,请发出ipconfig(在windows下)或ifco
lsnrctl status
命令并检查报告的地址(本例中为127.0.0.1,本地主机):
要查看主机IP地址,请发出ipconfig
(在windows下)或ifconfig
(在linux下)命令
但是,在我的安装中,Oracle服务不起作用如果在本地主机地址上设置,我必须设置真正的主机IP地址(例如192.168.10.X)
为了避免将来出现此问题,请不要使用DHCP分配主机的IP地址,而是使用静态地址
open sqlnet.ora
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
SQLNET.INBOUND_CONNECT_TIMEOUT=360
SQLNET.RECV_TIMEOUT=10
SQLNET.SEND_TIMEOUT=10
检查防火墙,以允许从客户端连接服务器。
允许域网络或创建规则。这是因为SID冲突。例如,在Oracle12cBase\app\product\12.1.0\dbhome\u 1\NETWORK\ADMIN\tnsnames.ora文件中,ORCL的连接描述如下:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
并且,您正尝试使用相同SID但不同IP、用户名/密码的连接字符串进行连接,如下所示:
sqlplus用户名/password@192.168.130.52:1521/orcl
要解决此问题,请在tnsnames.ora文件中进行更改:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.130.52)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
问题,因为与客户端的连接建立或通信未能在分配的时间间隔内完成。这可能是由于网络或系统延迟造成的。我在连接ORCLPDB的“hr”用户时遇到了相同的错误,ORCLPDB是一个可插拔的数据库 首先,在windows命令提示符下键入命令
lsnrctlstatus
,获取主机名和端口号。在我的例子中,它是127.0.0.1,端口号是1521
其次,使用主机名和端口号输入以下命令:
sqlplus username/password@HostName:Port Number/PluggableDatabaseName.
例如:
sqlplus hr/hr@127.0.0.1:1521/ORCLPDB.
故障排除步骤(文档ID 730066.1) 连接超时错误ORA-3135和ORA-3136 如果尝试连接到数据库的操作未在以下允许的时间段内完成其连接和身份验证阶段,则可能会发出连接超时错误: SQLNET.INBOUND\u CONNECT\u TIMEOUT和/或INBOUND\u CONNECT\u TIMEOUT服务器端参数 从Oracle 10.2开始,这些参数的默认值为60秒,在以前的版本中为0,表示没有超时 超时时,客户端程序将收到ORA-3135(或可能是TNS-3135)错误: ORA-3135连接失去联系 数据库将在其alert.log中记录ORA-3136错误: 。。。2008年5月10日星期六02:21:38 警告:入站连接超时(ORA-3136)
- 身份验证SQL
select value$ from props$ where name = 'GLOBAL_DB_NAME'
select privilege#,level from sysauth$ connect by grantee#=prior privilege#
and privilege#>0 start with grantee#=:1 and privilege#>0
select SYS_CONTEXT('USERENV', 'SERVER_HOST'), SYS_CONTEXT('USERENV', 'DB_UNIQUE_NAME'),
SYS_CONTEXT('USERENV', 'INSTANCE_NAME'), SYS_CONTEXT('USERENV', 'SERVICE_NAME'),
INSTANCE_NUMBER, STARTUP_TIME, SYS_CONTEXT('USERENV', 'DB_DOMAIN')
from v$instance where INSTANCE_NAME=SYS_CONTEXT('USERENV', 'INSTANCE_NAME')
select privilege# from sysauth$ where (grantee#=:1 or grantee#=1) and privilege#>0
ALTER SESSION SET NLS_LANGUAGE= 'AMERICAN' NLS_TERRITORY= 'AMERICA' NLS_CURRENCY= '$'
NLS_ISO_CURRENCY= 'AMERICA' NLS_NUMERIC_CHARACTERS= '.,' NLS_CALENDAR= 'GREGORIAN'
NLS_DATE_FORMAT= 'DD-MON-RR' NLS_DATE_LANGUAGE= 'AMERICAN' NLS_SORT= 'BINARY' TIME_ZONE= '+02:00'
NLS_COMP= 'BINARY' NLS_DUAL_CURRENCY= '$' NLS_TIME_FORMAT= 'HH.MI.SSXFF AM' NLS_TIMESTAMP_FORMAT=
'DD-MON-RR HH.MI.SSXFF AM' NLS_TIME_TZ_FORMAT= 'HH.MI.SSXFF AM TZR' NLS_TIMESTAMP_TZ_FORMAT=
'DD-MON-RR HH.MI.SSXFF AM TZR'
注意:上面的SQL列表不完整,不代表身份验证SQL的顺序。不同版本之间也可能存在差异
- 在身份验证过程中挂起
- 身份验证挂起故障排除
- ASH报告,涵盖10-15分钟的时间段,在此期间出现了多个超时错误
- 如果可能,在V$LATCHHOLDER视图上连续两次查询等待的共享资源是否为闩锁。 从v$latchholder中选择*; systemstate转储应有助于识别阻止程序会话。 第266级将向我们展示它正在执行的代码,这可能有助于找到任何现有的bug作为根本原因
- 修补程序修复了未发布的错误6879763共享池模拟器错误 有关未发布的错误6966286,请参见注释563149.1
- 未发布的错误7039896解决方法参数
select value$ from props$ where name = 'GLOBAL_DB_NAME' select privilege#,level from sysauth$ connect by grantee#=prior privilege# and privilege#>0 start with grantee#=:1 and privilege#>0 select SYS_CONTEXT('USERENV', 'SERVER_HOST'), SYS_CONTEXT('USERENV', 'DB_UNIQUE_NAME'), SYS_CONTEXT('USERENV', 'INSTANCE_NAME'), SYS_CONTEXT('USERENV', 'SERVICE_NAME'), INSTANCE_NUMBER, STARTUP_TIME, SYS_CONTEXT('USERENV', 'DB_DOMAIN') from v$instance where INSTANCE_NAME=SYS_CONTEXT('USERENV', 'INSTANCE_NAME') select privilege# from sysauth$ where (grantee#=:1 or grantee#=1) and privilege#>0 ALTER SESSION SET NLS_LANGUAGE= 'AMERICAN' NLS_TERRITORY= 'AMERICA' NLS_CURRENCY= '$' NLS_ISO_CURRENCY= 'AMERICA' NLS_NUMERIC_CHARACTERS= '.,' NLS_CALENDAR= 'GREGORIAN' NLS_DATE_FORMAT= 'DD-MON-RR' NLS_DATE_LANGUAGE= 'AMERICAN' NLS_SORT= 'BINARY' TIME_ZONE= '+02:00' NLS_COMP= 'BINARY' NLS_DUAL_CURRENCY= '$' NLS_TIME_FORMAT= 'HH.MI.SSXFF AM' NLS_TIMESTAMP_FORMAT= 'DD-MON-RR HH.MI.SSXFF AM' NLS_TIME_TZ_FORMAT= 'HH.MI.SSXFF AM TZR' NLS_TIMESTAMP_TZ_FORMAT= 'DD-MON-RR HH.MI.SSXFF AM TZR'
$ sqlplus -prelim '/ as sysdba' oradebug setmypid oradebug unlimit oradebug dump systemstate 266 ...wait 90 seconds oradebug dump systemstate 266 ...wait 90 seconds oradebug dump systemstate 266 quit