NaviCat远程连接腾讯云Oracle数据库

因为工作需要,在腾讯云上安装了一个测试用的Oracle数据库。
服务器是Windows Server 2019 / Oracle 11.2 g
客户端我用的NaviCat 12,但是连不上。显示超时错误,或者配置错误。

网上百度出很多关于配置Oracle远程访问的资料并进行了尝试,感觉都没有找到问题的关键。折腾了一个晚上加一个上午,在google的帮助下,终于彻底解决了问题。特此分享一下。

1. 服务器端设置

1.1 设置侦听器(LISTENER设置)

可以通过Net Configuration Assistant 进行设置。
不过,只是修改的话,直接编辑安装目录之(通常为"\product\11.2.0\dbhome_1\NETWORK\ADMIN")之下的listener.ora文件来得更快捷。

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = hisdbserver)(PORT = 1521))
  )

ADR_BASE_LISTENER = C:\app\Administrator

注意默认侦听器的HOST设置:hisdbserver . 这个是服务器的计算机名。 腾讯云的默认计算机名为由局域网IP地址修改成的名字,含有下划线,oracle 11g不认可这个有下划线的名字,会导致配置失败。 如果计算机名有修改,需要重启Windows。

1.2 配置TNS名字

可以通过Net Configuration Assistant 进行设置。
也可以直接编辑安装目录之(通常为"\product\11.2.0\dbhome_1\NETWORK\ADMIN")之下的tnsnames.ora文件。

ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

EMR =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = emr)
    )
  )

这里配置了一个自己的服务名EMR,注意HOST是localhost,不然外面访问会出错。
有博客的说阿里云的Oracle配置需要将HOST都设置为计算机名,这个不适合于腾讯云。
设置是否成功,可以在服务器端连接一下试试。下面是设置正常的情况。

C:\Mark\database>sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期日 6月 21 15:56:35 2020

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> 

当然,服务器本地验证成功,不能保证客户端可以正常远程访问。但是服务器端本地都不成功的话,更别提远程能正常访问了。

1.3 重启相关服务

上述设置完成后,需要重启OracleOraDb11g_homeTNSListener服务,以反映配置上的修改。注意下面的OracleService**需要保证是正在运行状态。
NaviCat远程连接腾讯云Oracle数据库_第1张图片

1.4 Windows防火墙和云服务器防火墙设置

阿里云这方面对于Oracle 的1521端口是默认不放行的。需要配置一下防火墙。 Windows的防火墙开启的话也许去设置许可的访问端口号。本文次处内容割爱。
可以参考 有梦的秋天 撰写的oracle 12c 云服务器远程连接配置 一文。

2. 客户端设置

2.1 安装Oracle客户端

可以从下面的Oracle官网下载地址去下载11g客户端,并进行安装。

2.2 配置NaviCat

2.2.1 菜单工具>选项,打开下面的窗口,在环境里面设置OCI环境为客户端安装所在的目录。

NaviCat远程连接腾讯云Oracle数据库_第2张图片

2.2.2 配置访问参数。

NaviCat远程连接腾讯云Oracle数据库_第3张图片

2.3 连接测试

2.3.1 SQLPlus连接测试

sqlplus的连接方法:

sqlplus username/password@hostname:port/SERVICENAME

下面是连接结果示例。正常连接上了。 注意别忘了写最后的那个服务名。
NaviCat远程连接腾讯云Oracle数据库_第4张图片

2.3.2 NaviCat连接测试

点击上图的【测试连接】按钮,如果出现“连接成功”消息,恭喜你,远程连接配置完毕!
NaviCat远程连接腾讯云Oracle数据库_第5张图片

你可能感兴趣的:(数据库)