日期:2014-05-16  浏览次数:20840 次

TABLESPACE为READ ONLY,可进行的DML和DDL操作(部分举例)

创建测试表空间

create tablespace tablespacereadonly datafile '/u02/oradata/orcl/tablespacereadonly01.dbf' size 1m autoextend on next 1m maxsize unlimited;

创建测试用户

create user ureadonly identified by "123456" default tablespace tablespacereadonly;

给测试用户授权

grant connect,resource to uoffline;

创建测试表

create table t01(id integer,name varchar2(10));

插入测试数据

insert into t01(id,name) values (1,'a');

insert into t01(id,name) values (2,'b');

commit;

select * from t01;

将表空间置为只读

alter tablespace tablespacereadonly read only;

select * from t01;

--insert into...

--不可修改

insert into t01(id,name) values (3,'c');

--delete from...

--不可修改
delete from t01 where id=1;

--create table...

--创建表空间时需要分配空间,表空间为只读,故不允许操作

--不可修改
create table t02(id integer,name varchar2(10));

--alter table...rename to...

--alter table...rename to...只删除数据字典的相关信息(表并没有实际删除),而数据字典存在在system表空间中,system表空间未置为只读

--可修改

alter table t02 rename to t01;

--alter table...add...

--alter table...add...只修改数据字典的相关信息,而数据字典存在在system表空间中,system表空间未置为只读

--可修改

alter table t01 add age integer;

--alter table...drop column...不仅修改数据字典的相关信息,同时也将该字段占用的空间进行释放,由于表空间为只读,故不可操作

--不可修改

alter table t01 drop column age;

--alter table...rename column...to...

--alter table...rename column...to...只修改数据字典的相关信息,而数据字典存在在system表空间中,system表空间未置为只读

--可修改

alter table t01 rename column age to ages;

--alter table...modify...只修改数据字典的相关信息,而数据字典存在在system表空间中,system表空间未置为只读

--可修改

alter table t01 modify name varchar2(20);

--drop table...

--drop table只删除数据字典的相关信息(表并没有实际删除),而数据字典存在在system表空间中,system表空间未置为只读
--可修改
drop table t01;