11G R2 ASM管理

dawn009發表於2014-05-31

ASM例項被設計和構建為例項的邏輯擴充套件;它們共用相同的例項管理機制。與例項引數檔案相似,ASM例項也有一個名為登錄檔檔案的引數檔案,它儲存在一個ASM磁碟群組的/ASMPARAMETERFILE目錄中,在 Grid Infrastructure 安裝期間,指定該磁碟組來儲存OCR和表決磁碟。ASM引數檔案使用保留檔案號253。對於單例項資料庫,ASMSID+ASM,而對於Oracle RAC節點來說為+ASMnode#。對資料庫初始化引數檔案適用的檔名、預設位置和搜尋順序等規則也適用於ASM初始化引數檔案。但是,它們有一組獨立的初始化引數,這些引數是不能在資料庫例項中設定的。

1. 管理ASM例項

ASM例項的啟動類似於Oracle資料庫例項;與使用SQL*Plus連線到例項中一樣,必須將ORACLE_SID環境變數連線到ASM SID。初始化引數檔案(可能是一個伺服器引數,也稱為ASM引數檔案)必須包含引數INSTANCE_TYPE = ASM,以告訴Oracle可執行檔案:一個ASM例項正在啟動,而不是啟動一個資料庫例項。除了由ASM_DISKGROUPS初始化引數指定的磁碟組之外,ASM將自動掛載用於儲存表決磁碟、OCRASM引數檔案的磁碟組。

STARTUP命令用一組記憶體結構來啟動例項,並掛載由初始化引數ASM_DISKGROUPS
指定的磁碟組。如果ASM_DISKGROUPS為空,那麼ASM例項啟動,並警告沒有掛載磁碟組。然後可以用ALTER DISKGROUP MOUNT(類似於ALTER DATABASE MOUNT命令)來掛載磁碟組。

6-2描述了ASM例項的各種啟動模式。

6-2  啟動模式

 

啟動模式

說明

NOMOUNT

啟動ASM例項,不掛載任何磁碟組

MOUNT

啟動ASM例項,並掛載磁碟組

OPEN

掛載磁碟組,並允許從資料庫中進行連線。這是預設的啟動模式

FORCE

SHUTDOWN ABORT之後啟動MOUNT

其他一些啟動子句對於ASM例項的解釋與對資料庫例項的解釋類似。例如,RESTRICT防止資料庫例項連線這個ASM例項。OPEN對於ASM例項是無效的。NOMOUNT啟動ASM例項,而不掛載任何磁碟組。

ASM例項沒有任何資料字典,連線到ASM例項的唯一可能方式就是透過作業系統許可權,如SYSDBASYSASMSYSOPER。在安裝Oracle Grid Infrastructure 期間指定作業系統組OSASMOSDBAOSOPER,這些作業系統組為Oracle ASM例項實現SYSASMSYSDBASYSOPER許可權。Oracle允許透過密碼身份驗證連線到ASM例項,它要求將ASM初始化引數REMOTE_ LOGIN_PASSWORDFILE設定為一個不等於NONE的值。

預設情況下,Oracle通用安裝程式將為ASM例項建立一個密碼檔案,新使用者將被自動新增到密碼檔案中;使用者隨後可以使用Oracle Net Service透過網路連線到ASM例項。在透過ASMCMD連線時,OracleSYSDBA身份連線到ASM例項。我們可以使用SQL*Plus連線到例項,並執行簡單的SQL命令,如“show sga”和“show parameter ”。下面是一個示例:
$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.2.0 Production on Fri Jan 14 11:09:38 2011
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options
SQL> show sga
Total System Global Area      283930624 bytes
Fixed Size                      2225792 bytes
Variable Size                 256539008 bytes
ASM Cache                     25165824 bytes

可以查詢V$PWFILE_USERS動態檢視,列出密碼檔案中的使用者。另外一種列出密碼檔案中使用者的方法是在ASMCMD命令提示下使用lspwusr命令。ASMCMD可用於手動建立和管理密碼檔案。

ASM例項關閉類似於資料庫例項關閉。在關閉一個ASM例項之前,必須先關閉使用這個ASM例項的資料庫例項。當使用NORMALIMMEDIATETRANSACTIONAL關閉時,ASM會等待任何正在進行的SQL操作完成。一旦完成所有ASM SQL操作,就解除安裝所有磁碟組,並按照有序方式關閉ASM例項。如果任何資料庫例項連線到ASM例項,SHUTDOWN命令就將返回一條錯誤,仍然使ASM例項保持執行狀態。

在使用SHUTDOWN ABORT時,ASM例項被立即終止。它不會以有序方式解除安裝磁碟組。下一次啟動時需要利用ASM恢復(類似於RDBMS恢復)使磁碟組的狀態一致。ASM例項還有一些類似於撤銷和重做的元件(具體細節將在本章後面討論),它們支援崩潰恢復和例項恢復。

如果有任何資料庫例項連線到這個ASM例項,那麼資料庫例項會終止,因為它不能訪問由這個ASM例項管理的儲存系統。

