我无法通过 sql*net 连接到我的 Oracle 12 数据库
向后追溯我的 tnsping 结果如下:
tnsping devpdb
TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 08-OCT-2014 05:28:55
Copyright (c) 1997, 2014, Oracle. All rights reserved.
Used parameter files:
Used HOSTNAME adapter to resolve the alias
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=XX.XXX.XXX.XX)(PORT=1521)))
无法从此计算机解析主机 IP。我不知道它是从哪里得到的,不是这个主机或路由器的 NAT 地址,每次 ping 至少有 30 跳。
tnsnames.ora:
# Generated by Oracle configuration tools.
DEVDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = tts-PowerEdge-T105)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = devDB)
)
)
DEVPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = tts-PowerEdge-T105)(PORT = 1521))
(CONNECT_DATA =
(SID = devpdb)
(SERVER = DEDICATED)
(SERVICE_NAME = devpdb)
)
)
DIAMONDPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = tts-PowerEdge-T105)(PORT = 1521))
(CONNECT_DATA =
(SID = DIAMONDPDB)
(SERVER = DEDICATED)
(SERVICE_NAME = DIAMONDPDB)
)
)
/etc/hosts 是:
127.0.0.1 localhost
192.168.1.2 tts-PowerEdge-T105
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
平工作:
ping tts-PowerEdge-T105 PING tts-PowerEdge-T105 (192.168.1.2) 56(84) 字节的数据。来自 tts-PowerEdge-T105 (192.168.1.2) 的 64 字节:icmp_seq=1 ttl=64 time=0.054 ms
我的 sqlnet.ora:
# sqlnet.ora Network Configuration File: /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
当我按如下方式更改 tnsnames.ora 时:
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
DEVDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = tts-PowerEdge-T105)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = devDB)
)
)
DEVPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = tts-PowerEdge-T105)(PORT = 1521))
(CONNECT_DATA =
(SID = devpdb)
(SERVER = DEDICATED)
(SERVICE_NAME = devpdb)
)
)
DIAMONDPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))
(CONNECT_DATA =
(SID = DIAMONDPDB)
(SERVER = DEDICATED)
(SERVICE_NAME = DIAMONDPDB)
)
)
WTF =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))
(CONNECT_DATA =
(SID = WTF)
(SERVER = DEDICATED)
(SERVICE_NAME = WTF)
)
)
我明白了:
tnsping wtf
TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 08-OCT-2014 08:21:15
Copyright (c) 1997, 2014, Oracle. All rights reserved.
Used parameter files:
TNS-03505: Failed to resolve name
我的环境:
LD_LIBRARY_PATH=/u01/app/oracle/product/12.1.0/dbhome_1/lib
ORACLE_SID=devDB
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
我什至可以删除我的 tnsnames.ora 文件并获取原始消息,这样它就不会被使用。
我尝试将我的 sqlnet.ora 更改为:
# sqlnet.ora Network Configuration File: /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
#NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
NAMES.DIRECTORY_PATH= (HOSTNAME,TNSNAMES, ONAMES)
这没什么区别
因此,无论 HOSTNAME 适配器是什么或它是如何配置的似乎都是问题所在。请注意,“使用的参数文件:”为空
我导出了 TNS_ADMIN
export TNS_ADMIN=/home/u01/app/oracle/product/12.1.0/dbhome_1/network/admin
但仍然没有使用参数文件。我对该文件具有读取权限。
我怀疑这与我的 sqlnet.ora 文件有关,但我已经没有想法了。