在宿主机中使用PLSQL连接Docker中配置的Oracle

在宿主机中使用PLSQL连接Docker中配置的Oracle

不想繁琐的在机器上安装 Oracle 数据库。利用 Docker 拉取 Oracle 镜像,创建实例。并通过宿主机的PLSQL 连接,以便进行需要的后续操作。

一、环境说明:

宿主机操作系统:Windows 10

Docker版本:Docker version 19.03.8

二、操作步骤
  1. 下载 Oracle instantclient 下载地址下载 Basic Package 即可。

  2. 解压到指定目录,如: D:\Develop\instantclient_19_8。

  3. D:\Develop\instantclient_19_8 目录下新建 network/admin/ 并在其目录下 新建 tnsnames.ora 文件。

  4. 在 Docker 中 ,进入Oracle 容器的 bash,使用 sqlplus 登录 Oracle,并查看 service_names 。

    • 使用如下命令进入 Oracle 的 bash
    docker exec -it oracle11g /bin/bash
    
    • 进入之后 cd $ORACLE_HOME 切换到 ORACLE_HOME 目录下,使用 sqlplus 进行登录。
    root@92e15e179d42:/# cd $ORACLE_HOME
    
    root@92e15e179d42:/u01/app/oracle/product/11.2.0/xe# sqlplus
    
    • 使用如下命令查看 oracle 的 service name。
    SQL>show parameter service_name
    
  5. 查看 Docker 在宿主机上的 IP 地址,在网络连接上查看Docker虚拟机的 IPV4 属性上的地址。

  6. 编辑之前建立好的 tnsnames.ora 文件。内容如下:

    test_docker_oracle=
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST= 172.18.20.129)(PORT = 1521))
      (CONNECT_DATA =
        (SERVER = DEDICATED)
        (SERVICE_NAME = xe)
      )
    )
    

    HOST 为 Docker 在宿主机上的 IP 地址, SERVICE_NAME 是之前在 Docker 中 ORACLE 中查看得到的服务名。

  7. 配置 Windows 环境变量。

    ORACLE_HOME = D:\Develop\instantclient_19_8

    TNS_ADMIN = %ORACLE_HOME%\network\admin

    NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK

    将 ORACLE_HOME 配置到 Path 变量中。

  8. 启动 PLSQL。此时登录画面可以选择的数据库选项有刚刚配置的 test_docker_oracle

  9. 登录成功,即连接成功。

三、遇到的问题
  • Error while trying to retrieve text for error ORA-01804

    解决:此时需要检查一下环境变量的配置是否正确,是否有别的版本的 Oracle 的环境配置。

  • 登录时候,连接超时。

    解决:此时需要宿主机测试 与 Docker 是否连通。如果 ping 不通。则需要建立路由。

    route add 172.18.20.129 mask 255.255.255.0 192.168.43.151
    

    将 Doker 和 宿主机 路由连通。

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页