Oracle 19C 创建PDB,表空间、用户、连接问题解决

Oracle12c的新特性

19C其实也是属于12C的一个小版本,只是Oracle改变了版本策略,现在都叫18C\19C\20C,一年一个版本。

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

                            关系图

cdb相当于操作系统,调用并管理各个pdb。pdb相当于真正提供业务需求的数据库实例。oracle 12c安装后只创建了cdb,需要自己生成相应的pdb。oracle 12c使用了CDB-PDB架构,类似于docker,在container-db内可以加载多个pluggable-db.

 CDB组件(Components of a CDB)一个CDB数据库容器包含了下面一些组件:
    ROOT组件
       ROOT又叫CDB$ROOT, 存储着ORACLE提供的元数据和Common User,元数据的一个例子是ORACLE提供的PL/SQL包的源代码,Common User 是指在每个容器中都存在的用户。
    SEED组件
        Seed又叫PDB$SEED,这个是你创建PDBS数据库的模板,你不能在Seed中添加或修改一个对象。一个CDB中有且只能有一个Seed. 这个感念,个人感觉非常类似SQL SERVER中的model数据库。
    PDBS
        CDB中可以有一个或多个PDBS,PDBS向后兼容,可以像以前在数据库中那样操作PDBS,这里指大多数常规操作。
这些组件中的每一个都可以被称为一个容器。因此,ROOT(根)是一个容器,Seed(种子)是一个容器,每个PDB是一个容器。每个容器在CDB中都有一个独一无二的的ID和名称。

 

理解了CDB与PDB的关系后我们就知道,我们的平时的数据库操作大多数和PDB相关

oracle 12c截止2018年7月25日是两个版本,一个是Oracle Database 12c 第 1 版,另一个是Oracle Database 12c 第 2 版

Oracle Database 12c 第 1 版安装的时候会默认安装一个名称为pdborcl的实例(Oracle Database 12c 第 2 版默认名是orclpdb),具体名称按照版本有些许差异。

连接数据库方式:sqlplus system/XXX as sysdba

在CDB容器操作:

怎么查看数据库是否为 CDB
select CDB from v$database; -- 如果得到的结果为YES,那么就是CDB的数据库,否则,则不是。
创建用户:  在CDB容器中创建用户时,前面必须添加C## ,而PDB数据库不需要加前缀
 
create user c##test identified by test;
创建pdb
-- 其中pdborcl是我创建的可插接式数据库,pdbadmin是创建的用户,Learning是密码。file_name_convert换成相应目录就OK
   create pluggable database pdborcl admin user pdbadmin identified by Learning roles=(connect) file_name_convert=('/opt/oracle/oradata/ORCLCDB/pdbseed','/opt/oracle/oradata/ORCLCDB/pdborcl');
 

在PDB数据库操作:【基于已在容器中创建】

切入要操作的pdb
show pdbs; -- 展示pdb数据库集合
alter session set container=TESTP1; -- 切入到PDB 数据库
alter session set container=CDB$ROOT; -- 切回到CDB 容器数据库
创建用户,分配角色
-- 创建用户
create user bpmou55 identified by bpmou55;
 
-- 分配权限
grant create session to bpmou55;
grant create table to bpmou55;
grant create tablespace to bpmou55;
grant create view to bpmou55;
grant connect,resource to bpmou55;
 

可能出现的权限报错

grant unlimited tablespace to bpmou55; -- 解决 对USER没有操作权限的问题

Oracle 19C 创建PDB,表空间、用户、连接问题解决_第1张图片

 
表空间操作
-- 创建表空间
create tablespace bpmou55 datafile '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/bpmou55.DBF' size 100m;
 
-- 删除表空间 【此操作不会删除物理文件】
drop tablespace bpmou55;
 
--更改数据文件大小
alter database datafile '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/bpmdef55.DBF' resize 50m;
 

数据库连接工具连接问题【PDB连接】

-- 连接失败,报invalid username/password; logon denied;
-- 因为CDBPDBservicename可能是不一样的,需要先查询pdbservice_name,然后进行替换
select name,pdb from v$services;
 

 

你可能感兴趣的:(Oracle数据库,数据库,oracle)