Oracle 11g R2中,ASM例項可以透過ASMCAASMCMDSRVCTL實用工具來啟動和停止。SRVCTL使用OCR中註冊的啟動和關閉選項來啟動或停止一個ASM例項。下面的示例說明使用SRVCTL實用工具來啟動和停止叢集節點racnode01上的ASM例項+ASM1

使用下面的命令啟動racnodel叢集節點上的ASM例項:

  $srvctl start asm -n racnode01

使用以下命令停止racnode01叢集節點上的ASM例項:

  $srvctl stop asm -n racnode01

SQL*Plus類似,也可以使用ASMCMD命令列實用工具來啟動和停止ASM例項,只是其啟動/關閉選項的語法有所不同。下面給出使用ASMCMD啟動和停止ASM例項的示例。
使用以下命令以掛載狀態啟動ASM例項:

  $asmcmd
ASMCMD> startup –mount

使用以下命令立即關閉ASM例項:

  $asmcmd
ASMCMD> shutdown –immediate

注意:

如果在ASM磁碟組中儲存OCR和表決磁碟,那麼不能單獨啟動或關閉Oracle RAC資料庫系統中的ASM例項。必須使用crsctl命令來啟動或停止CRS,它也會啟動/停止ASM例項。

儘管ASM沒有資料字典,但它提供了一個儲存在記憶體中的動態效能檢視,可用於從ASM例項中提取後設資料資訊。下面對這些重要的動態效能檢視進行簡短描述。當然,它並不是一個完整的效能檢視清單。因此,要了解ASM動態效能檢視的完整列表,應參閱Oracle技術網路網站上的Oracle文件。

V$ASM  這個檢視顯示了所連線ASM例項的例項資訊。

V$ASM_DISKGROUP  這個檢視列出了在ASM中建立的磁碟組,還有後設資料資訊,如磁碟組的空閒空間、分配單元大小和狀態。

V$ASM_FILE  這個檢視列出了在V$ASM_DISKGROUP檢視所列磁碟組中建立的檔案。

V$ASM_ALIAS  這個檢視列出了在V$ASM_FILE檢視中所列ASM檔案的使用者友好名稱。這個檢視對於識別ASM檔案的確切名稱非常有用,因為V$ASM_FILE檢視僅列出了檔案號。

V$ASM_DISK_IOSTAT  這個檢視列出了V$ASM_DISKGROUP檢視中所列每個磁碟的磁碟I/O效能統計資訊。

V$ASM_ACFSVOLUMES  這個檢視列出了ASM動態卷的後設資料資訊。

V$ASM_OPERATION  這個檢視顯示了當前操作,例如在V$ASM_DISKGROUP檢視中所列磁碟組上發生的任何再均衡操作。這個檢視對於監控ASM中的再均衡操作非常有用。

2. ASM後臺程式

由於ASM是使用RDBMS框架構建的,因此這些軟體的體系結構類似於Oracle RDBMS程式的結構。ASM例項是使用各種後臺程式構建的,這些程式中專屬於ASM例項的一部分用來管理ASM中的磁碟組、ASM動態卷管理器和ASM叢集檔案系統。下面的列表顯示ASM例項的後臺程式,它們擁有ASMSID

  grid    23405      1  0  2010 ?        00:00:25 asm_o000_+ASM1
grid    25753      1  0 21:37 ?        00:00:00 asm_pz99_+ASM1
grid    27524      1  0  2010 ?        00:00:53 asm_pmon_+ASM1
grid    27526      1  0  2010 ?        00:00:01 asm_psp0_+ASM1
grid    27530      1  0  2010 ?        00:00:00 asm_vktm_+ASM1
grid    27534      1  0  2010 ?        00:00:00 asm_gen0_+ASM1
grid    27536      1  0  2010 ?        00:00:02 asm_diag_+ASM1
grid    27538      1  0  2010 ?        00:01:06 asm_ping_+ASM1
grid    27540      1  0  2010 ?        00:21:59 asm_dia0_+ASM1
grid    27542      1  0  2010 ?        00:08:59 asm_lmon_+ASM1
grid    27544      1  0  2010 ?        00:16:53 asm_lmd0_+ASM1
grid    27546      1  1  2010 ?        11:14:44 asm_lms0_+ASM1
grid    27550      1  0  2010 ?        00:00:00 asm_lmhb_+ASM1
grid    27552      1  0  2010 ?        00:00:00 asm_mman_+ASM1
grid    27554      1  0  2010 ?        00:00:02 asm_dbw0_+ASM1
grid    27556      1  0  2010 ?        00:00:00 asm_lgwr_+ASM1
grid    27558      1  0  2010 ?        00:00:04 asm_ckpt_+ASM1
grid    27560      1  0  2010 ?        00:00:00 asm_smon_+ASM1
grid    27562      1  0  2010 ?        00:05:55 asm_rbal_+ASM1
grid    27564      1  0  2010 ?        00:00:00 asm_gmon_+ASM1
grid    27566      1  0  2010 ?        00:00:00 asm_mmon_+ASM1
grid    27569      1  0  2010 ?        00:00:00 asm_mmnl_+ASM1
grid    27576      1  0  2010 ?        00:00:01 asm_lck0_+ASM1
grid    27680      1  0  2010 ?        00:01:11 asm_asmb_+ASM1
grid    30118      1  0  2010 ?        00:00:39 asm_o001_+ASM1

