阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle 12C新特性-CDB和PDB 详解

510次阅读
没有评论

共计 5777 个字符,预计需要花费 15 分钟才能阅读完成。

最近看到好多人都在尝试 Oracle 中的 12C 新特性 - 容器数据库,今年 3 月 Orcle 推出了 Release2 版本,可以算是一个稳定版本了。下午着手尝试了一下,还是蛮不错得

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

Oracle 12C 新特性 -CDB 和 PDB 详解
 
其实大家如果对 SQL SERVER 比较熟悉的话,这种 CDB 与 PDB 是不是感觉和 SQL SERVER 的单实例多数据库架构是一回事呢。像 PDB$SEED 可以看成是 master、msdb 等系统数据库,PDBS 可以看成用户创建的数据库。而可插拔的概念与 SQL SERVER 中的用户数据库的分离、附加其实就是那么一回事。
 
二、CDB 组件(Components of a CDB)
 
一个 CDB 数据库容器包含了下面一些组件:
 
-ROOT 组件
 
ROOT 又叫 CDB$ROOT, 存储着 ORACLE 提供的元数据和 Common User, 元数据的一个例子是 ORACLE 提供的 PL/SQL 包的源代码,Common User 是指在每个容器中都存在的用户。
 
-SEED 组件
 
  Seed 又叫 PDB$SEED, 这个是你创建 PDBS 数据库的模板,你不能在 Seed 中添加或修改一个对象。一个 CDB 中有且只能有一个 Seed. 这个感念,个人感觉非常类似 SQL SERVER 中的 model 数据库。
 
-PDBS
 
    CDB 中可以有一个或多个 PDBS,PDBS 向后兼容,可以像以前在数据库中那样操作 PDBS,这里指大多数常规操作。
 
这些组件中的每一个都可以被称为一个容器。因此,ROOT(根)是一个容器,Seed(种子)是一个容器,每个 PDB 是一个容器。每个容器在 CDB 中都有一个独一无二的的 ID 和名称。

三、具体操作
1. 查看数据库是否为 CDB
sqlplus 登录数据库
[oracle@oracle12C-R2 ~]$ sqlplus / as sysdba
 
SQL*Plus: Release 12.2.0.1.0 Production on 星期三 6 月 14 15:37:13 2017
 
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
 
 
连接到: 
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 – 64bit Production
 
select name,cdb,open_mode,con_id from v$database;
SYSTEM@ORCL>select name,cdb,open_mode,con_id from v$database;
 
NAME  CDB OPEN_MODE        CON_ID
——— — ——————– ———-
ORCL  YES READ WRITE    0

2. 查看当前容器
show con_name
 
SYS@orcl>show con_name;
 
CON_NAME
——————————
CDB$ROOT

3. 创建一个新 PDB
create pluggable database pdb1 admin user pdb1 identified by pdb1 file_name_convert=(‘/u01/app/oracle/oradata/orcl/pdbseed/’,’/u01/app/oracle/oradata/orcl/pdb1/’);

4. 查看所创建的 PDB;
show pdbs;
SYS@orcl>show pdbs;
 
    CON_ID CON_NAME  OPEN MODE  RESTRICTED
———- —————————— ———- ———-
 2 PDB$SEED  READ ONLY  NO
 3 ORCLPDB  MOUNTED
 4 PDB1  MOUNTED
 5 PDB2  MOUNTED

5. 启动一个创建好的 PDB
alter pluggable database pdb1 open;

再次查看
SYS@orcl>show pdbs;
 
    CON_ID CON_NAME  OPEN MODE  RESTRICTED
———- —————————— ———- ———-
 2 PDB$SEED  READ ONLY  NO
 3 ORCLPDB  MOUNTED
 4 PDB1  READ WRITE NO
 5 PDB2  READ WRITE NO

6. 关闭 PDB
SYS@orcl>alter pluggable database pdb2 close;
 
插接式数据库已变更。
 
SYS@orcl>show pdbs;
 
    CON_ID CON_NAME  OPEN MODE  RESTRICTED
———- —————————— ———- ———-
 2 PDB$SEED  READ ONLY  NO
 3 ORCLPDB  MOUNTED
 4 PDB1  READ WRITE NO
 5 PDB2  MOUNTED

