【问题标题】:How to connect to Oracle 11g database remotely如何远程连接到Oracle 11g 数据库
【发布时间】:2011-11-12 23:21:01
【问题描述】:

我在计算机 A 上安装了 Oracle 11g XE。我可以使用命令 connect username/password 通过 sql 命令行进行连接。我也可以向Demo数据库发送SQL指令:Select * from demo_customers;

数据库在计算机 A 的 localhost 上运行。

我希望计算机 B 在本地主机上连接到计算机 A 的数据库。我该怎么做?

【问题讨论】:

    标签: oracle oracle11g


    【解决方案1】:

    您需要在服务器 A 上运行 lsnrctl 实用程序来启动侦听器。然后,您将使用以下语法从计算机 B 进行连接:

    sqlplus username/password@hostA:1521 /XE
    

    如果使用默认值 1521,则端口信息是可选的。

    Listener configuration documentation here. Remote connection documentation here.

    【讨论】:

      【解决方案2】:

      我安装了 Oracle 服务器,它允许从本地计算机连接没有问题。但是从我家庭网络上的另一台 Maclaptop,它无法使用 Sql Developer 或 Sql Plus 进行连接。在做了一些研究之后,我发现你必须做这个额外的步骤:

      使用 Oracle 网络管理器。选择监听器。在 127.0.0.1 或 localhost 之外添加 IP 地址(在我的情况下为 192.168.1.12)。

      这最终会在 [OracleHome]\product\11.2.0\dbhome_1\network\admin\listener.ora 中添加一个条目

      • 重启监听服务。 (注意:对我来说,我重启机器一次以使其工作)

      • 使用 lsnrctl status 进行验证
        注意额外的 HOST=192.168.1.12 出现了,这就是使远程连接正常工作的原因。

        C:\Windows\System32>lsnrctl 状态
        适用于 64 位 Windows 的 LSNRCTL:版本 11.2.0.1.0 - 2015 年 9 月 5 日 13:51:43 生产
        版权所有 (c) 1991、2010,甲骨文。保留所有权利。
        连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
        监听器的状态


        别名 LISTENER
        适用于 64 位 Windows 的版本 TNSLSNR:版本 11.2.0.1.0 - 生产
        开始日期 05-SEP-2015 13:45:18
        正常运行时间 0 天 0 小时。 6分钟。 24 秒
        跟踪级别关闭
        安全开启:本地操作系统身份验证
        SNMP 关闭
        监听器参数文件
        D:\oracle11gr2\product\11.2.0\dbhome_1\network\admin\listener.ora
        侦听器日志文件 d:\oracle11gr2\diag\tnslsnr\eagleii\listener\alert\log.xml
        监听端点总结...
        (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.\pipe\EXTPROC1521ipc)))
        (描述=(地址=(协议=tcp)(主机=127.0.0.1)(端口=1521)))
        (描述=(地址=(协议=tcp)(主机=192.168.1.12)(端口=1521)))
        服务总结...
        服务“CLRExtProc”有 1 个实例。
        实例“CLRExtProc”,状态 UNKNOWN,有 1 个用于此服务的处理程序...
        服务“xe”有 1 个实例。
        实例“xe”,状态 READY,有 1 个用于此服务的处理程序... 服务“xeXDB”有 1 个实例。
        实例“xe”,状态 READY,有 1 个用于此服务的处理程序... 命令成功完成

      • 使用 tnsping 测试连接
        ping IPv4 地址,而不是 localhost 或 127.0.0.1

      C:\Windows\System32>tnsping 192.168.1.12
      适用于 64 位 Windows 的 TNS Ping 实用程序:版本 11.2.0.1.0 - 2015 年 9 月 5 日 14:09:11 生产
      版权所有 (c) 1997、2010,甲骨文。保留所有权利。
      使用的参数文件:
      D:\oracle11gr2\product\11.2.0\dbhome_1\network\admin\sqlnet.ora

      使用 EZCONNECT 适配器解析别名
      正在尝试联系 (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.12)(PORT=1521)))
      好的(0 毫秒)

      【讨论】:

      • 伟大而尽可能简单。
      【解决方案3】:

      首先,确保接收客户端连接请求的数据库服务器(计算机 A)上的监听器正在运行。为此,请运行lsnrctl status 命令。

      如果您收到TNS:no listener 消息(见下图),则表示侦听器服务未运行。要启动它,请运行lsnrctl start 命令。

      其次,对于远程客户端的数据库操作和连接,必须将以下可执行文件添加到 Windows 防火墙例外列表中:(见图)

      Oracle_home\bin\oracle.exe - Oracle 数据库可执行文件

      Oracle_home\bin\tnslsnr.exe - Oracle 监听器

      最后,在客户端机器(计算机B)上安装oracle Instant Client并运行:

      sqlplus user/password@computerA:port/XE

      【讨论】:

        【解决方案4】:

        它在计算机上非常简单,您不需要做任何事情,只要确保两个系统都在同一个网络上,如果它不能访问互联网(为此,您需要静态 IP)。好的,现在在计算机b上进入开始菜单在oracle文件夹下找到配置点击该文件夹下的网络配置助手,当窗口弹出时点击本地网络配置选项它必须是第三个选项。

        现在单击添加并在下一个屏幕中单击下一步它会在此处询问服务名称您需要添加计算机 A 的 oracle 全局数据库名称(通常我使用 oracle86 进行安装)现在单击下一个屏幕通常选择协议其 tcp 单击下一步在主机名中输入计算机A的名称你可以在我的计算机属性中找到。单击下一步不要更改端口,直到您在计算机 A 中更改端口单击下一步并现在选择测试连接,如果错误是用户名和密码不正确,您可以检查您的连接是否正常,然后单击登录凭据按钮并填写正确的用户名和密码。如果它说无法到达未找到目标计算机,则必须在防火墙中为 1521 端口添加例外,或者只是禁用计算机 A 上的防火墙。

        【讨论】:

          【解决方案5】:

          首先。 需要为计算机 A 和 B 添加静态 IP 地址。 例如,在我的情况下,计算机 A (172.20.14.13) 和 B (172.20.14.78)。

          第二。 在带有网络管理器的计算机 A 中为 Listener 添加新地址(172.20.14.13)或在 listener.ora 中手动添加新记录

          # listener.ora Network Configuration File: E:\app\user\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
          # Generated by Oracle configuration tools.
          
          SID_LIST_LISTENER =
            (SID_LIST =
              (SID_DESC =
                (SID_NAME = CLRExtProc)
                (ORACLE_HOME = E:\app\user\product\11.2.0\dbhome_1)
                (PROGRAM = extproc)
                (ENVS = "EXTPROC_DLLS=ONLY:E:\app\user\product\11.2.0\dbhome_1\bin\oraclr11.dll")
              )
            )
          
          LISTENER =
            (DESCRIPTION_LIST =
              (DESCRIPTION =
                (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
              )
              (DESCRIPTION =
                (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
              )
              (DESCRIPTION =
                (ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.14.13)(PORT = 1521))
              )
            )
          
          ADR_BASE_LISTENER = E:\app\user
          

          第三。 使用 Net Manager 使用 IP 地址计算机 B (172.20.14.78) 创建服务命名或在 tnsnames.ora 中手动添加新记录

          # tnsnames.ora Network Configuration File: E:\app\user\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
          # Generated by Oracle configuration tools.
          
          ALINADB =
            (DESCRIPTION =
              (ADDRESS_LIST =
                (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
              )
              (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = alinadb)
              )
            )
          
          LISTENER_ALINADB =
            (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
          
          
          LOCAL =
            (DESCRIPTION =
              (ADDRESS_LIST =
                (ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.14.13)(PORT = 1521))
              )
              (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = alinadb)
              )
            )
          
          ORACLR_CONNECTION_DATA =
            (DESCRIPTION =
              (ADDRESS_LIST =
                (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
              )
              (CONNECT_DATA =
                (SID = CLRExtProc)
                (PRESENTATION = RO)
              )
            )
          
          ORCL =
            (DESCRIPTION =
              (ADDRESS_LIST =
                (ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.14.78)(PORT = 1521))
              )
              (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = orcl)
              )
            )
          

          第四。 在计算机 B (172.20.14.78) 上安装 win64_11gR2_client (例如它适用于 Windows 10 Pro 64 位)

          五个。 使用 Net Configuration Assistant 监听器(localhost)创建或在 listener.ora 中手动添加记录

          # listener.ora Network Configuration File: F:\app\alinasoft\product\11.2.0\client_1\network\admin\listener.ora
          # Generated by Oracle configuration tools.
          
              LISTENER =
                (DESCRIPTION_LIST =
                  (DESCRIPTION =
                    (ADDRESS = (PROTOCOL = TCP)(HOST = myserver)(PORT = 1521))
                    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
                  )
                )
          
              ADR_BASE_LISTENER = F:\app\alinasoft
          

          六个。 使用 Net Manager 使用 IP 地址计算机创建服务命名 A (172.20.14.13) 或者在 tnsnames.ora 中手动添加新记录。

          SERVER-DB =
            (DESCRIPTION =
              (ADDRESS_LIST =
                (ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.14.13)(PORT = 1521))
              )
              (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = alinadb)
              )
            )
          

          (计算机 A - (172.20.14.13))对于远程客户端的数据库操作和连接,必须将以下可执行文件添加到 Windows 防火墙例外列表中:(见图) Oracle_home\bin\oracle.exe - Oracle 数据库可执行文件 Oracle_home\bin\tnslsnr.exe - Oracle 监听器

          允许 Oracle Enterprise Manager (https://172.20.14.13:1158/em/console/logon/logon) 的端口 1158(计算机 A - (172.20.14.13))的连接

          第九名 允许连接端口 1521(进出)(计算机 A - (172.20.14.17))

          第十名 在计算机 B 172.20.14.78 sqlplus /NOLOG 连接系统/oracle@//172.20.14.13:1521/alinadb

          如果使用 Toad,在我的情况下是

          【讨论】:

            【解决方案6】:
            # . /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh  
            
            #  sqlplus /nolog  
            
            SQL> connect sys/password as sysdba                                           
            
            SQL>  EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);  
            
            SQL> CONNECT sys/password@hostname:1521 as sysdba
            

            【讨论】:

              猜你喜欢
              • 2013-06-10
              • 2014-06-03
              • 2021-01-14
              • 1970-01-01
              • 1970-01-01
              • 2012-01-20
              • 1970-01-01
              • 2011-05-21
              • 1970-01-01
              相关资源
              最近更新 更多