【问题标题】:How to access Oracle database over network?如何通过网络访问 Oracle 数据库?
【发布时间】:2015-07-25 19:03:19
【问题描述】:

我正在尝试通过网络访问我的 Oracle 数据库。我有很多 Google 并找到了很多解决方案,但这些对我不起作用。

问题是,我想通过本地网络从一台计算机访问我的 Oracle 数据库到另一台计算机。

我所做的是......

  1. 我找到了使用
  2. 修改 listener.ora 文件的解决方案

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dbp.devProject.com)(PORT=1521)))

当我修改这个文件并尝试运行和访问数据库时,什么都不会发生,它会抛出一个错误,您指定的端口号被另一个侦听器使用,所以我已经更改了端口号,但我无法访问数据库。 2. 我在oracle的工具Net Manager的帮助下配置了一个新的监听器,它为我做了一个监听器,但它不能通过网络访问数据库。

这里是一些必需的结果。

  1. lsnrctl status:使用侦听器名称 LISTENER 的侦听器已经启动。
  2. 连接字符串:jdbc:oracle:thin:@dbp.devProject.com:4541:myDB
  3. 数据库版本
    1. Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64 位生产
    2. PL/SQL 版本 11.2.0.1.0 - 生产
    3. 核心 11.2.0.1.0 生产
    4. 适用于 64 位 Windows 的 TNS:版本 11.2.0.1.0 - 生产
    5. NLSRTL 版本 11.2.0.1.0 - 生产

status 向我展示了这一点。

连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

监听器的状态

别名:LISTENER

版本:64 位 Windows 的 TNSLSNR:版本 11.2.0.1.0 - 生产

开始日期:2015 年 5 月 14 日 11:58:05

正常运行时间:0 天 2 小时。 29 分钟。 50 秒

跟踪级别:关闭

安全性:开启:本地操作系统身份验证

SNMP:关闭

监听参数文件:product\11.2.0\dbhome_1\network\admin\listener.ora

监听器日志文件:\listener\alert\log.xml

监听端点总结...

1. (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
2. (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))

有人请帮助我。 感谢您的帮助..

【问题讨论】:

  • 现有侦听器在哪个 IP 和端口上 - lsnrctl status 显示什么?您的数据库注册了哪个侦听器(如果有的话)(两者都是lsnrctl services)?您尝试如何连接 - 地址、端口、服务名称/SID;实际上是整个连接字符串?
  • @AlexPoole :好吧,我没有使用任何 IP,我使用的主机名 dbp.devProject.com 端口号为 4541(此端口是免费的,没有任何服务或程序正在使用。)而 lsnrctl 显示 LISTENER 已经启动。
  • 您是否在进行更改后重新启动了侦听器?如前所述,您是否检查了侦听器状态?
  • 最重要的是,您要修改哪个监听器文件?确保您正在检查数据库服务器中的侦听器,而不是您尝试连接的机器。我的意思是以防万一您在客户端也安装了 Oracle 软件。

标签: database oracle listener remote-connection


【解决方案1】:

在您尝试连接到数据库的系统上的 TNSNAMES.ORA 文件中创建一个条目。 (TNSNAMES.ORA 位于 ORACLE_INSTALLATION_PATH/Network/Admin/ 文件夹中)

示例条目:

DB_HOST_NAME =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = DB_HOST_NAME)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = XE)

    )

  )

如果您安装了多个 Oracle 客户端,您可能需要在所有这些 TNSNAMES.ORA 中进行更新

【讨论】:

    【解决方案2】:

    当您在为数据库创建远程访问时遇到此类错误时,请先执行以下操作。

    1. 使用Oracle的Net Manager工具创建监听器或手动创建。
    2. 生成监听器后,查看“listener.ora” [位于:ORACLE_INSTALLED_DIR\product\11.2.0\dbhome_1\NETWORK\ADMIN] 文件,供您输入。 (是否有任何您之前创建的监听器条目。如果您找到了您的条目,然后执行下一步,否则从第一步开始。)
    3. 如果您找到了侦听器的条目,请打开命令提示符并触发命令lsnrctl status。这将为您提供所有当前正在运行的侦听器列表,找出您之前创建的列表。
    4. 查看Host NamePort Number 以获取您的听众。
    5. 根据您在lsnrctl status 中找到的详细信息生成连接字符串
    6. 与数据库连接,您可以从网络中的任何位置访问数据库。

    乐在其中,有些挑战需要努力,一旦退缩,就永远解决不了。

    我真的很感谢所有回答和评论这个问题的人,这些材料让我的挑战变得容易..

    谢谢@Alex、@Lalit、@TenG 和 @S.Krishna 非常感谢你们。

    【讨论】:

      【解决方案3】:

      如果您的主机名和端口号是侦听器,那么您可以通过在防火墙设置中启用端口号来尝试此选项。

      在 Windows 防火墙中打开端口

      • 打开控制面板。 ...
      • 打开 Windows 防火墙。 ...
      • 单击高级设置链接。 ...
      • 选择“入站规则”。 ...
      • 在“入站规则”下创建“新规则”。 ...
      • 从向导的第一个屏幕中选择“端口”。 ...
      • 选择 TCP 或 UDP。 ...
      • 输入端口范围。 ...
      • 完成向导。

      【讨论】:

      • 我能够在同一台计算机上进行本地连接,但不能从另一台计算机(Mac)连接,首先我尝试禁用防火墙,然后尝试您的建议。两者都有效。
      猜你喜欢
      • 1970-01-01
      • 2016-07-01
      • 1970-01-01
      • 2018-11-13
      • 2011-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多