0

我无法通过 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 文件有关,但我已经没有想法了。

4

0 回答 0