仔細看一下這些後臺程式,將會發現RDBMS例項管理中使用的後臺程式類似於smonpmon。但是,還有其他一些程式(rbalgmon)都是ASM例項特有的。現在讓我們仔細研究一下ASM特有的這些程式。在ASM例項中建立ASM動態卷時,將會看到更多的後臺程式,如VDBGVBGnVMB。這裡將解釋一些重要的ASM後臺程式。

RBAL  這是一個再均衡後臺程式。它負責再均衡操作,還協調ASM磁碟恢復程式。

GMON  這是“組監控器”後臺程式。它在管理磁碟組時將磁碟組標記為“離線”,甚至會刪除這個磁碟組。

ARBn  儘管RBAL負責協調磁碟組的再均衡,但實際上是由ARBn來執行再均衡協調的。

VMB  這是一個“捲成員資格”後臺程式,它與ASM例項一同負責叢集成員資格。在建立ASM動態卷時,ASM例項會啟動這個後臺程式。

VDBG  這是“卷驅動程式”後臺程式。它與動態卷驅動程式一同提供卷盤區的鎖定和解鎖。這是一個非常重要的程式,如果被意外終止,那麼它會關閉ASM例項。

VBGn  這是“卷後臺”程式。ASM例項中的VBG與作業系統卷驅動程式通訊。它負責ASM與作業系統之間的訊息傳送。

XDMG  這是一個Exadata自動管理器。XDMG監控所有配置的Exadate單元,以瞭解狀態變化,例如更換了一個壞磁碟等。它的主要任務是監控不可訪問的磁碟和單元,當它們再次可供訪問時,啟動ASM ONLINE操作。

3. 資料庫例項中的ASM程式

每個使用ASM的資料庫例項有兩個後臺程式:ASMBRBALASMB後臺程式在資料庫例項中執行,連線到ASM例項中的前臺程式。透過這一連線,定期互動訊息,以更新統計資訊,並核實兩個例項都是健康的。透過ASMB將所有描述開放檔案的盤區對映圖傳送給資料庫例項。如果重新定位了一個開放檔案的盤區,或者改變了一個磁碟的狀態,那麼從受影響資料庫例項中的ASMB程式接收訊息。

在需要ASM干預的操作期間,例如由資料庫前臺程式建立一個檔案,這個資料庫前臺程式會直接連線ASM例項,以執行此操作。每個資料庫例項維護一個連線池(其中包含指向這個ASM例項的連線),以避免在每次執行檔案操作時重新連線所帶來的開銷。

一個由從屬程式O001~O010組成的組建立到ASM例項的連線,這些從屬程式用作資料庫程式的連線池。資料庫程式可以使用從屬程式向ASM例項傳送訊息。例如,開啟一個檔案會透過一個從屬程式向ASM例項傳送開啟請求。但是,從屬程式不會用於長時間執行的操作,例如用於建立檔案的操作。利用這些從屬連線,不再需要因為短期請求而登入ASM例項所造成的開銷。這些從屬程式會在沒有使用時自動關閉。

4. 資料庫和ASM例項之間的通訊

ASM類似於Oracle資料庫的一個卷管理器,它為Oracle資料庫檔案提供了檔案系統。當我們建立一個新的表空間或者只是向一個現有表空間中新增一個新的資料檔案時,Oracle資料庫例項請求ASM例項建立一個可供Oracle資料庫例項使用的新ASM檔案。在接收到建立新檔案的請求之後,ASM例項向“持續操作目錄”中新增一個條目,並在ASM磁碟組中為這個新檔案分配空間。ASM建立盤區,並與資料庫例項共享盤區對映圖;事實上,資料庫例項中的ASMB後臺程式接收這一盤區對映圖程式。

一旦資料庫例項成功開啟了這個例項,ASM例項就提交新檔案建立操作,並從“持續操作目錄”中刪除該條目,因為新檔案資訊現在已經儲存在磁碟頭中。這裡有一個需要理解的重要概念:大多數人看到資料庫I/O被重新導向到ASM例項,ASM例項代表資料庫例項來執行I/O;但是,這是錯誤的。Oracle資料庫例項直接向ASM檔案執行I/O,但當ASM例項向資料庫例項確認已經提交了新檔案時,它必須重新開啟一次新建立的ASM檔案。ASM例項使用兩個資料結構來管理它所包含的後設資料事務,這兩種結構稱為“活動改變目錄”(ACD)和“持續操作目錄”(COD)

活動改變目錄(ACD)

