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的主要内容,如果未能解决你的问题,请参考以下文章
Oracle 19C同版本 non-cdb 转换为 cdb+pdb(DBMS_PDB.DESCRIBE方式)
Oracle 19c多租户:若只有pdb数据库文件,如何将PDB插入到CDB?