oracle 19c 创建用户注意事项

文章介绍了在Oracle12C环境下遇到的ORA-65096错误,该错误与CDB和PDB的使用有关。解决方案包括在创建用户时使用C##前缀,并确保在正确的PDB中创建和管理表空间。另外,还提到了Navicat的使用,以及在授予用户权限时的注意事项,如需使用特定用户连接数据库并赋予适当的权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题1:

ORA-65096: 公用用户名或角色名无效

原因:

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

CDB相当于操作系统,调用并管理各个PDB。PDB相当于真正提供业务需求的数据库实例。Oracle 12C或更高版本安装后只创建了CDB,需要自己生成相应的PDB。 Oracle 12C或更高版在安装时,默认创建为容器数据库。

解决方法:

cdb创建用户是用户名前面必须要加上C##或c##,这时又会出现问题2:

问题2:

ORA-65048: 在插接式数据库 ORCLPDB 中处理当前 DDL 语句时出错
ORA-00959: 表空间 'TESTSPACE' 不存在

原因:

看了以下其他大神说,还是cdb的问题。查询一下现在的session:

sqlplus / as sysdba;
show con_name;

 当前连接的session是cdb。这就导致了我在cdb创建了表空间但是pdb上面并没有这个表空间。由于cdb与pdb表空间结构不同,所以就出现了【ORA-00959: 表空间 'TESTSPACE' 不存在】的错误。

 

解决方法:

查看以下cdb数据库容器下的pdb

show pdbs;

 

如果结果为CDB&ROOT,则为容器状态(CBD),结果为ORCLPDB(这个PDB名字根据自己的实际情况而定,不是固定的),则为可插拔数据库(PDB)。

可以看到里面有个ORCLPDB,可以看到我现在的ORCLPDB的打开方式是可读写的,如果是mounted执行以下打开。

--启动相应pdb(orclpdb是我的pdb的名称)
 
alter pluggable database orclpdb open;

用navicat重新连接了一下这个可插拔数据库。 

 连接上PDB之后,创建用户也不许要加C##了

给用户赋予修改表空间的权限

alter user testuser quota unlimited on testspace

在程序启动时mybatis报错:【表或视图不存在】,以下是错误的连接参数

url: jdbc:oracle:thin:@localhost:1521/ORCLPDB
username: system

此时是因为我没有使用我创建的用户进行连接,想着直接用权限较高的system就可以了,但是却报出了【表或视图不存在】这个错误,实际上username要使用自己创建的才行,不过还得给自己创建的用户添加以下权限,不然也会报错。

赋权sql:

-- 需要在system下进行赋权,我这里直接赋予dba权限
grant dba to testuser;

这样程序连接也不会又问题了。

其它:

查询表的所有命名空间:

select tablespace_name  from user_tablespaces;

 创建表空间

-- 创建表空间
CREATE tablespace testspace   -- 创建名为testspace的表空间
datafile 'D:\testspace.dbf' -- 表空间存放在 'D:\testspace.dbf'
size 100m -- 表空间大小为 100m
autoextend on -- 表空间开启自动递增
next 10m -- 每次递增10m

创建用户

-- 创建用户(必须依托表空间,一个表空间下可建多个用户)
create user testuser --创建名为testuser的用户
identified by root -- 密码为root
default tablespace testspace -- 创建到名为testspace表空间下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值