活動改變目錄(ACD)是一種日誌記錄機制,它提供了類似於Oracle資料庫中重做日誌的功能。活動改變目錄記錄了ASM例項中的所有後設資料改動,當由於操作故障或者例項崩潰而發生意外故障,從而在決定前滾時,會用到這些記錄。ACD作為一個檔案(大小為42MB)儲存在一個ASM磁碟中。ASM後設資料是三重映象的(高冗餘),在新增新例項時,可以在磁碟組內增長。ASM的事務原子性是由ACD保證的。

持續操作目錄(COD)

持續操作目錄(COD)ASM例項中的一種記憶體結構,它維持活動ASM操作及改變的狀態資訊,如再均衡、新增新磁碟或刪除磁碟等。另外,來自客戶端(RDBMS例項)的檔案建立請求會使用COD來保護完整性。COD記錄會根據ASM操作的成功或失敗來提交或回滾。COD類似於Oracle資料庫的回滾段(或撤銷表空間)

5. 初始化引數

就像資料庫例項一樣,ASM例項需要有強制引數和可選引數。可以在資料庫例項和ASM例項中設定初始化引數,但有些引數僅對ASM例項有效。以下初始化引數可以在ASM例項中設定。以“ASM_”開頭的引數不能用於資料庫例項。強烈建議將這些引數儲存在ASM引數檔案中(也稱為SPFILE或登錄檔檔案)

INSTANCE_TYPE  這個引數向Oracle可執行檔案指明例項型別。預設情況下,Oracle可執行檔案假定例項型別是一個資料庫例項。這是ASM例項中的唯一強制引數。所有其他引數在沒有指明時都有適當的預設引數。

ASM_POWER_LIMIT  設定磁碟再均衡的功能限制。這個引數值預設為1,有效值為0~11。這個引數是動態的。有關再均衡的詳細資訊將在本章後面提供。

ASM_DISKSTRING  一個用逗號分隔的字串列表,它限制了ASM發現的磁碟集。這個引數接受萬用字元。只有那些與字串之一匹配的磁碟才能被發現。字串格式取決於所使用的ASM庫和作業系統。ASM的標準系統庫支援glob模式匹配。如果正在使用ASMLib來建立ASM磁碟,那麼預設路徑為ORCL:*

CLUSTER_DATABASE  如果叢集節點上的ASM例項希望訪問同一ASM磁碟,那麼這個引數必須被設定為TRUE。這個引數實際地啟用叢集儲存。必須確保叢集中所有ASM例項上的這個引數都設定為相同值。

ASM_DISKGROUPS  使用ALTER DISKGROUP ALL MOUNT語句時或者由ASM在啟動時掛載的磁碟組名稱列表。如果沒有指定這個引數,那麼除儲存SPFILEOCR和表決磁碟的ASM磁碟組之外,不會掛載其他磁碟組。這個引數是動態的,在使用伺服器引數檔案(SPFILE)時,不需要改變這個值。

ASM_PREFERRED_READ_FAILURE_GROUPS  這個引數是在Oracle 11g中引入的,允許擴充套件叢集配置中的ASM例項從本地磁碟中讀取資料,而不需要總是從主副本中讀取(在擴充套件叢集配置中,每個站點都有自己的專用儲存)。在Oracle 11g之前,無論本地磁碟上是否有可供使用的相同盤區,ASM總是從主副本中讀取資料。這是Oracle 11g中非常受歡迎的改進,它對於提高Oracle 擴充套件叢集的效能非常有用。在為擴充套件叢集配置ASM時,要非常仔細地選擇故障組的數量,因為這一設定會對ASM讀取效能產生直接影響。

LARGE_POOL_SIZE  ASM例項使用的內部包是從大型池中執行的,因此應當將初始化引數LARGE_POOL_SIZE設定為一個大於8MB的值。至於其他緩衝區引數,可以使用其預設值。

db_unique_name:引數預設值是+ASM,是叢集中或但個節點上的ASM例項的唯一值。

       asm_preferred_read_failure_groups

此引數是11g中的新增引數,在使用叢集asm例項時候,此引數包含給定的資料庫例項首選的故障組。此引數因例項而異:每個例項可以指定與例項節點最接近的故障組以提高效能,例如,最少恢復時間的故障組

 

6. 手動建立磁碟組

Oracle提供了不同的ASM工具(ASMCAASMCMDOracle網格控制和SQL*Plus)來建立和管理ASM例項內部的磁碟組。在建立ASM磁碟組之前,瞭解對ASM磁碟的效能和可用性需求(ASM磁碟組的冗餘級別)非常重要。如果底層儲存不受RAID配置的保護,就應當為ASM磁碟組選擇正確的冗餘,從而使用ASM映象。ASMCA是一個GUI工具,其用途是不言自明的,不需要太多的專業知識,但要改變ASM磁碟組的不同屬性,就應當單擊Show Advance Options按鈕。ASMCM使用XML樣式的標記來指定ASM磁碟組名稱、磁碟位置和屬性。這些XML標記可被指定為內聯XML,也可以建立一個可以用ASMCMD中的mkdg命令使用的XML檔案。

