塗抹ORACLE--第16章--資料庫物理儲存結構(2)
塗抹ORACLE試閱章節:第16章-體系結構之資料庫結構
===========================================================================
16.1.2 資料檔案(Datafiles )
資料庫中的實際資料儲存於資料檔案中。一個資料庫中會有很多個資料檔案。其實不要說資料庫,一個表空間都有可能存在多個資料檔案(表空間是一個邏輯儲存結構,一個資料庫中包含多個表空間),一個資料檔案只能屬於一個表空間。
每個資料檔案在物理上都對應一個作業系統檔案,或者一個裸裝置。Oracle在建立資料檔案時,是通過作業系統在指定路徑下分配一塊指定大小的磁碟空間,並將這塊空間內的資料清空,然後按照指定的塊大小格式化這塊儲存區域。如果一次分配的空間比較大,那麼視磁碟的I/O速率,本步操作有可能要花費相當長的時間。如果建立資料檔案時,指向的是裸裝置的話,那麼該資料檔案指定的容量不能大於裸裝置最大空間,並且,一個裸裝置上只能建立一個資料檔案。
提示:什麼叫裸裝置?
裸裝置,英文叫Raw Device,你可以把它理解成沒有檔案系統的儲存裝置,如剛買回來一塊硬碟,分完區(或者不分割槽),不執行格式化操作,直接掛到作業系統上使用。如果你腦細胞轉得足夠快,這會兒是不是已經琢磨過來了,沒錯,裸裝置就是一種底層原始裝置,作業系統提供的檔案系統不過是於裸裝置之上加了一層管理罷了,因此,某些情況下直接將資料檔案、日誌檔案、控制檔案儲存於裸裝置,能夠在一定程度上提高I/O的讀寫效率(跳過了作業系統層嘛)。不過,號稱Oracle的下一個版本12g就不再提供對裸裝置的支援。一定要清晰地認識到,雖然資料檔案是資料的最終存放地,但資料檔案是一個物理概念,無法在建立物件或儲存物件時,為物件指定存放到哪個資料檔案中。物件在儲存時只能指定儲存的表空間,然後由Oracle自動對儲存區域進行分配,如果指定的表空間含有多個資料檔案,那麼該物件就可能被儲存到多個資料檔案中。
資料檔案有多種狀態,其中聯機(Online)、離線(Offline)和SYSTEM(只有SYSTEM表空間資料檔案的狀態會顯示為SYSTEM)比較常見,只有當資料檔案處於聯機狀態或SYSTEM狀態時,使用者才能正常訪問該資料檔案中儲存的資料。除非DBA手動指定資料檔案(或資料檔案所屬的表空間)為離線狀態,否則在預設情況下資料檔案將一直是聯機狀態。
要將資料檔案置為離線狀態,可以通過下列語句實現,例如將SCOTT物件的資料檔案置為離線狀態:
SQL> ALTER DATABASE DATAFILE ' F:\ORACLE\ORADATA\JSSBOOK\SCOTT01.DBF ' OFFLINE ;
Database altered.注意喲,SYSTEM 表空間對應的資料檔案必須是SYSTEM狀態。
將資料檔案置於聯機狀態的語句與上類似,只需要將 OFFLINE 關鍵字換為 ONLINE 即可,例如:
SQL> ALTER DATABASE DATAFILE ' F:\ORACLE\ORADATA\JSSBOOK\SCOTT01.DBF ' ONLINE ;
Database altered.查詢資料庫中資料檔案,以及檔案的狀態可以通過查詢DBA_DATA_FILES和V$DATAFILE兩個檢視實現:
SQL> SELECT NAME,STATUS FROM V$DATAFILE;
NAME STATUS
---------------------------------------- -------
F:\ORACLE\ORADATA\JSSBOOK\SYSTEM01.DBF SYSTEM
F:\ORACLE\ORADATA\JSSBOOK\UNDOTBS01.DBF ONLINE
F:\ORACLE\ORADATA\JSSBOOK\SYSAUX01.DBF ONLINE
F:\ORACLE\ORADATA\JSSBOOK\USERS01.DBF ONLINE
F:\ORACLE\ORADATA\JSSBOOK\SCOTT01.DBF ONLINE提示:V$* 和DBA_*的區別。
你可能會感到疑惑,實現相同(或類似)功能為什麼會有兩種檢視呢?V$*檢視和DBA_*檢視有什麼區別嗎?什麼時候使用V$*檢視,什麼時候應該使用DBA_*檢視呢?
這裡三思並不想描述得太複雜,下面簡單通過三五十萬字描述一下這幾個問題!噢,你說時間緊任務急,沒空看大段文字,能不能稍簡短描述?這個,好吧,那就把萬字去了說。
在Oracle的定義中,V$*檢視是指動態效能檢視,而DBA_*(含ALL_*和USER_*等)則是資料字典表,V$*檢視和DBA_*檢視均是由Oracle自行維護的包含資料庫中物件資訊或當前執行狀態的物件,兩者並不一個東西,實現的功能也不同,至多隻是類似。如說上面提到的兩個檢視,都可以用來查詢資料檔案資訊,但是就上面的兩個檢視而言,V$*檢視中提供的資訊更全。
從應用的角度來看,V$*檢視應用範圍更廣,只要Oracle資料庫啟動到MOUNT狀態,就可以訪問V$*檢視;而對於DBA_*類的資料字典表,只有當Oracle資料庫處於OPEN狀態時才能查詢。究竟何時應使用V$*檢視,何時使用DBA_*檢視,一方面是根據DBA的個人使用習慣而定,另一方面則是Oracle看資料庫的實際狀態。16.1.3 臨時檔案(Tempfiles )
臨時檔案並不是指臨時存在的檔案,而是臨時表空間對應的資料檔案,從實際表現上來看,該檔案也不是說用完就會被刪除,而是指該檔案中儲存的物件屬於臨時存在物件。
這是一類特殊的資料檔案,該檔案也是用來儲存資料。通常,Oracle在執行大規模排序操作時,如果PGA記憶體區中無法存放,就會將資料儲存到臨時表空間中作為中轉,但是這部分空間並不是永久佔用,當操作執行完畢後,這部分空間又可以隨時再被其他操作臨時使用,因此你可以把這類檔案理解成需要時臨時拿來用用的檔案。不過,臨時表空間的資料檔案確實與普通表空間資料檔案有不同之外:
- 因為臨時表空間必須處於N ologging 模式,因此臨時表空間資料檔案也處於N ologging 模式。
- 臨時表空間資料檔案不能被置為只讀。
- 不能通過ALTER DATABASE語句建立臨時表空間資料檔案。
- 通過RMAN備份時不會備份臨時表空間資料檔案,恢復時自然也不會對其進行恢復。不過10g環境下,通過RMAN執行資料庫恢復後,當開啟資料庫時,會自動建立臨時表空間資料檔案。
- 臨時表空間資料檔案在分配儲存空間時也與普通表空間資料檔案不同。普通表空間資料檔案分配空間時,需要等待作業系統格式化相應空間。臨時表空間資料檔案是一種稀疏( S parse )型別的檔案,初始建立時只是看起來佔用了指定大小的空間,但實際上此時空間並未真正佔用,這類檔案的空間將會在實際使用時進行分配。
可以通過DBA_TEMP_FILES或V$TEMPFILE檢視查詢當前資料庫中臨時表空間的資料檔案資訊,例如:
SQL> SELECT NAME FROM V$TEMPFILE;
NAME
--------------------------------------------------
F:\ORACLE\ORADATA\JSSBOOK\TEMP01.DBF=================================================
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-629879/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 塗抹ORACLE--第16章--資料庫物理儲存結構(4)Oracle資料庫
- 塗抹ORACLE--第16章--資料庫物理儲存結構(1)Oracle資料庫
- 塗抹ORACLE--第1章ORACLE傳奇(2)Oracle
- 塗抹ORACLE--第1章ORACLE傳奇(3)Oracle
- 塗抹ORACLE--第1章ORACLE傳奇(1)Oracle
- 塗抹ORACLE--序言之精彩不止一兩抹~Oracle
- 達夢資料庫基礎知識(一)資料庫物理儲存結構資料庫
- 第9章 資料儲存
- 塗抹MySQL--第5章 MySQL資料庫中的許可權體系 - 5.3許可權級別(2)MySql資料庫
- 2 Day DBA-管理Oracle例項-管理資料庫儲存結構-關於資料庫儲存結構Oracle資料庫
- 管理資料庫儲存結構資料庫
- 塗抹MySQL--第5章 MySQL資料庫中的許可權體系 - 5.2許可權授予與回收(2)MySql資料庫
- oracle物理儲存結構理解Oracle
- 塗抹MySQL--第5章 MySQL資料庫中的許可權體系 - 5.4帳戶安全管理MySql資料庫
- 塗抹ORACLE-第5章-SQL*Loader 之一千零一十一個怎麼辦(2)OracleSQL
- 2 Day DBA-管理Oracle例項-管理資料庫儲存結構-關於其它儲存結構Oracle資料庫
- 基礎知識1——資料物理,邏輯儲存結構
- 資料庫內部儲存結構探索資料庫
- 塗抹MySQL--第5章 MySQL資料庫中的許可權體系 - 5.3許可權級別(1)MySql資料庫
- 塗抹MySQL--第5章 MySQL資料庫中的許可權體系 - 5.3許可權級別(3)MySql資料庫
- Mysql-Innodb : 從一個位元組到整個資料庫表瞭解物理儲存結構和邏輯儲存結構MySql資料庫
- 資料結構第10章 排序資料結構排序
- 塗抹MySQL--第5章 MySQL資料庫中的許可權體系 - 5.2許可權授予與回收(3)MySql資料庫
- 塗抹MySQL--第5章 MySQL資料庫中的許可權體系 - 5.2許可權授予與回收(1)MySql資料庫
- HBase 資料儲存結構
- Oracle資料儲存結構Oracle
- PostgreSQL 資料庫學習 - 1.資料庫體系結構之儲存結構SQL資料庫
- 詳解資料庫儲存的資料結構LSM Tree資料庫資料結構
- 層次結構資料的資料庫儲存和使用資料庫
- 2 Day DBA-管理Oracle例項-管理資料庫儲存結構-執行常見的資料庫儲存任務Oracle資料庫
- [資料庫系統]儲存和檔案結構資料庫
- 塗抹ORACLE-第8章-Rman說,我能備份(1) 進入RMANOracle
- 塗抹MySQL--第5章 MySQL資料庫中的許可權體系 - 5.1談談許可權處理邏輯MySql資料庫
- 塗抹ORACLE-第5章-SQL*Loader 之一千零一十一個怎麼辦(3)OracleSQL
- 第2章 順序表及其順序儲存
- Prometheus時序資料庫-磁碟中的儲存結構Prometheus資料庫
- 一篇看懂圖資料庫janusgraph儲存結構資料庫
- Oracle資料庫儲存結構之間的關係Oracle資料庫