一卓的博客

怕什么真理无穷,
进一寸有一寸的欢喜。

0%

Docker 镜像 Oracle 12c 配置

前言

Oracle 12C 新特性——CDB 与 PDB

Oracle 12C 引入了 CDB 与 PDB 的新特性,在 ORACLE 12C 数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB 全称为 Container Database,中文翻译为数据库容器,PDB 全称为 Pluggable Database,即可插拔数据库。在 ORACLE 12C 之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入 ORACLE 12C 后,实例与数据库可以是一对多的关系。

在阅读本文之前,需要先注册 Docker hub 账号。因为 Oracle 12c 的官方镜像需要登陆 Docker hub。

第一步:登陆 Docker hub

1
docker login

安装提示输入 Docker hub 的用户名及密码

第二步:拉取 Oracle 12c 镜像

1
docker pull store/oracle/database-enterprise:12.2.0.1

第三步:创建容器

1
docker run -d -p 9080:8080 -p 1521:1521 --name oracle store/oracle/database-enterprise:12.2.0.1

第四步:启动容器

1
docker start oracle

使用 docker ps 命令查看 Oracle 启动结果,等状态为 healthy ,就可以开始配置 Oracle 了

1
2
3
➜  ~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ec7378c7bd73 store/oracle/database-enterprise:12.2.0.1 "/bin/sh -c '/bin/ba…" 3 weeks ago Up 31 hours (healthy) 0.0.0.0:1521->1521/tcp, 5500/tcp, 0.0.0.0:9080->8080/tcp oracle

第五步:配置 Oracle

首先进入容器

1
docker exec -it oracle /bin/bash

创建目录,为了下面创建表空间存放文件使用

1
mkdir -p /home/oracle/oradata

使用默认密码 sys/Oradoc_db1 登陆

登陆时需确认 Oracle 容器状态为 healthy

1
2
3
4
5
6
7
8
9
10
11
12
[oracle@oracle /]$ sqlplus sys/Oradoc_db1@ORCLCDB as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Fri Jan 1 14:18:11 2021

Copyright (c) 1982, 2016, Oracle. All rights reserved.

Last Successful login time: Thu Dec 10 2020 07:27:01 +00:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL>

修改密码

1
alter user sys identified by 新密码;

为了防止命令行中数据展示表格错乱的情况可以设计行宽和列宽

每行展示300个字符

1
SQL> set linesize 300

查看CDB容器中的PDBS信息

1
2
3
4
5
6
SQL> select con_id, dbid, guid, name , open_mode from v$pdbs;

CON_ID DBID GUID NAME OPEN_MODE
---------- ---------- -------------------------------- -------------------------------------------------------------------------------------------------------------------------------- ----------
2 874739485 49BBBDA685E81921E053AA43C40A7BEA PDB$SEED READ ONLY
3 4173724830 B6181033109C016FE053020012AC4F1F ORCLPDB1 READ WRITE

在容器间切换 切换到 pdb

1
2
3
SQL> alter session set container = ORCLPDB1;

Session altered.

创建临时表空间

1
create temporary tablespace TABLE_SPACE_TMP  tempfile '/home/oracle/oradata/temp.dbf' size 128M autoextend on next 128M maxsize 512M extent management local;

创建表空间

1
create tablespace TABLE_SPACE_NAME logging datafile '/home/oracle/oradata/tbs.dbf'  size 512M;

创建用户

创建用户需切换至 pdb

1
create user 用户名 identified by 密码 default tablespace TABLE_SPACE_NAME temporary tablespace TABLE_SPACE_TMP;

授权

1
grant connect,resource,dba to 用户名;

提交

1
commit;

退出

1
exit;

使用创建的用户登陆

1
sqlplus 用户名/密码@ORCLPDB1

至此 Oracle 数据库配置完成。

连接数据库

Mac 使用 Navicat 连接 Oracle

1
2
3
4
5
6
host:localhost
port:1521
Service Name:ORCLPDB1.localdomain
Role:SYSDBA/default
Username:用户名
Password:密码

参考链接

Docker Oracle 12c 镜像:https://hub.docker.com/_/oracle-database-enterprise-edition

Github 链接:https://github.com/oracle/docker-images/tree/master/OracleDatabase

Docker Oracle 12c 镜像使用文档:https://hub.docker.com/u/zhuyizhuo/content/sub-a70bf4e2-0e93-4f1e-a575-1ec977dfea49

请作者喝杯咖啡吧