Oracle19c 创建表空间遇到的坑

#常用的几个代码

--查询临时表空间
select name from v$tempfile;

--查询表空间
select name from v$datafile;
修改用户的密码
alter user 用户名 identified by 密码;

昨天部署好oracle19c后,用以前oracle11g的笔记来创建表空间遇到了坑。这里写一下总结。

其实之所以遇到坑是因为相比于oracle11g,oracle19c多了一个cdb和pdb的概念(从12c开始出现)。

#确定表空间文件存储目录

[oracle@localhost ~]$ su - oracle
[oracle@localhost ~]$ cd /opt/oracle/oradata/
[oracle@localhost oradata]$ ls
orclcdb
[oracle@localhost oradata]$ cd orclcdb/
[oracle@localhost orclcdb]$ ls
control01.ctl  control02.ctl  orclpdb1  pdbseed  redo01.log  redo02.log  redo03.log  sysaux01.dbf  system01.dbf  temp01.dbf  undotbs01.dbf  users01.dbf
[oracle@localhost orclcdb]$ mkdir anytxn_v2_dev
[oracle@localhost orclcdb]$ cd anytxn_v2_dev/
[oracle@localhost anytxn_v2_dev]$ pwd
/opt/oracle/oradata/orclcdb/anytxn_v2_dev

#创建表空间文件

[oracle@localhost anytxn_v2_dev]$  sqlplus / as sysdba
sql*plus: release 19.0.0.0.0 - production on fri feb 21 13:38:42 2020
version 19.3.0.0.0
copyright (c) 1982, 2019, oracle.  all rights reserved.
connected to:
oracle database 19c enterprise edition release 19.0.0.0.0 - production
version 19.3.0.0.0
 
sql> create temporary tablespace  anytxn_dev_data_temp tempfile '/opt/oracle/oradata/orclcdb/anytxn_v2_dev/anytxn_v2_dev_temp.dbf' size 32m autoextend on next 32m maxsize 20480m extent management local;
 
tablespace created.
 
sql> create tablespace anytxn_v2_dev_data       
logging
datafile  '/opt/oracle/oradata/orclcdb/anytxn_v2_dev/anytxn_v2_dev_data.dbf'
size 100m
autoextend on
next 100m maxsize 30480m
autoallocate
extent management local 
segment space management auto;  2    3    4    5    6    7    8    9  
 
tablespace created.

#创建用户

sql> create user anytxn_v2_dev  identified by "jrx12345" default tablespace anytxn_v2_dev_data  temporary tablespace anytxn_dev_data_temp profile default;
create user anytxn_v2_dev  identified by "jrx12345" default tablespace anytxn_v2_dev_data  temporary tablespace anytxn_dev_data_temp profile default
            *
error at line 1:
ora-65096: invalid common user or role name

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

#修改用户名后创建用户

sql> create user c##anytxn_v2_dev  identified by "jrx12345" default tablespace anytxn_v2_dev_data  temporary tablespace anytxn_dev_data_temp profile default;
create user c##anytxn_v2_dev  identified by "jrx12345" default tablespace anytxn_v2_dev_data  temporary tablespace anytxn_dev_data_temp profile default
*
error at line 1:
ora-65048: error encountered when processing the current ddl statement in
pluggable database orclpdb1
ora-00959: tablespace 'anytxn_v2_dev_data' does not exist

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

查询当前数据库名称
sql> show con_name
 
con_name
------------------------------
cdb$root
查询pdb数据库名称
sql> select name,open_mode from v$pdbs;
 
name
--------------------------------------------------------------------------------
open_mode
------------------------------
pdb$seed
read only
 
orclpdb1
read write
切换数据库
sql> alter session set container=orclpdb1;
 
session altered.
 
sql> create temporary tablespace  anytxn_dev_data_temp tempfile '/opt/oracle/oradata/orclcdb/orclpdb1/anytxn_v2_dev/anytxn_v2_dev_temp.dbf' size 32m autoextend on next 32m maxsize 20480m extent management local;
 
tablespace created.
 
sql> create tablespace anytxn_v2_dev_data       
logging
datafile  '/opt/oracle/oradata/orclcdb/orclpdb1/anytxn_v2_dev/anytxn_v2_dev_data.dbf'
size 100m
autoextend on
next 100m maxsize 30480m
autoallocate
extent management local 
segment space management auto;  2    3    4    5    6    7    8    9  
 
tablespace created.
 
sql> alter session set container=cdb$root;
 
session altered.
 
sql> create user c##anytxn_v2_dev  identified by "jrx12345" default tablespace anytxn_v2_dev_data  temporary tablespace anytxn_dev_data_temp profile default;
 
user created.
 
sql> grant connect,resource to c##anytxn_v2_dev;
 
grant succeeded.

如上所示,创建成功,尝试用新用户连接数据库

[oracle@localhost anytxn_v2_dev]$  sqlplus c##anytxn_v2_dev/jrx12345 
 
sql*plus: release 19.0.0.0.0 - production on fri feb 21 20:46:04 2020
version 19.3.0.0.0
 
copyright (c) 1982, 2019, oracle.  all rights reserved.
 
last successful login time: fri feb 21 2020 15:33:39 +08:00
 
connected to:
oracle database 19c enterprise edition release 19.0.0.0.0 - production
version 19.3.0.0.0

到此这篇关于oracle19c 创建表空间的文章就介绍到这了,更多相关oracle19c 创建表空间内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