Oracle 11g新特性之--只读表(read only table)


      Oracle11g推出了一个新的特性,可以将table置于read only状态,处于该状态的table的不能执行DML操作和某些DDL操作。在Oracle11g之前的版本,只能将整个tablespace或者database置于read only状态。对于table的控制则只能通过权限来设定。

案例分析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
11 : 44 : 46  SCOTT@ test1 >select *  from  tab;
TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
BONUS                          TABLE
CREDIT_CLUSTER                 CLUSTER
CREDIT_ORDERS                  TABLE             1
DEPT                           TABLE
EMP                            TABLE
EMP1                           TABLE
 
11 : 44 : 56  SCOTT@ test1 >select count(*)  from  emp1;
   COUNT(*)
----------
         18
Elapsed:  00 : 00 : 00.04
11 : 45 : 12  SCOTT@ test1 >alter table emp1 read only;
Table altered.
 
11 : 51 : 46  SCOTT@ test1 >select read_only  from  user_tables  where  table_name= 'EMP1' ;
REA
---
YES
 
对只读表做DML:
11 : 45 : 20  SCOTT@ test1 > insert  into  emp1 select *  from  emp  where  rownum= 1 ;
insert  into  emp1 select *  from  emp  where  rownum= 1
             *
ERROR  at  line  1 :
 
ORA -12081 : update operation  not  allowed  on  table  "SCOTT" . "EMP1"
Elapsed:  00 : 00 : 00.04
11 : 45 : 38  SCOTT@ test1 > delete  from  emp1;
delete  from  emp1
             *
ERROR  at  line  1 :
ORA -12081 : update operation  not  allowed  on  table  "SCOTT" . "EMP1"
Elapsed:  00 : 00 : 00.00
11 : 45 : 47  SCOTT@ test1 >update emp1 set sal= 6000  where  empno= 7788 ;
update emp1 set sal= 6000  where  empno= 7788
        *
ERROR  at  line  1 :
ORA -12081 : update operation  not  allowed  on  table  "SCOTT" . "EMP1"
 
TRUNCATE TABLE:
11 : 46 : 03  SCOTT@ test1 >truncate table emp1;
truncate table emp1
                *
ERROR  at  line  1 :
ORA -12081 : update operation  not  allowed  on  table  "SCOTT" . "EMP1"
Elapsed:  00 : 00 : 00.09
 
DROP TABLE:
11 : 46 : 45  SCOTT@ test1 >drop table emp1;
Table dropped.
Elapsed:  00 : 00 : 00.70
11 : 47 : 05  SCOTT@ test1 >show recycle;
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
EMP1             BIN$ComP5WftmQ7gUKjA+QgIyQ==$ 0  TABLE         2014 -12 -19 : 11 : 47 : 04
11 : 47 : 52  SCOTT@ test1 >flashback table emp1 to  before  drop;
Flashback complete.
11 : 49 : 56  SCOTT@ test1 >select count(*)  from  emp1;
   COUNT(*)
----------
         18
         
MOVE TABLE:        
11 : 50 : 06  SCOTT@ test1 >alter table emp1 move;
Table altered.
Elapsed:  00 : 00 : 00.54
 
压缩表:
11 : 51 : 27  SCOTT@ test1 >alter table emp1 compress;
Table altered.
Elapsed:  00 : 00 : 00.09
11 : 51 : 39  SCOTT@ test1 >alter table emp1 nocompress;
Table altered.
Elapsed:  00 : 00 : 00.16
 
约束管理:
11 : 52 : 53  SCOTT@ test1 >alter table emp1 add constraint fk_emp1 foreign key(deptno) references dept(deptno);
Table altered.
 
11 : 54 : 29  SCOTT@ test1 >alter table emp1 drop constraint fk_emp1;
Table altered.
 
11 : 54 : 47  SCOTT@ test1 >create index emp1_empno_ind  on  emp1(empno) tablespace indx;
Index created.
 
索引管理:
11 : 55 : 17  SCOTT@ test1 >drop index emp1_empno_ind;
Index dropped.
 
配置read write:
11 : 55 : 27  SCOTT@ test1 >alter table emp1 read write;
Table altered.
 
11 : 55 : 37  SCOTT@ test1 >select read_only  from  user_tables  where  table_name= 'EMP1' ;
REA
---
NO








本文转自 客居天涯 51CTO博客,原文链接:http://blog.51cto.com/tiany/1591685,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值