本文描述的是CDB环境
有关表空间和用户在PDB的使用,参考:Oracle19c表空间
表空间与表
完成的效果:在表空间test_data上创建数据表table1
步骤:
(1)新建表空间 :test_data
-- 创建永久表空间create tablespace test_data datafile 'C:\oracledata\test_data.dbf'size 5m autoextend on next 5m-- 创建临时表空间:create temporary tablespace test_temp tempfile 'C:\oracledata\test_temp.dbf'size 5m autoextend on next 5m;
(2)创建表的同时指定表空间
create table table1(t_id number,t_name varchar(20)) tablespace test_data; -- 指定表空间
(3)查询数据表所在哪个表空间
select table_name 表名, tablespace_name 表空间from user_tables where table_name='TABLE2';
(4)查询表空间的数据文件
select tablespace_name 表空间名称, file_name 文件路径, file# 文件编号, v.status 状态, v.enabled 可用from dba_data_files d, v$datafile vwhere d.file_id=v.file#;
注意:C:\oracledata 为存放数据文件的服务器路径,在虚拟机里面可以事先创建(有关内容参考:Oracle19c安装指南)
表空间与全局用户
(1) 创建全局用户 (c##开头)
-- 创建全局用户 c##admin 和密码 123create user c##admin identified by 123;-- 授权 (后续根据需要可以随时修改权限)grant create table,connect,resource to c##admin;
(2) 创建表空间
-- 创建永久表空间:create tablespace admin_datadatafile 'C:\oracledata\admin_data1.dbf'size 5m autoextendon next 5m-- 创建临时表空间:create temporary tablespace admin_temptempfile 'C:\oracledata\admin_temp.dbf'size 5m autoextendon next 5m;
注意:在CDB下给用户分配表空间时,此表空间必须在没有pdb的情况或者pdb下有相同表空间名称的时候才能成功
如何知道有哪些PDB:show pdbs;
接着切换数据库到每个PDB创建 admin_data 和 admin_temp 表空间
(关于PDB的创建参考:Oracle19c的CDB和PDB)
-- schooldb数据库创建:create tablespace admin_datadatafile 'C:\oracledata\admin_data_schooldb.dbf'size 5m autoextendon next 5m;create temporary tablespace admin_temptempfile 'C:\oracledata\admin_temp_schooldb.dbf'size 5m autoextendon next 5m;-- school数据库创建:create tablespace admin_datadatafile 'C:\oracledata\admin_data_school.dbf'size 5m autoextendon next 5m;create temporary tablespace admin_temptempfile 'C:\oracledata\admin_temp_school.dbf'size 5m autoextendon next 5m;
(3) 分配表空间给c##admin
alter user c##admin default tablespace admin_data temporary tablespace admin_temp;
(4) 查看c##admin的表空间
select default_tablespace 永久表空间名称, temporary_tablespace 临时表空间名称from dba_users where username='C##ADMIN';
(5) 新建c##admin的连接
在SQL Developer图形化开发工具创建新的连接,通过它可以直接连接到c##admin创建的表

(6) 创建c##admin的表test1
create table test1(id number,name varchar(20));
(7) 查看test1的表空间
select table_name 表名, tablespace_name 表空间from user_tables where table_name='TEST1';
(8) 查看admin_data表空间的表
select table_name from all_tables where tablespace_name='ADMIN_DATA';
文章转载自全栈精英,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




