在oracle中,可以利用「alter tablespace 表空間名read only」語句設定表空間為唯讀;alter tablespace語句用於修改表空間的數據,表空間處於唯讀狀態時文件中的數據就不會發生變化,可以提高系統的效率。
本教學操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。
alter tablespace 表空间名 read only;
一個表空間處於唯讀狀態時,只能進行讀取操作,因此資料檔案中的資料也不會發生變化,因此也就不進行重做日誌的保護,不會產生重做操作。所以處於此狀態可以提高系統的效率。
剛改為唯讀狀態時,表空間仍處於中間狀態,當所有的事務完成後才被置為唯讀狀態。將一個表空間修改為唯讀狀態時,系統會產生檢查點。當然可以刪除只讀表空間的對象,比如說表,索引等。因為刪除物件的命令為DDL語句,它只修改資料字典而不是資料檔案。
範例如下:
1.檢視dba_tablespaces結構
SQL> desc dba_tablespaces; 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- TABLESPACE_NAME NOT NULL VARCHAR2(30) BLOCK_SIZE NOT NULL NUMBER INITIAL_EXTENT NUMBER NEXT_EXTENT NUMBER MIN_EXTENTS NOT NULL NUMBER MAX_EXTENTS NUMBER PCT_INCREASE NUMBER MIN_EXTLEN NUMBER STATUS VARCHAR2(9) CONTENTS VARCHAR2(9) LOGGING VARCHAR2(9) FORCE_LOGGING VARCHAR2(3) EXTENT_MANAGEMENT VARCHAR2(10) ALLOCATION_TYPE VARCHAR2(9) PLUGGED_IN VARCHAR2(3) SEGMENT_SPACE_MANAGEMENT VARCHAR2(6) DEF_TAB_COMPRESSION VARCHAR2(8) RETENTION VARCHAR2(11) BIGFILE VARCHAR2(3)
2.查詢XUANXUAN表空間的狀態
SQL> select TABLESPACE_NAME, STATUS, CONTENTS from dba_tablespaces where TABLESPACE_NAME like 'XUANXUAN'; TABLESPACE_NAME STATUS CONTENTS ------------------------------ --------- --------- XUANXUAN ONLINE PERMANENT
從查詢結果來看是處於聯機狀態。
3.修改XUANXUAN表空間為唯讀狀態。
SQL> alter tablespace XUANXUAN read only;
表空間已更改。
4.修改完後查詢,查看是否已經成功修改。
SQL> select TABLESPACE_NAME, STATUS, CONTENTS from dba_tablespaces where TABLESPACE_NAME like 'XUANXUAN'; TABLESPACE_NAME STATUS CONTENTS ------------------------------ --------- --------- XUANXUAN READ ONLY PERMANENT
5.如果想改回可讀可寫狀態,需要執行下面的指令。
SQL> alter tablespace XUANXUAN read write;
表空間已更改。
6.修改完後查詢,查看是否已經成功修改。
SQL> select TABLESPACE_NAME, STATUS, CONTENTS from dba_tablespaces where TABLESPACE_NAME like 'XUANXUAN'; TABLESPACE_NAME STATUS CONTENTS ------------------------------ --------- --------- XUANXUAN ONLINE PERMANENT
從結果看表空間XUANXUAN已經處於線上狀態。
推薦教學:《Oracle影片教學》
以上是oracle怎麼設定表空間只讀的詳細內容。更多資訊請關注PHP中文網其他相關文章!