千家信息网

oracle cdb、pdb参考

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,CDB、PDB概念介绍CDB与PDB是Oracle 12C引入的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)
千家信息网最后更新 2025年11月07日oracle cdb、pdb参考
CDB、PDB概念介绍

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

一个CDB容器数据库通常包含CDB$ROOT、PDB$SEED组件:
a. CDB$ROOT存储着ORACLE提供的元数据和Common User,Common User 是指在每个容器中都存在的用户,查看:

show con_name;


b.PDB$SEED是创建PDB数据库的模板。一个CDB中有且只能有一个Seed,查看:

show pdbs


c.PDB可插拔数据库,CDB中可以有一个或多个PDB,查看:

show pdbs

创建CDB容器数据库

dbca在创建数据库的时候,可以选择是创建容器数据库还是传统的数据库,如下图选择为创建CDB:

创建pdb:

a.命令create pluggable database创建:

create pluggable database app1 admin user pdba identified by pdba123;

指定路径创建pdb:

mkdir -p /u01/app/oracle/oradata/prod/data

create pluggable database app1 admin user pdba identified by pdba123 FILE_NAME_CONVERT=('/u01/app/oracle/oradata/prod/pdbseed','/u01/app/oracle/oradata/prod/data');

b.dbca创建pdb:

确认:

启动pdb:

alter pluggable database APP1 open;

c. 克隆pdb数据库:

alter system set db_create_file_dest='/u01/app/oracle/oradata/prod/';

create pluggable database app3 from app2;

删除pdb

先关闭对应的pdb,然后删除pdb:

alter pluggable database app3 close immediate;

drop pluggable database app3 including datafiles;

只是删除库,不删除文件:

drop pluggable database app3 keep datafiles;

alter pluggable database app3 unplug into '/home/oracle/app3.xml';

drop pluggable database app3 keep datafiles;

show pdbs

create pluggable database app5 using '/home/oracle/app3.xml' nocopy;

切换容器

切换到app1 pdb下面:

alter session set container=app1;


切换到CDB容器

alter session set container=CDB$ROOT;

查看当前属于哪个容器:

show con_name

select sys_context('USERENV','CON_NAME') from dual;

启动、关闭pdb

a. 指定pdb进行关闭和启动:

alter pluggable database app1 open;

startup pluggable database app1;

启动到只读模式,新建的pdb必须启动一次后才可以设置为read only,否则报

ERROR at line 1:

ORA-65085: cannot open pluggable database in read-only mode:

可以从dba_pdbs视图进行确认,对于NEW的pdb,需要先open:

SQL> col pdb_name for a10

SQL> select pdb_name,status from dba_pdbs;

PDB_NAME STATUS

---------- ----------

APP1 NORMAL

PDB$SEED NORMAL

APP2 NORMAL

APP3 NORMAL

APP4 NEW

新建一个app3 数据库,然后执行启动到read only:

create pluggable database app3 from app2;

alter pluggable database app3 open read only;

alter pluggable database app3 open read only;

show pdbs;

alter pluggable database app1 close immediate;

b.切换到对应的pdb进行关闭启动:
alter session set container= app1;

startup;

alter session set container= app1;

shutdown immediate;

c.集中操作pdb:

开启所有pdb:

alter pluggable database all open;

关闭所有pdb:

alter pluggable database all close immediate;

pdb自动启动:

oracle 12.1和oracle12.2版本,默认情况下PDB不会随着CDB启动而启动,oracle 12.1只能通过触发器实现:

CREATE TRIGGER open_all_pdbs

AFTER STARTUP ON DATABASE

BEGIN

EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';

END ;

/

删除触发器:

drop trigger open_all_pdbs;

oracle12.2之后可以使用save state来保存pdb数据库的当前状态。

show pdbs;

alter pluggable database app1 save state;

startup force;

show pdbs;

查看state状态:

col con_name for a10

select con_name, state from dba_pdb_saved_states;

删除discard state状态:

alter pluggable database app1 discard state;

查看pdb信息

查看所有pdb:
show pdbs

col name for a20

select con_id,dbid,name,open_mode from v$pdbs;

select name,cause ,type,message,status from pdb_plug_in_violations;

数据 数据库 容器 实例 切换 多个 状态 全称 用户 触发器 a. 选择 一对一 传统 信息 只是 命令 情况 文件 时候 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 dm数据库导出至excel 163169邮箱的服务器 集宁区网络安全应急指挥中心 换电脑数据库与C 连接不上 orcl改数据库字段长度 工控网络安全知识技术问答 2017网络安全宣传月 怎样将数据库的表转换为三线表 显示服务器时间 utf-8插入gbk数据库 论文查重通过后能录入数据库吗 网络安全信息化与群众诉求 上海网络技术咨询服务价钱 自觉维护网络安全作文 六年级网络安全手抄报模板 工控网络安全领域厂家 安徽盛虫网络技术有限公司 软件开发前期费用处理 如何正确理解网络安全的意义 《服务器配置与管理》虚拟机 电子表格获取外部数据库 郑州夜魅网络技术有限公司 mac适合计算机网络技术专业吗 含山租房软件开发 保证网络安全最重要的核心 中国域名根服务器管理机构 网上购物服务器多少钱 mac上的免费数据库管理 南京米点互联网科技 自学c语言软件开发
0