SQL*Plus中,使用CREATE DISKGROUP命令在ASM例項中建立磁碟組。在建立磁碟組之前,ASM例項將核查在一個磁碟組中新增的磁碟/RAW分割槽是可定址的。如果磁碟/RAW分割槽是可定址的,而且所有其他組都沒有使用它,那麼ASM在要使用的磁碟或RAW分割槽的第一個資料塊中寫入特定資訊,以建立該磁碟組。從Oracle 11g開始,可以為ASM磁碟組指定不同屬性,這些屬性會對ASM磁碟組的效能和可用性產生影響。在建立ASM磁碟組時指定的屬性可以從V$ASM_ATTRIBUTE動態效能檢視中檢視。下面是通常會用到的重要ASM磁碟組屬性列表:

AU_SIZE  用於指定所建立ASM磁碟組的分配單元大小。不能改變一個已有磁碟組的分配單元,所以要確保在建立ASM磁碟組時指定了正確的分配單元。預設情況下,Oracle為分配單元使用的大小為1MB

DISK_REPAIR_TIME  這個屬性與磁碟組的效能和可用性有關。這個屬性指定了一個時間量,ASM在等待這一時間長度之後將刪除一個離線ASM磁碟並再均衡磁碟組。

COMPATIBLE.ADVM  如果將使用這個磁碟組建立ASM動態卷,而且只在Oracle Grid Infrastructure 11g R2及以下版本中使用這個磁碟組,那麼需要這個屬性。

CELL.SMART_SCAN_CAPABLE  這個屬性僅對於Oracle Exadata網格磁碟有效,它啟用基於智慧掃描的解除安裝處理。

在執行CREATE DISKGROUP命令時,ASM自動掛載磁碟組,磁碟組名稱也被新增到SPFILE中的ASM_DISKGROUPS引數,所以在以後重新啟動ASM例項時,只會掛載這個新建立的磁碟組。

如果希望ASM對檔案進行映象,那麼在建立ASM磁碟組時定義冗餘級別。Oracle提供了兩種冗餘級別:正常冗餘和高冗餘。在正常冗餘情況下,每個盤區有一個映象整本;在高冗餘情況下,每個盤區在不同磁碟組中有兩個映象副本。

一個磁碟組中的磁碟應當大小相當、效能特徵類似。為不同型別的磁碟建立不同磁碟組總是明智的做法。磁碟組中的磁碟應當大小相同,以避免在故障組中浪費磁碟空間。用於建立磁碟組的所有磁碟都必須具有一致的ASM_DISKSTRING引數,以避免出現磁碟發現問題。

