我用到是最新版Oracle19c 测试过程如下
1、创建临时表空间
create temporary tablespace ekp15temp tempfile 'D:\oracledbms\ekp15temp.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local;
2、创建表空间
create tablespace ekp15tablespace logging datafile 'D:\oracledbms\ekp15.dbf' size 50m autoextend on next 50m maxsize 20480m
3、创建用户,并给默认表空间
create user ekp15 identified by password default tablespace ekp15tablespace temporary tablespace ekp15temp;
4、给用户授权
grant connect,resource,dba to ekp15;
5、用ekp15账户登录,并创建表,新增数据,查询数据
create table t1
(
id varchar2(50) primary key ,
name char(200) not null
);
insert into t1 values ('11','张三');
select * from t1;
能查询到一条数据,如下图
6、创建ekp152用户,使用同一个表空间
create user ekp152 identified by password default tablespace ekp15tablespace temporary tablespace ekp15temp;
7、授权152
grant connect,resource,dba to ekp152;
8、使用ekp152登录,查询表t1 发现表t1并不存在(证明ekp152用户,看不到ekp15用户的表)
9、查询表空间下面所有的表,发现t1存在,只是在ekp15这个用户下面,(再次说明表是在用户下面,即使同一个表空间也互相看不到)。
select * from all_tables where TABLESPACE_NAME = 'EKP15TABLESPACE'
10、用ekp152用户,创建t1表,并新增数据,再分别用ekp15和ekp152查询t1表,
create table t1
(
id varchar2(50) primary key ,
name char(200) not null
);
insert into t1 values ('11','李四');
执行下面3条sql,也可以验证
select * from all_tables where TABLESPACE_NAME = 'EKP15TABLESPACE';
select * from ekp152.t1;
select * from ekp15.t1;
11、接来下级联删除用户ekp152 试试看,有没有影响到用户ekp15的数据
DROP USER ekp152 CASCADE;
再次用ekp15 查询下t1表,发现还在
再次查询表空间所有的表,发现只有ekp15名下的一张t1表了
12、总结Oracle 不同用户,即使共用一个表空间,数据也是互不影响,相互独立