Oracle11g新特性之只讀表
在Oracle 11g之前的版本中,若想對錶設定只讀,可以透過賦予SELECT物件許可權給指定使用者,但是表的擁有者仍然擁有讀寫許可權。而Oracle 11g 允許透過ALTER TABLE 命令將表標記為只讀(read-only)。只讀表跟普通的表沒有區別,只是不允許任何事務對其執行任何 DML(Insert, Update, Delete) 操作。
測試環境
我們在Oracle11g(11.2.0.3)進行測試。
點選(此處)摺疊或開啟
建立測試表
我們建立一個測試表,命名為hoegh;然後,插入兩條測試資料。
點選(此處)摺疊或開啟
-
SQL>
-
-
SQL> create table hoegh(id number,name varchar2(20));
-
-
-
Table created.
-
-
-
SQL> insert into hoegh values(1,'hoegh');
-
-
-
1 row created.
-
-
-
SQL> insert into hoegh values(10,'hoegh');
-
-
-
1 row created.
-
-
-
SQL> commit;
-
-
-
Commit complete.
-
-
-
SQL> select * from hoegh;
-
-
-
ID NAME
-
-
---------- --------------------
-
-
-
1 hoegh
-
-
10 hoegh
-
-
-
SQL>
-
- SQL>
將普通表設為只讀表
我們透過alter table ... read only;語句來實現只讀表;而且,我們可以透過資料字典檢視 (ALL_TABLES,DBA_TABLES,USER_TABLES,TABS)中的 READ_ONLY 列查詢表的只讀屬性,如下所示:
點選(此處)摺疊或開啟
-
SQL>
-
-
SQL> alter table hoegh read only;
-
-
-
Table altered.
-
-
-
-
SQL>
-
-
SQL> select table_name ,read_only from user_tables;
-
-
-
TABLE_NAME REA
-
-
------------------------------ ---
-
-
-
HOEGH YES
-
-
- SQL>
執行DML語句報錯
只讀表不允許任何事務對其執行任何 DML(Insert, Update, Delete) 操作,否則系統會報ORA-12081錯誤,提示操作不被允許。
點選(此處)摺疊或開啟
執行TRUNCATE語句報錯
只讀表除了不能執行所有DML語句操作外,部分DDL語句也不能執行,比如TRUNCATE,否則系統同樣會報ORA-12081錯誤,提示操作不被允許。
點選(此處)摺疊或開啟
執行DROP語句成功
針對只讀表的DROP操作,是被允許的。
點選(此處)摺疊或開啟
將只讀表設為普通表
我們透過alter table ... read write;語句來實現將只讀表設為普通讀寫表。參看下面SQL語句:
點選(此處)摺疊或開啟
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30162081/viewspace-1761309/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11g 新特性:只讀表(Read-only)Oracle
- Oracle11g新特性之editionOracle
- oracle11g新特性之--虛擬列Oracle
- Oracle11g新特性點評之RMANOracle
- Oracle11g新特性導致空表不能匯出Oracle
- Oracle11g新特性:SQL Result Cache [zt]OracleSQL
- oracle11g flashback archive feature新特性OracleHive
- 【TABLE】11g中只讀表(Read-only Table)技術特性
- 【PARTITION】Oracle11g新特性之間隔分割槽運用說明Oracle
- Oracle 12C 新特性之 恢復表Oracle
- 【RMAN】Oracle11g備份恢復新特性Oracle
- oracle11g 的Data Guard方面的新特性Oracle
- ZT:資料庫Oracle11g新特性RMAN資料庫Oracle
- ORACLE 19c 新特性之混合分割槽表Oracle
- oracle11g中SQL最佳化新特性之Adaptive Cursor Sharing (ACS)OracleSQLAPT
- Oracle11g新特性 - 快速線上新增not null欄位OracleNull
- Oracle11g新特性——LOB型別功能增強Oracle型別
- Oracle11g新特性——密碼區分大小寫Oracle密碼
- MySQL 5.7新特性之線上收縮undo表空間MySql
- [引用分割槽表]Oracle 11g新特性之引用分割槽表Oracle
- oracle11g中SQL最佳化(SQL TUNING)新特性之SQL Plan Management(SPM)OracleSQL
- oracle11g r2新特性Edition-Based RedefinitionOracle
- Apache Kyuubi 1.6.0 新特性解讀Apache
- 10G新特性筆記之安裝新特性筆記
- Oracle 18c新特性詳解 - 表和表空間相關的新特性Oracle
- 重建控制檔案之後,只讀表空間的狀態變化
- Oracle11g新特性:dba_users不再顯示密碼Oracle密碼
- 關於oracle11g的關於cardinality feedback新特性Oracle
- 表單元素設定為只讀狀態
- 【MySQL】5.7新特性之四MySql
- 【MySQL】5.7新特性之五MySql
- 【MySQL】5.7新特性之六MySql
- 【MySQL】5.7新特性之七MySql
- Python 3.8 新特性全面解讀Python
- Kubernetes 1.24新特性解讀
- vue-cli 3.0新特性解讀Vue
- 精讀《Typescript 4.5-4.6 新特性》TypeScript
- Oracle 12C 新特性之表分割槽部分索引(Partial Indexes)Oracle索引Index