oracle cdb、pdb参考
admin
2023-04-14 21:21:18
0
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的关系图:

oracle cdb、pdb参考

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

show con_name;

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

show pdbs

oracle cdb、pdb参考
c.PDB可插拔数据库,CDB中可以有一个或多个PDB,查看:

show pdbs

oracle cdb、pdb参考

创建CDB容器数据库

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

oracle cdb、pdb参考

创建pdb:

a.命令create pluggable database创建:

create pluggable database app1 admin user pdba identified by pdba123;

oracle cdb、pdb参考

指定路径创建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');

oracle cdb、pdb参考

b.dbca创建pdb:

oracle cdb、pdb参考

oracle cdb、pdb参考

oracle cdb、pdb参考

oracle cdb、pdb参考

oracle cdb、pdb参考

oracle cdb、pdb参考

oracle cdb、pdb参考

oracle cdb、pdb参考

oracle cdb、pdb参考

确认:

oracle cdb、pdb参考

启动pdb:

alter pluggable database APP1 open;

oracle cdb、pdb参考

c. 克隆pdb数据库:

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

oracle cdb、pdb参考

create pluggable database app3 from app2;

oracle cdb、pdb参考

删除pdb

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

alter pluggable database app3 close immediate;

drop pluggable database app3 including datafiles;

oracle cdb、pdb参考

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

drop pluggable database app3 keep datafiles;

oracle cdb、pdb参考

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

oracle cdb、pdb参考

drop pluggable database app3 keep datafiles;

show pdbs

oracle cdb、pdb参考

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

oracle cdb、pdb参考

切换容器

切换到app1 pdb下面:

alter session set container=app1;

oracle cdb、pdb参考
切换到CDB容器

alter session set container=CDB$ROOT;   

oracle cdb、pdb参考

查看当前属于哪个容器:

show con_name

oracle cdb、pdb参考

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

oracle cdb、pdb参考

启动、关闭pdb

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

alter pluggable database app1 open;

oracle cdb、pdb参考

startup pluggable database app1;

oracle cdb、pdb参考

启动到只读模式,新建的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;

oracle cdb、pdb参考

alter pluggable database app3 open read only;

oracle cdb、pdb参考

alter pluggable database app3 open read only;

show pdbs;

oracle cdb、pdb参考

alter pluggable database app1 close immediate;

oracle cdb、pdb参考

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

startup;

oracle cdb、pdb参考

alter session set container= app1;

shutdown immediate;

oracle cdb、pdb参考

c.集中操作pdb:

开启所有pdb:

alter pluggable database all open; 

oracle cdb、pdb参考

关闭所有pdb:

alter pluggable database all close immediate;

oracle cdb、pdb参考

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;

oracle cdb、pdb参考

startup force;

show pdbs;

oracle cdb、pdb参考

查看state状态:

col con_name for a10

select con_name, state from dba_pdb_saved_states;

oracle cdb、pdb参考

删除discard state状态:

alter pluggable database app1 discard state;

oracle cdb、pdb参考

查看pdb信息

查看所有pdb:
show pdbs

oracle cdb、pdb参考

col name for a20

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

oracle cdb、pdb参考

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

相关内容

热门资讯

徐巧芯剖析赖清德:最怕自己丢掉... 海峡导报综合报道 大罢免投票一周年纪念活动26日举行,台北市长蒋万安出席并怒轰,民进党一年过后仍没有...
中国红十字会总会紧急向广东调拨... 记者从中国红十字会总会了解到,针对台风“红霞”给广东造成的灾情,中国红十字会总会启动四级应急响应,紧...
这些少年,正被“毒蛋”围猎 李梦抽了几口电子烟,吐出了白色的烟雾,有一股浓烈的水果香味。随后,她看着自己握电子烟的手,跟身边人说...
蒋万安号召“倒阁”,卢秀燕认为... 海峡导报综合报道 台北市长蒋万安27日抛出震撼议题,表示多名民代向他提议推动“倒阁”,要求台行政机构...
特朗普将在白宫会见两位重要客人 俄乌战争仍未结束,美伊冲突又有升级风险。在此背景下,美国总统特朗普将在白宫接见乌克兰和以色列领导人。...
新租客打扫卧室柜子上掉落4万元... 近日,莲前西路某小区内,张倩签下一套房子的租赁合同。当天上午,她带着12岁的大女儿周馨怡和11岁的小...
六部门通告:禁止涉军队退役报废... 关于禁止涉军队退役报废装备销售活动的通告近年来,部分经营者在线上线下公开销售涉及我军退役报废装备(指...
九寨沟景区发生泥石流,部分道路... 7月26日,九寨沟风景名胜区管理局发布泥石流灾害通报:2026年7月26日15时50分,九寨沟景区局...
空调26度不凉是什么原因 从空调内部元器件来说,不凉的原因有可能是温度传感器出现故障了,也有可能是空调压缩机或者铜管出现问题,...
鲸鸿动能携手香港国际机场、鸿蒙...   2026 年 7 月 25 日,十余位鸿蒙车主组成的车队从珠海出发,经港珠澳大桥通关抵达香港国际...