前言
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
安装提示输入 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
|
第四步:启动容器
使用 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个字符
查看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 用户名;
|
提交
退出
使用创建的用户登陆
至此 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