【问题标题】:Create DB link to oracle cloud database which installed in private network创建到安装在私有网络中的 Oracle 云数据库的 DB 链接
【发布时间】:2018-04-24 11:36:02
【问题描述】:

我有公共 IP,Oracle 云数据库安装在私有 IP 中。通过公网IP我们可以建立ssh隧道到私网IP并转发localhost端口访问Oracle云数据库。

我的任务是创建从我的本地主机 oracle 数据库到云 Oracle 数据库的数据库链接。所以我可以从我的 localhost oracle DB 访问 Oracle 云 DB 架构。

我使用 Putty 建立 SSH 和 localhost 端口转发,我可以使用 SQL developer/Toad 访问 Oracle Cloud DB。所以公共/私有 IP 和 SSH 详细信息是正确的。

在这种情况下,如何创建DB链接?

【问题讨论】:

    标签: oracle ssh ssh-tunnel oracle-cloud-infrastructure-classic


    【解决方案1】:

    您已经将来自localhost 端口X 的连接转发到AWS 中的目标私有IP(让它成为RDS:1521)。所以你的配置是localhost:X -> RDS:1521。您还需要架构名称 (myusername) 及其密码 (mypassword)。

    CREATE DATABASE LINK mylink 
        CONNECT TO myusername IDENTIFIED BY mypassword
        USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=X))
               (CONNECT_DATA=(SERVER=dedicated)
               (SERVICE_NAME=myrdsservicename)))';
    

    用于创建数据库链接can be found here 的 Oracle 12c 语法。

    我更喜欢在tnsnames.ora 中为上面的连接字符串创建一个条目,而不是使用 RAW 连接参数(如上),并为 localhost 转发连接使用符号名称。

    【讨论】:

    • 我试过下面的语法,创建数据库链接 mylink 连接到 myusername 由 mypassword 使用 '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=X)) (CONNECT_DATA =(SERVER=dedicated) (SERVICE_NAME=myrdsservicename)))';
    • 我试过下面的语法,创建数据库链接 mylink 连接到 myusername 由 mypassword 使用 '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=X)) (CONNECT_DATA =(SERVER=dedicated) (SERVICE_NAME=myrdsservicename)))';我给出了本地转发端口和服务名称,但我收到错误 ORA-12541 “TNS no listener”。我在 toad/sql 开发人员中使用了相同的端口和服务,它已连接。但是在尝试通过 DB 链接时,它不会引发侦听器错误。
    猜你喜欢
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 2016-08-24
    • 2022-10-16
    • 1970-01-01
    • 2013-10-06
    相关资源
    最近更新 更多