window10专业版系统,在docker中配置oracle19c

发布时间 2023-04-14 20:26:30作者: 不凉boy

window10专业版系统,在Docker中配置Oracle19c

1.环境说明

​ 系统:windows 10专业版(已打开与wsl相关的服务)

​ Docker:Dokcer 4.17.0(已为Docker配置环境变量)

2.配置流程

<1>镜像拉取

​ 首先,打开Docker客户端,在cmd中输入以下命令用以镜像拉取(使用命令行拉取镜像会被默认保存至C盘):

docker pull registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c

<2>创建本地资源保存目录,用以被挂载来实现数据持久化保存

​ 本教程假定被挂载的本地目录为:E:\oracle\oradata

<3>创建并运行容器

​ 使用如下命令创建并运行容器:

docker run -d -p 1521:1521 -p 5500:5500 -e ORACLE_SID=ORCLCDB -e ORACLE_PDB=ORCLPDB1 -e ORACLE_PWD=123456 -e ORACLE_EDITION=standard -e ORACLE_CHARACTERSET=ZHS16GBK -v /e/oracle/oradata:/opt/oracle/oradata --name oracle19c registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c

各参数详解:

-p:设定容器与本机的端口映射关系
-e:传入相应环境变量参数,在Oracle12C及以上的版本中引入了CDB和PDB概念,此处创建了一个名为ORCLCDB的CDB数据库以及一个名为ORCLPDB1的PDB数据库。
-v:设定本机目录与容器内目录的挂载关系
--name:所创建容器的名字

正常运行容器命令:

docker start oracle19c

进入已打开容器命令:

docker exec -it oracle19c bash

<4>创建新用户

​ sys用户并不能直接用于外部连接,我们需要为PDB数据库创建新的用户。

​ 首先,使用最高权限登录数据库(注意/和as中有一个空格),查看现有哪些容器:

sqlplus / as sysdba
show pdbs;

​ 登录为CDB数据库,需切换至PDB数据库(注意;不可省略)

sqlplus system/123456
alter session set container=ORCLPDB1;
show con_name;	#查看当前容器名

​ 使用如下命令创建新用户并赋权:

create user username identified by password;
grant all privileges to username;

<5>配置外部连接

​ 首先,到Instant Client for Microsoft Windows (x64) 64-bit (oracle.com)Oracle官方驱动网站下载对应版本的驱动和证书文件(版本19开头的即可),将下载好的文件解压到一个不包含中文的目录中。

​ Navicat选择工具--->选项--->环境--->OCI环境,选中我们解压后的驱动文件夹中的oci.dll文件即可。新建连接的时候的配置如下:

python连接数据库

​ 将解压后的Oracleclient文件夹中的所有dll文件复制到你所用python环境的根目录下即可,例:我使用的是anoconda的虚拟环境,将dll文件复制到D:\anaconda3\envs\MA中即可(MA为我所用的虚拟环境名)。

​ 使用pip下载python连接oracle的cx_Oracle驱动模块:

pip install cx_Oracle

​ 使用如下代码测试连接:

import cx_Oracle
conn = cx_Oracle.connect('username','password','127.0.0.1:1521/ORCLPDB1')
cusor = conn.cursor()
print('连接数据库成功!')
print(cx_Oracle.__version__)

​ 结果如下即为环境配置正确:

连接数据库成功!
8.3.0

<6>其它可能用到的命令:

关闭docker容器:

docker stop oracle19c

关闭wsl子系统:

wsl --shutdown