Oracle唯讀資料表空間中的表是可以DROP的

來源:互聯網
上載者:User

在Oracle資料庫中,至少有以下幾個資料表空間:
1)SYSTEM資料表空間,每一個資料庫都包含一個SYSTEM資料表空間,當資料庫建立的時候,SYSTEM資料表空間會自動的建立。當資料庫開啟的時候,SYSTEM資料表空間始終處於ONLINE狀態。SYSTEM資料表空間的重要之處是能夠儲存整個資料庫的資料字典,另外PLSQL中的一些儲存單元,比如說是預存程序、函數、包以及相關的觸發器等等都是要儲存在資料庫的資料表空間裡面的。
2)SYSAUX資料表空間,資料庫組件將SYSAUX資料表空間當做儲存資料的預設位置,因此當資料庫在建立和升級的時候,SYSAUX資料表空間會自動的建立。SYSAUX資料表空間可以減少預設建立資料表空間的數量,在進行普通的資料庫操作的時候,ORACLE資料庫服務不允許刪除SYSAUX資料表空間,也不能對其進行改名等操作。
3)UNDO資料表空間
每個資料庫都可以包含多個UNDO資料表空間。在自動撤銷管理員模式中,每個Oracle執行個體都指定了一個UNDO資料表空間(有且只有一個資料表空間)。撤銷的資料在UNDO資料表空間使用UNDO區間來管理,UNDO區間由ORACLE自動建立並且進行維護。在Oracle中,我們可以對資料進行增加、刪除、更新等事務操作,事務中的資料庫操作是可以撤銷的,而且往往執行速度比較慢,但是撤銷的速度是比較快的,這是為什麼呢?因為當事務在資料庫中進行運作的時候,Oracle是將該資料庫操作綁定在UNDO資料表空間中的UNDO區間裡面的。如果需要對事務進行撤銷操作的時候,Oracle就會根據UNDO資料表空間中的UNDO區間進行撤銷。
4)暫存資料表空間,如果系統資料表空間是本地的,至少要指定一個預設的暫存資料表空間TEMP。如果刪除所有的暫存資料表空間,那麼Oracle就會指定SYSTEM資料表空間作為暫存資料表空間。

暫存資料表空間的好處:
1)在使用SELECT語句進行查詢資料庫的時候,可以使用多個暫存資料表空間進行排序操作,避免出現暫存資料表空間空間不足的問題。
2)可以在並行操作中有效利用暫存資料表空間。
3)一個使用者在不同的會話中可以同時使用多個暫存資料表空間。

這裡:
為了保護資料表空間中的資料不被修改,可以將資料表空間的屬性變為唯讀資料表空間,設定資料表空間的主要目的是為了表中的待用資料不被修改,從而能夠進行資料庫的備份和恢複等操作,還能夠保護唯讀資料表空間中的資料不被修改。

設定唯讀資料表空間的文法:
ALTER TABLESPACE <資料表空間> READ ONLY;
將資料表空間設定為讀寫的文法:
ALTER TABLESPACE <> READ WRITE;

在設定資料表空間的過程中發現,唯讀資料表空間的表是可以DROP的,這個是為什麼呢?
前面說過了,每個資料庫在啟動並執行時候,都會有一個ONLINE的資料表空間,資料表空間的名字是SYSTEM,SYSTEM資料表空間中儲存了資料字典,以及PLSQL中的預存程序、觸發器、函數、包等等資料庫物件。當進行DDL進行資料庫的刪除操作的時候,是操作的SYSTEM資料表空間,ORACLE會在SYSTEM儲存的資料字典中,將刪除的表設定為DROP狀態,等該資料表空間的狀態變成READ WRITE狀態的時候,就會真正的從資料庫裡面刪除該表。

相關的代碼如下:

SQL> list
  1  create table chenzw(
  2    username varchar2(100)
  3* )
SQL> run
  1  create table chenzw(
  2    username varchar2(100)
  3* )
表已建立。
SQL> insert into chenzw values ('1');
已建立 1 行。
SQL>alter tablespace data read only;
資料表空間已更改。
SQL>insert into chenzw values('2');
insert into chenzw values('2')
            *
第 1 行出現錯誤:
ORA-00372: 此時無法修改檔案 5
ORA-01110: 資料檔案 5: 'E:\GXSIDB\DATA'
SQL> truncate table chenzw;
truncate table chenzw
              *
第 1 行出現錯誤:
ORA-00372: 此時無法修改檔案 5
ORA-01110: 資料檔案 5: 'E:\GXSIDB\DATA'
SQL> delete from chenzw;
delete from chenzw
            *
第 1 行出現錯誤:
ORA-00372: 此時無法修改檔案 5
ORA-01110: 資料檔案 5: 'E:\GXSIDB\DATA'
SQL> drop table chenzw;
表已刪除。
SQL> commit;
提交完成。
SQL>alter tablespace data read write;
資料表空間已更改。
SQL> select * from chenzw;
select * from chenzw
              *
第 1 行出現錯誤:
ORA-00942: 表或視圖不存在
SQL>

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.