7. ASM三種磁碟組的建立及刪除(High  Normal Extermal

 

2.1  建立High級別的ASM磁碟組,最少需要三塊磁碟來建立。

 

SQL> create diskgroup oradata high redundancy disk'/dev/oracleasm/disks/VOL3','/dev/oracleasm/disks/VOL4','/dev/oracleasm/disks/VOL5';

 

Diskgroupcreated.

2.2  建立Normal級別的ASM磁碟,最少需要兩個磁碟來建立。

 

SQL> create diskgroup oradata normal redundancy disk'/dev/oracleasm/disks/VOL6','/dev/oracleasm/disks/VOL7';

 

Diskgroupcreated.

 

 

2.3  建立Extermal級別的ASM磁碟,最少需要一個磁碟來建立。

 

SQL> create diskgroup oradata external redundancy disk '/dev/oracleasm/disks/VOL8';

 

Diskgroupcreated

刪除磁碟組

SQL> drop diskgroup oradata including contents;

解除安裝磁碟

SQL> alter diskgroup oradata dismount;

掛載磁碟

SQL> alter diskgroup oradata  mount;

掛載所有磁碟

SQL> alter diskgroup all mount;

解除安裝所有磁碟

SQL> alter diskgroup all dismount;

在建立磁碟組之後,可能需要根據業務需求對它進行修改。Oracle允許在建立磁碟組之後對其執行建立、刪除/撤銷刪除和掛載/解除安裝操作,並且允許調整磁碟組的大小。

8. 向磁碟組新增磁碟

只要向磁碟組中新增了磁碟,Oracle就會在內部再均衡I/O負載。下面的示例說明如何向現有磁碟組中新增磁碟。Oracle使用ADD子句向現有磁碟組中新增磁碟或故障組。在這個示例中,原始分割槽/dev/raw/raw7被新增到現有組DGA中:

  ALTER DISKGROUP DGA ADD DISK
'/dev/raw/raw7' NAME disk5;

在這條語句中沒有定義故障組,所以不會將這個磁碟指定給它自己的故障組。

9. 刪除磁碟組中的磁碟

Oracle隨CREATE DISK GROUP命令一起提供了DROP DISK子句,用以刪除磁碟組中的一個磁碟。在這個操作期間,Oracle會在內部再均衡這些檔案。如果磁碟組中的其他磁碟中沒有足夠空間,Oracle就會使DROP操作失敗。如果正在一個磁碟組中新增和刪除磁碟,那麼建議您採取先新增後刪除的順序,而且兩個操作應當在單獨一條ALTER DISKGROUP語言中執行,因為這樣可以減少花費在再均衡上的時間。Oracle還提供了一些強制選項,即使ASM不能讀寫一個磁碟組中的磁碟,也能對其進行刪除。這個選項不能針對採用外部冗餘的磁碟組使用。

在這個示例中,我們從DGA磁碟組中刪除/dev/raw/raw7

  ALTER DISKGROUP DGA DROP DISK '/dev/raw/raw7';

10. 調整磁碟大小

Oracle提供了RESIZE子句,該子句可結合ALTER DISKGROUP命令使用,以調整磁碟大小,調整任意特定磁碟的大小,或者調整一個特定故障組中的磁碟大小。

調整磁碟大小對於釋放磁碟空間非常有用。例如,如果在建立磁碟組時為磁碟定義的SIZE小於磁碟大小,而後來希望完全利用這個磁碟的空間,就可以使用這個選項,但不提供任何SIZE,以使Oracle採用作業系統返回的SIZE

  ALTER DISKGROUP DGA RESIZE DISK '/dev/raw/raw6' SIZE 500M;

11. 管理ACFS

諸如ASMCAASMCMDOEMSQL*Plus之類的ASM工具可用於建立和管理ACFS。建立ACFS就像是用任意一個傳統卷管理器來建立一個檔案系統。在傳統的卷管理器中,首先建立一個卷組,然後建立卷。最後,建立檔案系統,然後載入檔案系統。

類似於ASM磁碟組中的一個分配單元,“卷分配單元”是一個ASM動態卷中可以分配的最小儲存單元。ASM在每個卷分配單元中分配條帶,其中每個條帶都等於卷盤區大小,這個卷盤區大小與底層ASM磁碟組的分配單元大小直接相關。預設情況下,對於一個分配單元大小為1MB的磁碟組,一個卷盤區的大小為64MB。我們在建立ASM動態卷時指定條帶(也稱為條帶列)的數量和每個條帶的寬度,因為Oracle在內部使用SAME方法對資料進行分條和映象。Oracle隨後將儲存在ACFS內部的檔案分散到區塊中,每個卷盤區上的條頻寬度大小為128KB(預設的條頻寬度)

例如,如果建立一個400MBASM卷,並以預設設定在其內部儲存一個大小為1MB的檔案,那麼Oracle將會建立64MB的卷盤區大小,每個卷分配單元將為256MB(條帶數量乘以卷盤區大小)。因為Oracle在多個卷分配單元中分配空間,所以儘管我們請求了400MB的空間,但它將為ASM動態卷分配512MBASM動態卷可在以後進行擴充套件。ASM將這個檔案分佈在8128KB的區塊中,並將它們儲存在卷盤區中。ASM以相同方式對ASM磁碟組中可用磁碟上的卷盤區進行分條;因此,它提供了非常高效的I/O操作。我們可以使用ASM例項的V$ASM_ ACFSVOLUMESV$ASM_FILESYSTEM動態效能檢視來檢視有關所連線ASM例項的ACFS檔案系統資訊。

12. 設定ACFS

按照下面給出的步驟建立ASM叢集檔案系統:

(1) 建立一個ASM磁碟組,將屬性COMPATIBLE.ADVM設定為最小值11.2.0.0.0,因為設定這一屬性會告訴ASM,這個磁碟組可以儲存ASM動態卷。如果還沒有設定這個屬性,就不能在這個ASM磁碟組中建立動態卷。這個屬性的最小值為11.2.0.0.0,這是因為ACFS是在Oracle 11g R2中引入的,不能在先前版本的Oracle叢集件中使用。我們可以使用ASMCAASMCMDOEMSQL*Plus來建立ASM磁碟組。如果正在使用ASMCA,那麼可以透過單擊Show Advance Options按鈕來設定磁碟組屬性。其他ASM工具允許在命令列中指定這一引數。

(2) 在建立ASM磁碟組之後,需要在上一步驟建立的ASM磁碟組中建立ASM動態卷。

(3) 建立所需要的OS目錄結構,以掛載新建立的ASM動態卷。

(4) 建立這個目錄之後,需要使用作業系統命令mkfs來建立ACFS檔案系統。確保使用以下語法在ASM動態捲上建立ACFS型別的檔案系統:

  mkfs -t acfs /dev/asm/

(5) 現在使用掛載作業系統命令掛載新建立的檔案系統。確保使用ACFS系統型別來掛載此檔案系統。

13. 建立ACFS快照

可以使用ASM工具來建立和管理ACFS快照。ASMCMD命令acfsutil可用於透過命令列介面來建立和管理快照。下面是一個建立ACFS快照的示例:

  acfsutil snap create acfs_snap_01 /app/oracle/myfirstacfs

快照建立過程將建立一個隱藏目錄(.ACFS),並在這個隱藏目錄中建立一個目錄結構snaps/。在我們的示例中,ASM將建立以下目錄結構:

 .ACFS/snaps/acfs_snap_01

儘管ACFS擁有這些令人興奮的功能,但它也有一些侷限性,在使用ACFS之前必須要了解它們。儘管可以在ASM動態捲上建立其他檔案系統,但Oracle僅支援ACFS作為ASM動態捲上的叢集檔案系統。對ASM動態卷的分割槽是不受支援的,所以不能使用fdisk命令對ASM動態卷裝置進行分割槽。除此之外,也不應當在ASM動態捲上使用ASMLib,因為Oracle不支援這一配置。可以使用多路徑裝置來建立一個ASM磁碟組,但禁止對ASM動態卷使用多路徑。

14. ASM快速映象再同步

Oracle 11g之前,只要ASM不能向ASM磁碟中寫入資料盤區,它就使這個ASM磁碟離線。除此之外,還禁止再次對這個磁碟進行讀取,ASM將根據其他ASM磁碟上儲存的映象副本重新建立這些盤區。在將這個磁碟再次新增到組中時,ASM將再次執行這一再均衡操作,以重新構建所有資料盤區。這一再均衡操作非常耗時,對ASM磁碟組的響應時間也有影響。

Oracle 11g則不會刪除離線ASM磁碟,它會等待一段時間,對所修改的資料盤區進行跟蹤,等待時間由相關磁碟組的ASM_DISK_REPAIR屬性指定。如果在這一時間內修復了故障,那麼ASM將只重建修改後的資料盤區,而不會對整個磁碟組進行全面再均衡,從而使再均衡操作在整體上更快速、更高效。

15. ASM再均衡

在儲存配置和再配置期間,ASM不需要任何停機時間,也就是說,在改變儲存配置時不需要使資料庫離線。在磁碟組中新增或刪除磁碟之後,ASM會自動在磁碟組的所有磁碟之間均勻地再分佈檔案資料。這個操作稱為“磁碟再均衡”,它對資料庫是透明的。

再均衡操作在磁碟組的所有可用磁碟之間均勻地分佈每個檔案的內容。這個操作是由磁碟的空間使用情況驅動的,而不是根據這些磁碟的I/O統計資訊決定的。在需要時會自動呼叫它,操作期間不需要人為干預。也可以選擇手動執行這個操作,或者改變一個正在執行的再均衡操作。

增加負責此操作的後臺從屬程式數量可以加快再均衡操作的速度。後臺程式ARBx負責儲存再配置期間的磁碟再均衡。為了動態增加從屬程式的數量,可以使用init.ora引數ASM_POWER_LIMIT。當在Oracle RAC中執行時,建議僅使用一個節點執行再均衡。關閉任何一個未使用的ASM例項都可以做到這一點。圖6-5顯示了再均衡功能。

如果沒有在ALTER DISKGROUP命令中指定POWER子句,或者在新增或刪除磁碟時隱式呼叫了再均衡操作,那麼再均衡操作產生的後臺程式數量預設為ASM_POWER_

LIMIT初始化引數的值。這一引數可以動態調整。這一上限越高,再均衡操作的完成速度越快。這一取值越低,會使再均衡操作花費的時間越長,但所佔用的程式和I/O資源也越少。這樣就把這些資源留給了其他應用程式,如資料庫。預設值1將對其他應用程式的影響降到了最低。適當的取值應當根據硬體配置以及效能和可用性要求來決定。


如果因為手動或自動刪除了一個磁碟而正在進行再均衡,那麼增加再均衡的後臺程式數量可以縮短在其他磁碟上為被刪除磁碟上的資料重建冗餘副本的時間。

V$ASM_OPERATION檢視提供了一些資訊,可用於調整ASM_POWER_LIMIT和再均衡操作產生的後臺程式數量。V$ASM_OPERATION檢視還在EST_MINUTES列中給出了完成再均衡操作所需要的估計時間值。透過觀察時間估計值的變化,可以看出改變再均衡後臺程式數量的效果。

16. 手動再均衡磁碟組

可以使用ALTER DISKGROUP語句的REBALANCE子句對一個磁碟組內的檔案進行手動再均衡。通常不需要這一操作,因為ASM會在磁碟組的構成發生變化時自動再均衡磁碟組。但如果希望控制再均衡速度,那麼也可能要進行手動再均衡操作。

ALTER DISKGROUP...REBALANCE語句的POWER子句指定了並行化程度,因此也就指定了再均衡操作的速度。其設定值可以是0~11。值0將會暫停再均衡操作,直到再次隱式或顯式地呼叫該語句為止。預設的再均衡後臺程式數是由ASM_POWER_LIMIT
初始化引數設定的。

注意:

在使用REBALANCE POWER 0建立磁碟組時,ASM會自動禁用再均衡功能。如果向磁碟組中新增更多磁碟,那麼ASM將不會在新新增的磁碟中分佈資料。同樣,在從這個磁碟組中移除磁碟時(DROP DISK),磁碟組保持DROPPING狀態,直到將REBALANCE POWER改為大於0為止。

在輸入REBALANCE語句時提供新的級別,這會改變當前正在進行的再均衡操作的後臺程式數量級別。ALTER DISKGROUP...REBALANCE命令在預設情況下會立即返回,以便我們能夠在後臺非同步進行再均衡操作時發出其他命令。我們可以透過查詢V$ASM_OPERATION檢視來了解再均衡操作的狀態。從Oracle 11g開始,可以在ASMCMD命令提示下使用lsop命令,列出ASM操作。下面是一個使用lsop命令的示例:

  vASMCMD> lsop
Group_Name   Dsk_Num   State     Power
Data         RBAL      REAP      2

如果我們希望ALTER DISKGROUP...REBALANCE命令等到再均衡操作完成之後再返回,那麼可以向REBALANCE子句中新增WAIT關鍵字。這一點在指令碼中特別有用。這個命令還接受NOWAIT關鍵字,它將呼叫非同步執行再均衡操作的預設行為。在大多數平臺中,可以透過按下Ctrl+C組合鍵中斷執行在等待模式的再均衡操作。這樣會使命令立即返回,並給出訊息:ORA-01013: user requested cancel of current operation,並非同步繼續執行再均衡操作。

再均衡操作的其他規則包括以下:

ALTER DISKGROUP...REBALANCE語句使用的資源僅限於啟動該語句的節點上的資源。

在給定例項上,ASM只能同時執行一個再均衡過程。

在執行再均衡的ASM例項發生故障時,再均衡會繼續執行。

REBALANCE子句(及其相關的POWERWAIT/NOWAIT關鍵字)也可在新增、刪除磁碟或調整磁碟大小的ALTER DISKGROUP命令中使用。

下面的示例對磁碟組dgroup2進行手動再均衡。在再均衡操作完成之前,這個命令不會返回:

  ALTER DISKGROUP dgroup2 REBALANCE POWER 5 WAIT;

V$ASM_DISK_STAT和V$ASM_DISKGROUP_STAT可用於查詢效能統計資訊。下面的查詢可用於獲取磁碟組級別的效能統計資訊。這些檢視(再加上V$filestat)可以提供有關磁碟組及資料檔案效能的更多資訊。
SELECT PATH, READS, WRITES, READ_TIME, WRITE_TIME,
READ_TIME/DECODE(READS,0,1,READS)"AVGRDTIME",
WRITE_TIME/DECODE(WRITES,0,1,WRITES) "AVGWRTIME"
FROM V$ASM_DISK_STAT;
PATH           READS   WRITES  READ_TIME WRITE_TIME AVGRDTIME AVGWRTIME
------------ -------- -------- ---------- ------------ ---------- ----------
ORCL:DISK1     50477    67683     20.86 724.856718 .000413258 .010709583
ORCL:DISK2    418640   174842   100.259 802.975526 .000239487 .004592578

17. ASM中的備份和恢復

由於ASM例項本身不包含任何檔案,而只是管理ASM磁碟的後設資料,因此ASM例項沒有進行備份。ASM後設資料是三重映象的,它應當對後設資料提供保護,避免受到典型故障的損害。如果發生的故障足以導致後設資料的丟失,那麼必須重新建立磁碟組。ASM磁碟上的資料使用RMAN備份。在發生故障時,一旦建立了磁碟組,就可以使用RMAN來恢復資料(如資料庫檔案)

每個磁碟組都是自我描述的,包含它自己的檔案目錄、磁碟目錄和其他一些資料,如後設資料日誌記錄資訊。ASM會使用映象技術自動保護其後設資料,甚至會用外部冗餘磁碟組提供保護。ASM例項在其SGA中快取資訊。ASM後設資料描述了磁碟組及檔案,由於它儲存在磁碟組內部,因此也可以提供自我描述。後設資料儲存在塊中,每個後設資料塊的大小為4KB,並採用三重映象。

當多個ASM例項掛載相同磁碟組時,如果一個ASM例項發生故障,另一個ASM例項就會自動恢復由故障例項導致的短暫ASM後設資料更改。這種情景稱為“ASM例項恢復”,全域性快取服務會自動地即時檢測這一情景。

當多個ASM例項掛載不同的磁碟組或者在單一ASM例項配置中時,如果在開啟ASM後設資料進行更新時一個ASM例項發生故障,那麼當前未被任何其他ASM例項掛載的磁碟組在被再次掛載之前不會進行恢復。當一個ASM例項掛載了一個發生故障的磁碟組時,它會讀取磁碟組日誌,並恢復所有短暫更改。這種情景稱為“ASM崩潰恢復”。

因此,在使用ASM叢集例項時,建議讓所有ASM例項總是掛載相同的磁碟集。但是也有一種可能,在本地連線的磁碟上有一個磁碟組,這些本地連線的磁碟只能讓叢集中的一個節點看到,因此就僅在這些磁碟連線的節點上掛載這個磁碟組。

ASM支援標準作業系統備份工具:Oracle Secure備份,也支援第三方備份解決方案,例如儲存陣列快照技術,該技術用來備份ACFS檔案系統。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29119536/viewspace-1173363/,如需轉載,請註明出處,否則將追究法律責任。

相關文章