使用 docker-compose 部署 oracle19c
目前应该很少有公司再使用 oracle 11g R2 版本了,官方在 2020-12-31 日后就停止支持和维护了,绝大多数公司应该都升级到 oracle 19c 版本了。
因此当前 oracle 数据库中使用最多的版本就是 oracle 19c 了,但是官方对其支持和维护的截止日期是 2026-3-31。
其实即使官方停止技术支持和维护了,我们也还是能够正常使用的,我们绝大多数情况下,也不需要官方的支持和维护服务。
本篇博客介绍如何通过 docker-compose 快速部署 oracle 19c 标准版,以及通过官方的 sql developer 工具进行连接。
一、部署 oracle 19c
我的 CentOS7 虚拟机 ip 地址是 192.168.136.128,已经安装好了 docker 和 docker-compose
创建好数据目录:mkdir -p /data/oracle19c/data
在 /data/oracle19c 目录下创建 docker-compose.yml 文件,结构如下所示:
编写 docker-compose.yml 文件内容如下:
version: '3.2'
services:
oracle19c:
image: registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c
container_name: oracle19c
restart: always
ports:
- "1521:1521"
environment:
ORACLE_SID: orcl
ORACLE_PDB: orclpdb
ORACLE_PWD: Jobs@666
ORACLE_EDITION: standard
ORACLE_CHARACTERSET: AL32UTF8
volumes:
- /data/oracle19c/data:/opt/oracle/oradata
- /etc/localtime:/etc/localtime
容器内的 oracle 数据存放地址 /opt/oracle/oradata,需要映射到外面的 /data/oracle19c/data 目录
之所以将外部的 /etc/localtime 映射到容器内,主要是因为默认情况下容器内的时区是 utc 时区,我们外部的时区一般是北京时区。
如果不进行映射 /etc/localtime 文件的话,数据库自动产生的时间都是 utc 时间,比北京时间少 8 个小时。
最后在 oracle19c 目录下,执行 docker-compose up -d
即可,然后使用 docker-compose logs -f
查看实时日志信息。
启动服务的速度会比较慢,需要的时间比较长,当看到如下日志信息时,表示已经部署成功
二、使用官方提供的客户端工具连接oracle19c
虽然使用 navicat(我使用的版本是 16)也可以连接 oracle,但是在创建新用户时总是报错,下载官方提供的 SQL Developer 工具,连接 oracle 数据库后,进行各种操作都是正常的。
SQL Developer 工具是免费的,而且也提供的中文版,个人感觉还是挺好用的。当然有的人喜欢第三方提供的 PL/SQL Developer 工具,这个是收费的英文版,网上也提供破解的中文版,看自己的个人喜好吧。
oracle 官方提供的 SQL Developer 的下载地址为:https://www.oracle.com/database/sqldeveloper/technologies/download
无论你的电脑上是否安装了 jdk,建议就下载自带 jdk 的 SQL Developer 工具,这样比较方便。
下载后的 SQL Developer 是一个压缩包,绿色版本,只要解压缩后,就可以正常使用。
我当前使用的最新版本是 23.1.1,启动初始化界面如上图所示,然后可以添加 oracle 连接,访问我们部署好的 oracle19c 数据库:
参照 docker-compose 文件内容 ,两个管理员账号 sys 和 system 的密码都是 Jobs@666
如果使用 sys 超级管理员登录的话,其角色必须要选择 sysdba 或 sysoper,而 system 账号的角色可以使用默认值 normal 进行登录。
参照 docker-compose 文件内容 ,服务名填写 orclpdb 或 orcl 都可以,SID 填写 orcl 也可以,都能成功连接到我们部署的 oracle 19c 数据库。
有关 oracle 19c 如何使用,这里就不介绍了,其实很简单,通过 SQL Developer 工具可视化操作,创建用户、表、编写 sql 语句,都很方便。