7. 也可以通过 sqlplus 使用传统的 startup 和 shutdown 命令来启动和关闭 PDB
 
SYS@orcl>alter session set container=pdb2;
 
会话已更改。
SYS@orcl>show pdbs;
 
    CON_ID CON_NAME  OPEN MODE  RESTRICTED
———- —————————— ———- ———-
 5 PDB2  MOUNTED
SYS@orcl>startup;
插接式数据库已打开。
SYS@orcl>show pdbs;
 
    CON_ID CON_NAME  OPEN MODE  RESTRICTED
———- —————————— ———- ———-
 5 PDB2  READ WRITE NO
SYS@orcl>shutdown immediate;
插接式数据库已关闭。
SYS@orcl>show pdbs;
 
    CON_ID CON_NAME  OPEN MODE  RESTRICTED
———- —————————— ———- ———-
 5 PDB2  MOUNTED
SYS@orcl>alter session set container=CDB$ROOT;

会话已更改。
 
8. 配置监听文件
监听文件目录在 $ORACLE_HOME/network/admin
[oracle@oracle12C-R2 admin]$ cat listener.ora 
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC=
    (GLOBAL_DBNAME = ORCL)
    (SID_NAME = ORCL)
    )
    (SID_DESC=
    (GLOBAL_DBNAME = PDB1)
    (SID_NAME = PDB1)
    )
  )
 
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.221.165)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
 
[oracle@oracle12C-R2 admin]$ cat tnsnames.ora 
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
 
LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.221.165)(PORT = 1521))
 
 
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.221.165)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
PDB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.221.165)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = PDB1)
    )
  )

测试登录
 
[oracle@oracle12C-R2 admin]$ tnsping pdb1
 
TNS Ping Utility for Linux: Version 12.2.0.1.0 – Production on 14- 6 月 -2017 16:02:05
 
Copyright (c) 1997, 2016, Oracle.  All rights reserved.
 
已使用的参数文件:
/u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora
 
 
已使用 TNSNAMES 适配器来解析别名
尝试连接 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.221.165)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PDB1)))
OK (10 毫秒)
[oracle@oracle12C-R2 admin]$ sqlplus pdb1/pdb1@pdb1
 
SQL*Plus: Release 12.2.0.1.0 Production on 星期三 6 月 14 16:02:28 2017
 
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
 
上次成功登录时间: 星期三 6 月  14 2017 15:51:38 +08:00
 
连接到: 
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 – 64bit Production
 
PDB1@pdb1> select name from v$datafile where con_id=4 ;
 
NAME
——————————————————————————–
/u01/app/oracle/oradata/orcl/pdb1/system01.dbf
/u01/app/oracle/oradata/orcl/pdb1/sysaux01.dbf
/u01/app/oracle/oradata/orcl/pdb1/undotbs01.dbf
 
PDB1@pdb1>

9.oracle12C 中在启动数据库的时候,PDB 并不会随着 CDB 而启动。不过我们可以通过创建一个触发器让 PDB 能够随 CDB 启动。如下:
 
SQL> SHOW CON_NAME 
CON_NAME 
—————————— 
CDB$ROOT 
SQL> CREATE OR REPLACE TRIGGER open_pdbs 
AFTER STARTUP ON DATABASE   
BEGIN 
EXECUTE IMMEDIATE ‘ALTER PLUGGABLE DATABASE ALL OPEN’;   
END open_pdbs; 
触发器已创建 
SQL> SHUTDOWN IMMEDIATE 
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> STARTUP 
ORACLE 例程已经启动。
Total System Global Area  754974720 bytes 
Fixed Size          2928968 bytes 
Variable Size        524291768 bytes 
Database Buffers      222298112 bytes 
Redo Buffers            5455872 bytes 
数据库装载完毕。
数据库已经打开。
SYS@orcl>show pdbs;
 
    CON_ID CON_NAME  OPEN MODE  RESTRICTED
———- —————————— ———- ———-
 2 PDB$SEED  READ ONLY  NO
 3 ORCLPDB  READ WRITE NO
 4 PDB1  READ WRITE NO
 5 PDB2  READ WRITE NO

更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-06/144750.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计5777字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7976113
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...