Oracle19c的CDB和PDB

Posted 提里奥丶弗丁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle19c的CDB和PDB相关的知识,希望对你有一定的参考价值。

       一、Oracle 12c Multitenant Architecture多租户框架最重要的2个概念是容器数据库CDB(multitenant container database)和可热插拔数据库PDB(pluggable databases)。可以把CDB想象成一个大的容器,这个大的容器在物理上是一个整体,在这个大的容器中还有一些小的容器PDB。容器的目的是将Oracle固有元数据和用户数据(包括用户元数据)隔离。

 

        二、CDB和PDB含义

        CDB:容器数据库,名称为 CDB$ROOT。其作用就是系统数据库,sys等账号都保存在里面。同时它可以管理PDB数据库。

        PDB:可插拔的数据库。用户可以在PDB自建数据库。Oracle安装成功后有个默认的pdb数据库(在安装Oracle时自己设定),PDB中自带有PDB$SEED,属于PDB的模板数据库,自己创建数据库的时候以此库为模板。 

         三、CDB和PDB实操

1、查询当前所在容器

# show con_name;

2、查看所有的PDB

# show pdbs;

3、切换到指定的pbd

# alter session set container=XRGPDB;

# alter session set container= PDB$SEED ;

4、创建新的NEWPDB

# 切换到pdbseed,查询模板pdb的pdbseed的数据文件路径

# select name, con_id from v$datafile order by con_id;
# select name, con_id from v$tempfile order by con_id;

 

# 在pdbseed 同级目录创建NEWPDB

# mkdir -p /opt/oracle/oradata/ORCLCDB/NEWPDB

# 创建新的NEWPDB

# create pluggable database NEWPDB admin user newxrg identified by 123456 roles=(dba,connect,resource) file_name_convert=('/opt/oracle/oradata/ORCLCDB/pdbseed','/opt/oracle/oradata/ORCLCDB/N;WPDB');

# 删除pbd

# drop pluggable database 数据库名称 including datafiles;

 增加监听,停止监听,开启监听

(SID_DESC =
      (GLOBAL_DBNAME = NEWPDB)      
      (SID_NAME = ORCLCDB)
      (ORACLE_HOME = /opt/oracle/product/19c/dbhome_1)
    )

查看pdb打开情况

# 查询所有pdb打开情况

# select name,open_mode from v$pdbs;

# 找到指定的pdb,进入该pdb
# alter session set container = NEWPDB;

# 打开此pdb
# alter pluggable database open; 

# 创建表空间

# CREATE BIGFILE TABLESPACE "NEWXRG" DATAFILE '/opt/oracle/oradata/ORCLCDB/NEWPDB/newxrg.dbf' SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

# 给用户赋值表空间
# alter user newxrg default tablespace NEWXRG;

 这样这个新创建的数据库就可以使用了

 四、创建用户

1、全局用户

create user c##用户名 identified by 密码;

 2、某个pdb的用户

# alter session set container=XRGPDB;

# create user 用户名 identified by 密码;

3、删除用户

# drop user c##用户名;

# drop user 用户名;

 

Oracle 12c 多租户配置和修改 CDB 和 PDB 参数

1. 配置CDB 实例参数,影响CDB与所有 PDB
为CDB配置例程参数相对于对于非CDB的数据库是变化不太。ALTER SYSTEM命令用于设置初始化参数,与使用ALTER DATABASE命令修改一些数据库配置。
ALTER SYSTEM SET parameter_name=value CONTAINER=ALL;
说明:使用CONTAINER=ALL后,cdb与pdbs这个参数相同。pdbs可以在本地设置同一参数为不同值,将覆盖CONTAINER=ALL设定的值。

2. 修改 CDB 
ALTER DATABASE 命令和non-CDB 数据库是一样的,但是有些可以影响CDB 和所有的PDB,有些仅对 cdb 有效,具体看官网吧!

3. 配置PDB 实例参数
如果在cdb中设置CONTAINER=ALL,那么PDB的参数也会继承之前的值,但可以通过ALTER SYSTEM在PDB container中修改 PDB local parameter,将覆盖(优先)从CDB继承的参数。 
3.1 查看pdbs支持修改的参数
show con_name;
col value for a30;
col name for a35;
select name, value from   v$system_parameter WHERE  ispdb_modifiable = ‘TRUE‘ order by name;
3.2 修改 PDB 实例参数
alter system set parameter_name=value; ->等价于 ALTER SYSTEM SET parameter_name=value CONTAINER=CURRENT;

4.修改PDB 
CONN / AS SYSDBA
ALTER SESSION SET CONTAINER = pdb1;
-- Default edition for PDB.
ALTER PLUGGABLE DATABASE DEFAULT EDITION = ora$base;
-- Default tablespace type for PDB.
ALTER PLUGGABLE DATABASE SET DEFAULT BIGFILE TABLESPACE;
ALTER PLUGGABLE DATABASE SET DEFAULT SMALLFILE TABLESPACE;
-- Default tablespaces for PDB.
ALTER PLUGGABLE DATABASE DEFAULT TABLESPACE users;
ALTER PLUGGABLE DATABASE DEFAULT TEMPORARY TABLESPACE temp;
-- Change the global name. This will change the container name and the
-- name of the default service registered with the listener.
ALTER PLUGGABLE DATABASE OPEN RESTRICTED FORCE;
ALTER PLUGGABLE DATABASE RENAME GLOBAL_NAME TO pdb1a.localdomain;
ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE OPEN;
-- Time zone for PDB.
ALTER PLUGGABLE DATABASE SET TIME_ZONE=‘GMT‘;
-- Make datafiles in the PDB offline/online and make storage changes.
ALTER PLUGGABLE DATABASE DATAFILE ‘/u01/app/oracle/oradata/cdb1/pdb1/pdb1_users01.dbf‘ OFFLINE;
ALTER PLUGGABLE DATABASE DATAFILE ‘/u01/app/oracle/oradata/cdb1/pdb1/pdb1_users01.dbf‘ ONLINE;
ALTER PLUGGABLE DATABASE DATAFILE ‘/u01/app/oracle/oradata/cdb1/pdb1/pdb1_users01.dbf‘
  RESIZE 1G AUTOEXTEND ON NEXT 1M;
-- Supplemental logging for PDB.
ALTER PLUGGABLE DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER PLUGGABLE DATABASE DROP SUPPLEMENTAL LOG DATA;













































以上是关于Oracle19c的CDB和PDB的主要内容,如果未能解决你的问题,请参考以下文章

30分钟!一键部署Oracle 19C单机CDB+PDB

Oracle 19C同版本 non-cdb 转换为 cdb+pdb(DBMS_PDB.DESCRIBE方式)

Oracle 19c多租户:若只有pdb数据库文件,如何将PDB插入到CDB?

Manual upgrade to Oracle 19c (CDB/PDB)

12c19c 从 no-cdb升级到pdb步骤

Oracle19c基本操作