今天在连接远程oracle数据库的时候碰到了一个问题,花了点时间去解决,所以记录一下,怕自己下次再遇到又需要花好长时间。
公司在某台windows服务器上安装了Oracle数据库,防火墙的入站出站规则已经配置完(入站出站规则配置网上有很多教程),本地的1521端口用telnet也是能通的,然而即便是局域网内,也无法telnet通该服务器的1521端口。
一开始以为会不会是入站出站规则配置有问题导致的,仔细检查后发现没有问题,然后想到是否要修改hosts文件,尝试修改后依然无法访问,说明与hosts文件无关。查阅了蛮多资料,最后修改了oracle安装路径(…\product\11.2.0\dbhome_1\NETWORK\ADMIN)下的 listener.ora 文件,由:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
改成了:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
)
)
修改了HOST,然后重启oracle数据库,再次尝试访问,成功!
这里碰到了一个小插曲,别的同事连接的时候正常,我连接时提示我 ORA-12638:身份证明检索失败,这个问题的解决方式是修改远程数据库 listener.ora 同一级下的 sqlnet.ora 文件,将:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
改为:
SQLNET.AUTHENTICATION_SERVICES= (BEQ, NONE)
修改完再重启一下oracle数据库,连接,成功!