美文网首页
在宿主机中使用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