美文网首页
在宿主机中使用PLSQL连接Docker中配置的Oracle

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

作者: W_Gang | 来源:发表于2021-06-17 23:26 被阅读0次
    一、宿主机环境

    宿主机操作系统:Windows 10
    Docker版本:Docker version 20.10.7
    VMware版本:VMware® Workstation 16 Pro 16.0.0
    Instantclient版本:instantclient_19_11
    PL/SQL 版本:version 13.0.2.1898(64 bit)

    二、操作步骤

    1、下载 Oracle instantclient 下载地址下载 Basic Package 即可。
    2、解压到指定目录,如: D:\Develop\instantclient_x_x。
    3、在宿主机D:\Develop\instantclient_19_11目录下新建 network/admin/ 并在其目录下 新建 tnsnames.ora 文件。
    4、在 Docker 中进入Oracle 容器,使用 sqlplus 登录 Oracle,并查看 service_names 。
    5、更新宿主机 tnsnames.ora 文件内容

    • 使用如下命令进入 Oracle 的 bash
    docker exec -it oracle11g bash
    
    • 如果登录sqlplus,发现sqlplus命令不可用,所以需要进行相关配置,操作步骤如下(可能登录直接跳过):
    (1)、切换到root用户模式下
            su root
            输入密码helowin
    
    (2)、编辑profile文件配置ORACLE环境变量 (如果找不到sqlplus,请在这执行完输入:source /etc/profile)
    
            vi /etc/profile 并在文件最后添加如下命令
    
            export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
            export ORACLE_SID=helowin
            export PATH=$ORACLE_HOME/bin:$PATH
    
            退出并保存。       
    
    • 软件连接
    ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
    
    • 切换到oracle 用户(先退出其它用户)
    su - oracle
    
    -- 登录sqlplus并修改sys、system用户密码
    sqlplus /nolog
    conn /as sysdba
    
    -- 接着执行下面命令,修改用户密码
    alter user system identified by system;
    alter user sys identified by sys;
    -- alter user scott identified by tiger;
    
    oracle关闭和重启:shutdown immediate,startup
    
    • 查看oracle 的 service name
    SQL> show parameter service_name;
    
    NAME                    TYPE     VALUE
    --------------------    -------- --------------------------
    service_names          string    helowin
    SQL> 
    
    
    
    • 查看oracle的本地tnsnames.ora文件 ,copy下 来
    -- 注意这里一定是进入到Oracle容器内,否则看不到配置(docker exec -it oracle11g bash)
     vi /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/tnsnames.ora 
    
    HELOWIN =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = helowin)
        )
      )
    
    -- 退出容器
    exit
    
    • 更新先前建立好的 tnsnames.ora 文件,粘贴刚刚在Oracle 容器中复制下来的内容,并保存

    HELOWIN =
    (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = helowin)
    )
    )
    这里的HOST是虚拟机的IP,虚拟机是NAT网络模式这里保持不变,如果要直接远程连接就设置为 docker ps 中Oracle的地址或是虚拟机地址
    (SERVICE_NAME = helowin) 是刚刚查询的 service_name 的值

    三、VMware端口映射
    • 查看虚拟机IP地址


      image.png
    • 设置VMware NAT 端口映射

    VMware -> 编辑 -> 虚拟网络编辑器


    image.png
    image.png
    image.png

    添加端口映射,IP地址为刚刚查询的虚拟机的IP,端口是Oracle容器的端口,这样就把Docker下的Oracle容器端口映射到宿主机上了

    四、设置环境变量

    ORACLE_HOME = D:\Develop\instantclient_19_11
    TNS_ADMIN = %ORACLE_HOME%\network\admin
    NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK
    将 ORACLE_HOME 配置到 Path 变量中。

    五、设置PL/SQL连接Oracle
    image.png

    在OCI library(empty is autodete) 一栏中设置:D:\Develop\instantclient_19_11\oci.dll(无法选择直接把目录地址复制进去),Apply -> OK ,重启 PL/SQL 后就有 Connect as 选项了


    image.png

    输入用户名/密码 OK


    image.png

    相关文章

      网友评论

          本文标题:在宿主机中使用PLSQL连接Docker中配置的Oracle

          本文链接:https://www.haomeiwen.com/subject/vahhyltx.html