oracle orclpdb是什么,oracle cdb、pdb参考

oracle cdb、pdb参考

发布时间:2020-07-11 14:00:40

来源:51CTO

阅读:609

作者:春秋小记

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的关系图:

e9ad22126de118451cdc2e2c8dc66c4d.png

一个CDB容器数据库通常包含CDB$ROOT、PDB$SEED组件:

a. CDB$ROOT存储着ORACLE提供的元数据和Common User,Common User 是指在每个容器中都存在的用户,查看:

show con_name;

b3dfebb9dc297ad20a432ecdb0d002d6.png

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

show pdbs

9b2b0a6a7ed5a8cdf7db344b496b70e6.png

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

show pdbs

29e59e1d418d5c9cec65f011b9765ff5.png

创建CDB容器数据库

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

b03c172223ef858b3bce3447b4cebdb7.png

创建pdb:

a.命令create pluggable database创建:

create pluggable database app1 admin user pdba identified by pdba123;

b6ce869b345fed9aaa2c5bbd7bceeea6.png

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

880f3319a2d31d8ee94b16b0b782df33.png

b.dbca创建pdb:

3d3451ef8e5d7176f464511f2f14119e.png

7a8273132d70077d7463da5b9573ba53.png

4fe4f3639a2152d28d4e61a9b7f5645a.png

bb9ccdcc22a425870e09061c6965f1b7.png

246c915bfcc347c8a6016bddc5219d50.png

9c4cc510a8d53d4c63660eebf7d0c450.png

77a9ead4de0c3f54019924b4f54306c5.png

5c58d5af4f8fbeaff4997909a15e416d.png

570868ffb743b735dbcf10820348d3b2.png

确认:

075d6fe0dc255d91349dd527f0143643.png

启动pdb:

alter pluggable database APP1 open;

48eed65c191138995483b9ac84782782.png

c. 克隆pdb数据库:

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

6413eb617de6482c30abe790a7c5ba0c.png

create pluggable database app3 from app2;

c286537baa8e770ff08ce790f0aff5e7.png

删除pdb

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

alter pluggable database app3 close immediate;

drop pluggable database app3 including datafiles;

1d66dbb244b46ba12d1f8716baeb218a.png

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

drop pluggable database app3 keep datafiles;

93b3c843d805724908873dc8498b9c38.png

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

59b0cd4a63fb0e31ce701d686ff00046.png

drop pluggable database app3 keep datafiles;

show pdbs

2d37f436beaea0e7fab5d9ea67c354c6.png

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

c3dc32d5a98d3ce68ee28b5264fe3387.png

切换容器

切换到app1 pdb下面:

alter session set container=app1;

2316b472107c0a996eafb85b293bf4e8.png

切换到CDB容器

alter session set container=CDB$ROOT;

0b131ee49812d5d89f845e0044bf800b.png

查看当前属于哪个容器:

show con_name

ffb4ad3fca6c7ee31c99235ff28486f7.png

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

1bec743b1a909197b7dfd7b18d6c0339.png

启动、关闭pdb

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

alter pluggable database app1 open;

51b10aa03ddf71cd7265b05bc2f4d07e.png

startup pluggable database app1;

166d429ab592077066ac2b7295ef7eb2.png

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

eb2c0ddd47ce0b4b03b327730b63c99e.png

alter pluggable database app3 open read only;

7ec3b0f59117cbca1ac2abb33df78981.png

alter pluggable database app3 open read only;

show pdbs;

191b10adb843b97957ceff2c43487d5d.png

alter pluggable database app1 close immediate;

94ed68a8c7e2fa6e81b5b0b6b8b5e25b.png

b.切换到对应的pdb进行关闭启动:

alter session set container= app1;

startup;

25fcb40e54dbb9bb37f6f9549f5567a5.png

alter session set container= app1;

shutdown immediate;

0fc061c994cbf84c88f0b97baa651148.png

c.集中操作pdb:

开启所有pdb:

alter pluggable database all open;

0f64b07bd3f834c8644a7c3e6771ae29.png

关闭所有pdb:

alter pluggable database all close immediate;

8237a87e0f64e992f2759615d113afca.png

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;

bb074fb99917ba903675416d3e08cfd6.png

startup force;

show pdbs;

55a861630419c1dcd8aeb27ca0f22ee3.png

查看state状态:

col con_name for a10

select con_name, state from dba_pdb_saved_states;

79bb9386fbdcc0a0ce0bf3f777461620.png

删除discard state状态:

alter pluggable database app1 discard state;

5faf1cfd36519547e57cc702aea79b83.png

查看pdb信息

查看所有pdb:

show pdbs

1f3679dbb534cea9c7a550b921bfe956.png

col name for a20

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

57fbdf8a19efe3cbecc22b853525a30a.png

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

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值