前段时间工作中需要在不少开发环境中快速提供开发可用的oracle环境,由于一一培训并部署原生oracle人力和时间成本过高,后来使用docker版本oracle,大大方便了开发工作的快速启动,方法记录如下:
1. 前提条件
需要在相关环境上安装好docker,建议版本在17以上,越新越好;同时安装好 docker-compose 。
docker安装(CentOS系统上)可以参考官方文档: https://docs.docker.com/install/linux/docker-ce/centos/
docker-compose 安装参考官方文档: https://docs.docker.com/compose/install/
2. 安装完毕后,编辑好oracle的docker-compose 启动描述文件
使用oracle-xe-11 版本,
首先,下载镜像并创建目录
docker pull sath89/oracle-xe-11g
mkdir oracle-xe-11g
cd oracle-xe-11g
vi docker-compose.yaml
docker-compose.yaml描述文件内容如下:
version: "3"
services:
orcl11g:
image: sath89/oracle-xe-11g
environment:
processes: "500"
sessions: "555"
transactions: "610"
DEFAULT_SYS_PASS: "oracle"
ports:
- "18080:8080"
- "11521:1521"
volumes:
- ./db-data:/u01/app/oracle
- ./db-initsql:/docker-entrypoint-initdb.d
最后启动该oracle镜像:
docker-compose up -d
注意:若使用docker-compose up 命令启动一段时间(比如30秒)后ctrl+C中断,再docker-compose up -d 则可能出现该oracle再也无法启动,报错信息各异。此时使用 docker-compose down -v清理一次,并删除挂载的目录后,再次启动即可。
3. oracle的基本管理
管理员权限连接上该oracle实例:
sqlplus /nolog
connect system@oracle@//localhost:11521/XE;
注意:上述命令中,oracle为system的默认密码,在docker-compose.yaml 中进行配置,且仅在初次启动时生效;11521为docker映射的端口;XE为默认ServiceName
创建应用数据库以及用户名:
create tablespace user1 datafile '/u01/app/oracle/oradata/XE/user1_1.dbf' size 10m autoextend on;
create user user1 identified by password1234 default tablespace user1 temporary tablespace temp quota unlimited on user1;
grant resource to user1;
grant connect to user1;
注意:上述命令将创建用户user1,密码为password1234,默认表空间名为user1,初始大小为10m且自动扩展;同时赋予该用户基本的connect和resources权限
解锁用户
alter user user1 account unlock;
彻底删除用户和对应的表空间:
drop user user1 cascade
; drop tablespace user1 including contents and datafiles
;
最后,特别说明:
1. 该版本的oracle支持的最大表空间为11G左右,即其总表空间大小达到11G左右时会出现无法分配空间的情况。
2. 上述SQL指令,若无特别说明,则应该在sqlplus管理员权限模式下执行。