第一步:创建表空间和用户,并设置用户的权限以及用户所属的表空间
SQL> conn / as sysdba;
connect.
SQL> create tablespace abc
2 datafile '/u01/app/oracle/oradata/orcl/abc.dbf' size 5M
3 extent management local uniform size 128k;
Tablespace created.
SQL> create user abc identified by abc default tablespace abc;
User created.
SQL> grant connect,resource to abc;
Grant succeeded.
第二步.再打开一个连接,用abc登录,创建表T,并插入二张数据,其中一条数据已经提交,另外一条没有提交
SQL> conn abc/abc
Connected.
SQL> creat table t(i int,name varchar2(10));
SP2-0734: unknown command beginning "creat tabl..." - rest of line ignored.
SQL> create table t(i int,name varchar2(10));
Table created.
SQL> insert into t values(1,'aaa');
1 row created.
SQL> commit
2 ;
Commit complete.
SQL> insert into t values(2,'aaa');
1 row created.
第三步:切换到oracle用户,更改表空间为只读,这时表空间必须等待abc用户上的事务提交后才会执行
SQL> alter tablespace abc read only;
第四步:切换到abc用户,提交事务
SQL> commit;
Commit complete.
第五步:切换到oracle用户,则马上会出现如下
SQL> alter tablespace abc read only;
Tablespace altered.
第六步:在abc用户下,再插入一条记录,这时并没有插入到里面表里面去
SQL> insert inot t values(3,'aaa');
SQL> select * from t;
I NAME
---------- ----------
1 aaa
2 aaa
第七步:但是当删除这张表时,则成功了.
SQL> drop table t;
Table dropped.
总结:
当更改一个表空间为read only 状态时,
1.它会等待所有有关这个表空间的事务提交完成后,它才执行
2.当更改后,不能对其进行增改操作,但是可以进行删除操作
3.它会引发一个checkpoint;
阅读(1534) | 评论(0) | 转发(0) |