Oracle 11g 新特性:只讀表(Read-only)
Oracle 11g 新特性:只讀表(Read-only)
Oracle11g推出了一個新的特性,可以將table置於read only狀態,處於該狀態的table的不能執行DML操作和某些DDL操作。在Oracle11g之前的版本,只能將整個tablespace或者database置於read only狀態。對於table的控制則只能通過許可權來設定。
CREATE TABLE products(prod_id varchar2(6) NOT null,quantity number,price number,expiry_date date); ALTER TABLE products READ only; TRUNCATE TABLE products; ALTER TABLE products SET unused(expiry_date); ALTER TABLE products DROP unused columns; CREATE INDEX idxxx ON products(price); ALTER TABLE products DROP COLUMN expiry_date; DROP TABLE products; HR@lhr121> CREATE TABLE products(prod_id varchar2(6) NOT null,quantity number,price number,expiry_date date); Table created. HR@lhr121> HR@lhr121> ALTER TABLE products READ only; Table altered. HR@lhr121> TRUNCATE TABLE products; TRUNCATE TABLE products * ERROR at line 1: ORA-12081: update operation not allowed on table "HR"."PRODUCTS" HR@lhr121> ALTER TABLE products SET unused(expiry_date); ALTER TABLE products SET unused(expiry_date) * ERROR at line 1: ORA-12081: update operation not allowed on table "HR"."PRODUCTS" HR@lhr121> ALTER TABLE products DROP unused columns; Table altered. HR@lhr121> CREATE INDEX idxxx ON products(price); Index created. HR@lhr121> ALTER TABLE products DROP COLUMN expiry_date; ALTER TABLE products DROP COLUMN expiry_date * ERROR at line 1: ORA-12081: update operation not allowed on table "HR"."PRODUCTS" HR@lhr121> DROP TABLE products; Table dropped.
案例分析:
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
在11g前的版本中,若想對錶設定為只讀,可以通過賦予SELECT物件許可權給這些使用者,但表的擁有者還是讀寫的。而Oracle 11g 允許表標記為只讀(read-only)通過ALTER TABLE 命令。
可以通過下面命令對錶讀寫許可權進行設定:
ALTER TABLE table_name READ ONLY;
ALTER TABLE table_name READ WRITE;
簡單示例如下:
CREATE TABLE ro_test (
id number
);
INSERT INTO ro_test VALUES (1);
ALTER TABLE ro_test READ ONLY;
任何影響表資料的DML語句和SELECT...FOR UPDATE查詢語句都返回ORA-12081錯誤資訊
SQL> INSERT INTO ro_test VALUES (2);
INSERT INTO ro_test VALUES (2)
*
ERROR at line 1:
ORA-12081: update operation not allowed on table "TEST"."RO_TEST"
SQL> UPDATE ro_test SET id = 2;
UPDATE ro_test SET id = 2
*
ERROR at line 1:
ORA-12081: update operation not allowed on table "TEST"."RO_TEST"
SQL> DELETE FROM ro_test;
DELETE FROM ro_test
*
ERROR at line 1:
ORA-12081: update operation not allowed on table "TEST"."RO_TEST"
影響表資料的DDL語句也受限制
SQL> TRUNCATE TABLE ro_test;
TRUNCATE TABLE ro_test
*
ERROR at line 1:
ORA-12081: update operation not allowed on table "TEST"."RO_TEST"
SQL> ALTER TABLE ro_test ADD (description VARCHAR2(50));
ALTER TABLE ro_test ADD (description VARCHAR2(50))
*
ERROR at line 1:
ORA-12081: update operation not allowed on table "TEST"."RO_TEST"
表是隻讀表但在與之相關的索引上操作不受影響。當表切換回讀寫模式時DML和DDL操作恢復正常。
SQL> ALTER TABLE ro_test READ WRITE;
Table altered.
SQL> DELETE FROM ro_test;
1 row deleted.
SQL>
更多詳細請查閱官方文件:
http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_3001.htm
http://docs.oracle.com/cd/B28359_01/server.111/b28320/statviews_2105.htm
About Me
........................................................................................................................ ● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除 ● 本文在itpub、部落格園、CSDN和個人微 信公眾號( xiaomaimiaolhr)上有同步更新 ● 本文itpub地址: http://blog.itpub.net/26736162 ● 本文部落格園地址: http://www.cnblogs.com/lhrbest ● 本文CSDN地址: https://blog.csdn.net/lihuarongaini ● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/ ● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/ ● DBA寶典今日頭條號地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826 ........................................................................................................................ ● QQ群號: 230161599 、618766405 ● 微 信群:可加我微 信,我拉大家進群,非誠勿擾 ● 聯絡我請加QQ好友 ( 646634621 ),註明新增緣由 ● 於 2019-09-01 06:00 ~ 2019-09-31 24:00 在西安完成 ● 最新修改時間:2019-09-01 06:00 ~ 2019-09-31 24:00 ● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解 ● 版權所有,歡迎分享本文,轉載請保留出處 ........................................................................................................................ ● 小麥苗的微店: https://weidian.com/s/793741433?wfr=c&ifr=shopdetail ● 小麥苗出版的資料庫類叢書: http://blog.itpub.net/26736162/viewspace-2142121/ ● 小麥苗OCP、OCM、高可用網路班: http://blog.itpub.net/26736162/viewspace-2148098/ ● 小麥苗騰訊課堂主頁: https://lhr.ke.qq.com/ ........................................................................................................................ 使用 微 信客戶端掃描下面的二維碼來關注小麥苗的微 信公眾號( xiaomaimiaolhr)及QQ群(DBA寶典)、新增小麥苗微 信, 學習最實用的資料庫技術。
........................................................................................................................ |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2656006/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11g DG新特性--Automatic block repairOracleBloCAI
- 新特性:/dev/shm對Oracle 11g的影響devOracle
- Oracle 18c新特性詳解 - 表和表空間相關的新特性Oracle
- oracle 11g 新特性之動態繫結變數窺視(一)Oracle變數
- oracle 11g 新特性之動態繫結變數窺視(二)Oracle變數
- oracle 19C新特性——混合分割槽表Oracle
- Oracle 12C新特性-RMAN恢復表Oracle
- oracle的只讀事務Oracle
- 只讀表空間
- ORACLE 19c 新特性之混合分割槽表Oracle
- Oracle建立只讀使用者Oracle
- Oracle 11g新特新--SQL Test Case BuilderOracleSQLUI
- LightDB 22.4 新特性之相容Oracle線上轉換普通表為分割槽表Oracle
- Oracle merge 與 PG新特性 UPSERTOracle
- Kubernetes 1.24新特性解讀
- 2.2.3 關於配置Oracle-Home只讀模式Oracle模式
- 管理(006):啟用只讀Oracle Home目錄Oracle
- Oracle 12c新特性--ASMFD(ASM Filter Driver)特性OracleASMFilter
- Oracle 11g 透過expdp按日期匯出表Oracle
- 【ORACLE21C】Oracle21c 只讀目錄說明Oracle
- Oracle 12C新特性-History命令Oracle
- Oracle 12C新特性In-MemoryOracle
- Oracle 12c 兩個新特性Oracle
- 1 Oracle Database 19c 新特性OracleDatabase
- Python 3.8 新特性全面解讀Python
- Apache Kyuubi 1.6.0 新特性解讀Apache
- Oracle10g/11g動態、靜態關閉DRM特性方法Oracle
- Oracle 11G DBMS_REDEFINITION修改表資料型別Oracle資料型別
- [20180626]延遲塊清除與只讀表.txt
- Oracle12C新特性_DDL日誌Oracle
- Oracle 20C 多租戶_新特性Oracle
- LightDB 23.1相容Oracle新特性支援Oracle
- vue-cli 3.0新特性解讀Vue
- 精讀《Typescript 4.5-4.6 新特性》TypeScript
- oracle 11g 分割槽表建立(年月日周時分秒)Oracle
- Oracle之11g DataGuardOracle
- Oracle 21c新特性預覽與日常管理相關的幾個新特性Oracle
- Oracle 12C新特性-線上把非分割槽錶轉為分割槽表Oracle