一、宿主机环境
宿主机操作系统: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
网友评论