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

二、想要了解cdb和pdb深入概念的小伙伴们可自行查找资料,下面进入主题。
安装好Oracle后使用navicat连接Oracle

新建查询,输入以下SQL语句,点击运行

--创建表空间
create tablespace waterboss datafile 'D:\Oracle19c\waterboss.dbf'
size 5m
autoextend on
next 5m;

但是当我在创建用户时出现了两个错误。

--创建用户
CREATE USER wateruser
IDENTIFIED BY 123456
DEFAULT TABLESPACE waterboss;

1、在填写好用户的基本信息后进行保存,提示错误:ORA-65096: 公用用户名或角色名无效。
这里百度了一波,知道了cdb和pdb的概念。查询到是说cdb创建用户是用户名前面必须要加上C##或c##,不然会返回一个错误。

2.当我将用户名加上C##前缀后又提示错误:ORA-65048:在可插入数据库PDBORCL中处理当前DDL语句时出错 ORA-00959:表空间‘LOCL_DATA’不存在。

--创建用户
CREATE USER C##wateruser
IDENTIFIED BY 123456
DEFAULT TABLESPACE waterboss;


这里呢其实还是和cdb有关。
首先我查询了我现在的session是cdb,这就导致了我在cdb创建了表空间但是pdb上面并没有这个表空间。由于cdb与pdb表空间结构不同,所以就出现了ora-00959的错误。

sqlplus / as sysdba;
show con_name;

然后我查看了一下此时数据库的pdb

select con_id,name,open_mode from v$pdbs;

可以看到里面有个ORCLPDB,于是我就用navicat重新连接了一下这个可插拔数据库。具体连接配置如下:

修改默认服务名ORCL为ORCLPDB后 连接Oracle,创建表空间和用户就没有再报错了,用户名前面也不需要加C##。

新建查询,输入以下SQL语句,点击运行

--创建表空间
create tablespace waterboss datafile 'D:\Oracle19c\waterboss.dbf'
size 5m
autoextend on
next 5m;

--创建用户
CREATE USER C##wateruser
IDENTIFIED BY 123456
DEFAULT TABLESPACE waterboss;

--创建业主表
CREATE TABLE T_OWNERS(
ID NUMBER PRIMARY KEY,
NAME VARCHAR2(30),
ADDRESSID NUMBER,
HOUSENUMBER VARCHAR2(30),
WATERMETER VARCHAR2(30),
ADDDATE DATE,
OWNERTYPEID NUMBER
);

如果用的是sqlplus进行测试的,那就直接修改session就行了。

alter session set container=ORCLPDB;

三、关于Oracle12c 重启后。。。
Oracle 12c 重启后只会重启cdb,其余所有的pdb都会进入mounted状态。这个时候客户端是无法连接这个数据库的。所以们还需要重新启动相应的pdb数据库。

cmd命令窗口:

sqlplus / as sysdba

连接上Oracle后

--查看pdb
select name, pdb from v$services;
--启动相应pdb(orclpdb是我的pdb的名称)

alter pluggable database orclpdb open; 

当然,你也可以使用触发器进行自启动。我这里没有进行测试,就不把具体的方法写在上面了。


参考资料
原文链接:https://blog.csdn.net/weixin_43867817/article/details/106548573

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