CDB(ContainerDatabase)与PDB(PluggableDatabase)

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

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

a. CDB$ROOT存储着ORACLE提供的元数据和Common User,Common User 是指在每个容器中都存在的用户(c##或C##开头的用户),查看:
show con_name;

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

--------------------------------------------------------------
每个PDB都是独立的单元,有自己的用户(local user)、表空间、数据文件,每个local user只能访问自己的PDB,而common user只要权限足够,可以访问任意PDB

创建PDB

//查看表空间
select * from dba_data_files;

//如果在这一步创建表空间报错缺少路径的话,我们可以去配置OMF管理,  OMF    在后面单独整一个小节来讲解,
//表空间不指定的话,则用户的表空间默认为SYSTEN的表空间
create pluggable database ORCLPDBC admin user CHENG_PDBC identified by password default tablespace TS_PDBC;


插队OMF记录

OMF,全称是Oracle Managed Files,即Oracle文件管理,使用OMF可以简化管理员的管理工作,不用指定文件的名字、大小、路径,其名字,大小,路径由oracle 自动分配。在删除不再使用的日志、数据、控制文件时,OMF也可以自动删除其对应的OS文件
解决: ORA-02199: missing DATAFILE/TEMPFILE clause

//OMF支持下列文件的自动管理
表空间
日志文件(联机)
控制文件

前提条件:需要为这些类型文件设定相关参数。

//数据文件管理参数:
db_create_file_dest

//查看db_create_file_dest参数
show parameter db_create_file  

//设定db_create_file_dest参数
ALTER SYSTEM SET db_create_file_dest = '/home/oracle/omf_data';


检查PDB是否创建

//若状态为MOUNTED表示创建成功
show pdbs;

OPEN新创建的PDB

alter pluggable database ORCLPDBC open
//状态标为 read write 则开启成功

后续的切换PDB和启动就不记录了,后面有记录(这里是分为两次记录的,所以后续启动记录是另一个PDB),

//记得给刚刚开出来的用户权限,向切换到本PDB再grant
grant connect,resource,dba to CHENG_PDBC;
grant create session to CHENG;

启动PDB数据库

//cdb切换至pdb
alter session set container=pdborcl; 

//pdb切换至cdb
//alter session set container=cdb$root;

startup;

创建PDB自己的用户

--1.创建表空间
CREATE TABLESPACE TS_CHENG_TEST LOGGING DATAFILE '/home/oracle/ts_test/TS_CHENG_TEST.dbf' 
SIZE 100M AUTOEXTEND ON NEXT 32M MAXSIZE unlimited EXTENT MANAGEMENT LOCAL;

--2.创建临时表空间
create temporary tablespace TS_CHENG_TEST_TEMP tempfile '/home/oracle/ts_test/TS_CHENG_TEST_TEMP.dbf'
size 100m autoextend on next 32m maxsize 500m extent management local;

--3.创建用户
CREATE USER CHENG IDENTIFIED BY PASSWORD DEFAULT TABLESPACE TS_CHENG_TEST TEMPORARY TABLESPACE TS_CHENG_TEST_TEMP;

--4.给用户授权
grant connect,resource,dba to CHENG;
grant create session to CHENG;

--5.删除用户
drop user CHENG

创建PDB的用户的时候遇到个问题

新建pdb用户无法登录
报错ORA-01017: invalid username/password; logon denied

原因:
因为CDB和PDB的servicename可能是不一样的,需要先查询pdb的service_name 
SQL> select name,pdb from v$services;   

然后再vi tnsnames.ora 中添加
ORCL =
(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
    (SERVER = DEDICATED)
    (SERVICE_NAME = orcl)   把查询到pdb对应的service_name写到这里
    )
)

然后连接的时候加上SID
 conn scott/oracle@ORCL

 注意:
 Listener.ora、tnsnames.ora和sqlnet.ora这3个文件是关系orale网络配置的3个主要文件,其中listener.ora是和数据库服务器端相关,

而tnsnames.ora和slqnet.ora这2个文件不仅仅关系到服务器端,主要的还是和客户端关系紧密。 这个客户端的意思是服务器上的客户端,服务器上也是可以通过客户端(sqlplus工具)连接到oracle服务器的

正儿八经的本机服务连接服务器的话,也可以去配置tnsnames.ora别名
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
04-11 4540

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值