欢迎来到魔幻小生的博客

Oracle19c创建表空间和用户(解决报错ORA-65048: error encountered when processing the current DDL statement in pluggable database ORCLPDB1等问题)

前言

之前工作中使用Oracle11g数据库较多,在使用Oracle19c数据库遇到了一些坑,对创建表空间和用户过程中遇到的一些问题进行记录。


创建表空间和数据文件

CREATE TABLESPACE TEST_DATA LOGGING DATAFILE 'TEST_DATAF.dbf' SIZE 500M
AUTOEXTEND ON NEXT  10M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT  AUTO;

CREATE TEMPORARY TABLESPACE TEST_TEMP TEMPFILE 'TEST_TEMPF.dbf' SIZE 100M
AUTOEXTEND ON NEXT  5M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL ;

CREATE TABLESPACE TEST_INDEX LOGGING DATAFILE 'TEST_INDEXF.dbf' SIZE 100M
AUTOEXTEND ON NEXT  5M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT  AUTO;

创建用户

CREATE USER c##test  PROFILE DEFAULT IDENTIFIED BY 11111111 DEFAULT TABLESPACE TEST_DATA TEMPORARY TABLESPACE TEST_TEMP ACCOUNT UNLOCK;

ALTER USER c##test QUOTA UNLIMITED ON TEST_DATA;

ALTER USER c##test QUOTA UNLIMITED ON TEST_INDEX;

GRANT CONNECT, resource TO c##test;

问题一

ORA-65096: invalid common user or role name

image

此错误是因为用户名称不符合规范,Oracle12C开始引入了CDB与PDB的新特性。sqlplus / as sysdba命令默认登陆的是CDB数据库,而CDB数据库中要求所有新建用户用户名必须以c##开头,否则就会报以上错误,在PDB内创建用户则没有此要求。

解决方法:将图中用户名zhra6修改为c##zhra6

问题二

ORA-65048: error encountered when processing the current DDL statement in pluggable database ORCLPDB1
ORA-00959: tablespace 'ZHRA6_DATA' does not exist

image

原因是在CDB内创建用户分配表空间时,所分配的表空间必须在PDB和CDB中同时存在,否则会报错。如果是在PDB与CDB有相同表空间的情况下给CDB用户分配表空间,则会分配CDB的表空间,给用户PDB的表空间并不受影响。所以要在PDB内创建相同的表空间,然后再回CDB创建用户。

解决方法:

查询当前数据库名称show con_name

image

查询PDB数据库名称select name,open_mode from v$pdbs;

image

切换数据库alter session set container=ORCLPDB1;

image

在PDB中创建表空间与数据文件(注意数据文件不能与之前的重名)

CREATE TABLESPACE TEST_DATA LOGGING DATAFILE 'TEST_DATAF_1.dbf' SIZE 500M
AUTOEXTEND ON NEXT  10M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT  AUTO;

CREATE TEMPORARY TABLESPACE TEST_TEMP TEMPFILE 'TEST_TEMPF_1.dbf' SIZE 100M
AUTOEXTEND ON NEXT  5M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL ;

CREATE TABLESPACE TEST_INDEX LOGGING DATAFILE 'TEST_INDEXF_1.dbf' SIZE 100M
AUTOEXTEND ON NEXT  5M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT  AUTO;

切换回CDB数据库alter session set container=CDB$ROOT;

image

已经可以正确创建用户了!

image

posted @ 2022-03-15 17:21  魔幻小生  阅读(5441)  评论(0编辑  收藏  举报