裸設備和Oracle問答20例

1.什麼叫作裸設備?node

裸設備,也叫裸分區(原始分區),是一種沒有通過格式化,不被Unix經過文件系統來讀取的特殊字符設備。它由應用程序負責對它進行讀寫操做。不通過文件系統的緩衝。linux

2.如何辨別裸設備?數據庫

在Unix的/dev 目錄下,有許多文件,其中有兩個大類:字符設備文件和塊設備文件。字符設備特殊文件進行I/O操做不通過操做系統的緩衝區,而塊設備特殊文件用來同外設進行定長的包傳輸。字符特殊文件與外設進行I/o操做時每次只傳輸一個字符。而對於塊設備特殊文件來講,它用了cache機制,在外設和內存之間一次能夠傳送一整塊數據。裸設備使用字符特殊文件。在/dev 目錄下,你能夠看到許多這樣的文件。服務器

3.使用裸設備的好處?oracle

由於使用裸設備避免了再通過Unix操做系統這一層,數據直接從Disk到Oracle進行傳輸,因此使用裸設備對於讀寫頻繁的數據庫應用來講,能夠極大地提升數據庫系統的性能。固然,這是以磁盤的 I/O 很是大,磁盤I/O已經稱爲系統瓶頸的狀況下才成立。若是磁盤讀寫確實很是頻繁,以致於磁盤讀寫成爲系統瓶頸的狀況成立,那麼採用裸設備確實能夠大大提升性能,最大甚至能夠提升至40%,很是明顯。並且,因爲使用的是原始分區,沒有采用文件系統的管理方式,對於Unix維護文件系統的開銷也都沒有了,好比不用再維護I-node,空閒塊等,這也可以致使性能的提升。異步

4.如何決定是否應該使用裸設備?性能

判斷是否使用裸設備要從如下方面進行考慮:首先,數據庫系統自己須要已經被比較好的通過了優化。優化是一門頗有些技術的話題,很難簡單地講述。其次,使用Unix命令來辨別是否存在磁盤讀寫瓶頸。好比Unix的vmstat, sar 等命令均可以較好的進行鑑別。若是決定採用裸設備,須要磁盤上還有空閒的分區。不然,就要新添磁盤,或者對原有系統從新規劃。優化

5.什麼系統必須使用裸設備?操作系統

若是使用了Oracle 並行服務器選項,則必須採用裸設備來存放全部的數據文件,控制文件,重作日誌文件。只有把這些文件放到裸設備上,才能保證全部Oracle 實例均可以讀取這個數據庫的文件。這是由Unix操做系統的特性決定的。還有一種狀況是,若是你想使用異步I/O,那麼在有些Unix上也必須採用裸設備。這個須要參考具體Unix的相關文檔。unix

6.可以使用一個磁盤的第一個分區做爲裸設備嗎?

能夠,可是不推薦。在Unix的比較舊的版本是銀行,磁盤的第一個分區經常包含這個磁盤的一些信息,以及邏輯卷的一些控制信息。若這些部分被裸設備覆蓋的話,磁盤就會變得不可識別,致使系統崩潰。較新的Unix版本不會發生這樣的狀況,由於它們採用了更復雜的技術來管理磁盤,邏輯卷的一些信息。可是,除非很確信不要使用磁盤的第一個分區來做爲裸設備。

7.我能夠把整個裸設備都做爲Oracle的數據文件嗎?

不行。必須讓數據文件的大小稍微小於該裸設備的實際大小。至少要空出兩個oracle塊的大小來。

8.裸設備應該屬於那個用戶?

應該由root來建立裸設備,而後再分配給Oracle用戶以供使用。同時還要把它納入Oracle用戶所在的那個組裏邊(一般都是DBA)。

9.在建立數據文件時如何指定裸設備?

和普通文件沒有什麼太大的區別,同樣都是在單引號裏邊寫上裸設備的詳細路徑就能夠了。舉一個例子:要在建立一個表空間,使用兩個裸設備,每一個分別爲30M的大小,Oracle塊的大小爲4K,能夠用下面的命令:
CREATE TABLESPACE RAW_TS
DATAFILE '/dev/raw1' size 30712k
DATAFILE '/dev/raw2' size 30712k;

10.Oracle塊的大小和裸設備有什麼關係嗎?

Oracle會必須是裸設備上物理塊大小的倍數。

11.如何在裸設備上進行備份?

在裸設備上,不能使用Unix實用程序來進行備份,惟一的辦法是使用最基本的Unix命令:DD來進行備份。好比:dd if=/dev/raw1 of=/dev/rmt0 bs=16k。dd的具體語法能夠參考unix手冊,或者聯機幫助。你也能夠先用dd把裸設備上的數據文件備份到磁盤上,而後再利用Unix實用程序進一步處理。

12.若是我沒有使用Oracle並行服務器選項,我能夠在數據庫上讓一部分數據文件使用文件系統,另外一部分使用裸設備嗎?

能夠。可是這樣的話,會使備份過程更加複雜。

13.我應該把聯機重作日誌文件放到裸設備上嗎?

這是一個極好的選擇。聯機重作日誌文件是寫操做很是頻繁的文件,放到裸設備上很是合適。若是你使用了並行服務器選項,那麼聯機重作日誌文件必須放到裸設備上面。

14.能夠把歸檔日誌文件放到裸設備上嗎?

不行。歸檔日誌文件必須放到常規的Unix文件系統上面,或者直接放到磁帶上面去。

15.我能夠在裸設備上邊放置多個數據文件嗎?

不行。因此你必須在設置裸設備時很是當心。過小的話,會致使空間很快用完,太大的話,空間就白白浪費了。

16.因應該把幾個裸設備放到同一個物理磁盤上嗎?

這樣作很差。由於使用裸設備就是爲了提升磁盤讀寫速度。而把多個裸設備放到同一個物理磁盤上會致使讀寫競爭,這樣對於提升I/O速度是不利的。應該儘可能分散裸設備到不一樣的物理磁盤上,最好是分散到不一樣的磁盤控制器上。這是最佳選擇。

17.須要把全部裸設備都定義成一樣的大小嗎?

這不是必須得,可是劃分紅一樣的大小對於管理數據庫比較有利。

18.爲了在Unix上使用裸設備,我須要改變Unix核心參數嗎?

不須要。但能夠選擇減少緩衝區的大小,若是沒有別的應用也在同一臺Unix機器上運行。由於運用了裸設備之後,再也不使用Unix的系統緩衝區。

19.爲了提升讀寫速度,在操做系統級別上,還有什麼辦法能夠採起嗎?

使用RAID(廉價冗餘磁盤陣列)也是很是有效的辦法,尤爲實那種讀寫很是頻繁的系統。

20.在考慮了以上全部方面後,還能有什麼辦法能夠提升性能的嗎?

這就須要對Oracle 進行優化,而且購買更多的磁盤和磁盤控制器,來分散I/O到不一樣的磁盤上。

免費提供最新Linux技術教程書籍,爲開源技術愛好者努力作得更多更好:http://www.linuxprobe.com/

相關文章
相關標籤/搜索