ASM介紹及管理

簡介ASM描述使用ASM 的好處

• 管理ASM 實例(SQL*plus、asmcmd和Oracle Enterprise Manager 

• 指定ASM 兼容性屬性

• 創建和刪除ASM 磁盤組

• 擴展ASM 磁盤組

• 通過使用各種實用程序檢索ASM 元數據


Automatic Storage Management

Automatic Storage Management (ASM) 將文件系統與卷管理器縱向集成在一起,這是一項專門爲Oracle DB 文件建立的技術。使用ASM 可管理單個對稱多處理(SMP) 計算機,或通過管理集羣的多個節點來支持Oracle Real Application Clusters (RAC)。

ASM 在所有可用的資源中分佈輸入/輸出(I/O) 負載,以在免除手動I/O 優化的同時優化性能。ASM 幫助DBA 管理動態數據庫環境,讓DBA 在不關閉數據庫的情況下,通過增加數據庫的大小來調整存儲分配。

ASM 通過提供數據的冗餘副本來提供容錯能力,ASM 也可以建立在供應商提供的存儲機制上。數據管理是通過爲數據類選擇所需的可靠性和性能特性(而不是逐個文件地進行人爲交互)來實現的。

通過自動處理手動存儲,ASM 功能節省了DBA 的時間,從而提高了管理員管理更多和更大數據庫的能力,而且效率也會更高。

 

ASM:主要功能和優點

• 對文件而不是邏輯捲進行條帶化

• 提供聯機磁盤重新配置和動態重新平衡功能

• 允許調整重新平衡速度

• 以每個文件爲基礎提供冗餘

• 只支持Oracle DB 文件

• 可識別集羣

• 可自動安裝

ASM 將文件劃分爲區(不同於前面討論的數據文件區),而且將每個文件的區均勻分佈在所有磁盤上。ASM 使用索引技術跟蹤每個區的位置。存儲容量發生變化時,ASM 不會重新對所有數據進行條帶化,而是根據添加或刪除的存儲量,按比例移動一定數量的數據,以重新平均分配文件,並在磁盤間保持負載平衡。此操作可在數據庫處於活動狀態時執行。可以提高重新平衡操作的速度,以便更快地完成操作;也可以降低速度,以減少對I/O 子系統的影響。ASM 還提供了鏡像保護,因此不必再購買第三方的邏輯卷管理器。

ASM 的一個特有優勢是可基於文件而不是捲進行鏡像。因此,同一磁盤組可以包含鏡像文件或非鏡像文件的組合。

ASM 支持數據文件、日誌文件、控制文件、歸檔日誌、Recovery Manager (RMAN) 備份集及其它Oracle DB 文件類型。ASM 還支持RAC,這樣就不再需要集羣邏輯卷管理器或集羣文件系統。


ASM:概念

ASM 不會妨礙先前存在的數據庫功能。現有數據庫能夠像平常一樣工作。可以將新文件創建爲ASM 文件,繼續按原有的方式管理現有文件,也可以最終將這些文件移植到ASM。

 圖表描述了使用ASM 的Oracle DB 中的各種存儲組件之間存在的關係。圖表的左側部分和中間部分顯示了在以前版本中存在的關係。

右側部分是ASM 引入的新概念。

數據庫文件可以存儲爲ASM 文件。新層次的頂部是ASM 磁盤組。任何單個ASM 文件只能包含在一個磁盤組中

不過,一個磁盤組中可以包含屬於多個數據庫的多個文件,並且單個數據庫可以使用來自多個磁盤組的存儲空間。

一個磁盤組由多個ASM 磁盤組成,但每個ASM 磁盤只能屬於一個磁盤組。

ASM 文件總是分佈在該磁盤組中的所有ASM 磁盤上。

ASM 磁盤按分配單元進行分區。分配單元(AU) 是ASM 分配的最小連續磁盤空間。

創建磁盤組時,可以將ASM AU 大小設置爲2 的冪(1、2、4、8、16、32 或64),範圍在1 MB 到64 MB 之間。

對於使用大量順序讀取操作的數據倉庫應用程序,較大的AU 大小通常會×××能優勢。

注:圖中的圖形只顯示了一種ASM 文件:數據文件。不過,ASM 也可用於存儲其它類型的數據庫文件。

 

ASM 對於管理員的好處

使用ASM 可以免除:

• I/O 性能優化

• 數據文件移動和重新組織

• 文件名管理

• 邏輯卷管理

• 文件系統管理

• 集羣文件系統管理

• 裸設備管理

 

1、使用ASM 可以顯著減少:

• 邏輯單元號(LUN) 管理

– 邏輯單元數量較少,大小較大

• 數據庫管理員對系統管理員的依賴性

• 手動執行維護任務時可能發生的錯誤

2、使用ASM 可以免除非ASM 存儲環境中許多必不可少的任務。其中包括:

• I/O 性能優化:ASM 採用條帶化和鏡像所有內容的策略,且執行自動重新平衡操作,這意味着不再需要旨在平衡磁盤使用以及消除磁盤熱點的I/O 性能優化。

• 數據文件移動和重新組織:不再需要更改數據文件的位置來滿足性能要求和空間約束條件。

• 文件名管理:不再需要定義和強制執行文件命名策略。

• 邏輯卷、文件系統、集羣文件系統和裸設備管理:不再需要這些存儲元素。

3、使用ASM 可以減少下列重要方面的工作,從而提供更多好處:

• 邏輯單元號(LUN) 管理工作減少,因爲ASM 通常需要的邏輯單元較少且大小較大。

• 數據庫管理員與系統管理員之間通常存在的依賴性將大大減少。例如,添加新數據文件或將磁盤資源從一個磁盤組移至另一磁盤組時不再需要系統管理員干預。

• 手動執行維護任務時可能發生的錯誤將大大減少。例如,使用常規文件系統時,新建數據文件時可能不慎違反了文件命名慣例,導致數據庫的其餘部分不支持該文件。

 

ASM 實例

ASM 實例是ASM 的進程和內存組件的組合。

每次啓動ASM 或數據庫時,都會分配名爲系統全局區(SGA) 的共享內存區域並啓動Oracle ASM 或數據庫後臺進程。

後臺進程和SGA 的組合稱爲Oracle ASM 實例或Oracle DB 實例。

ASM 實例中的SGA 與數據庫實例中的SGA 在內存分配和使用方面是不同的。

 

ASM 實例中的SGA 分爲四個主要區域,如下所示:

• 共享池:用於元數據信息

• 大型池:用於並行操作

• ASM 高速緩存:用於在重新平衡操作期間讀取和寫入塊

• 空閒內存:可用的未分配內存

 

ASM 的建議最低內存量爲256 MB。ASM 實例默認啓用自動內存管理,該功能將動態優化各個SGA 內存組件的大小。

ASM 實例所需的內存量將取決於ASM 管理的磁盤空間量。

ASM 實例的第二部分是後臺進程。ASM 實例可以具有許多後臺進程;並不是所有進程始終都會出現。

 

ASM 功能的後臺進程分爲必需和可選兩種。其中一些進程如下所示:

• ARCn:歸檔進程

• CKPT:檢查點進程

• DBWn:數據庫寫進程

• DIAG:診斷進程

• Jnnn:作業隊列進程

• LGWR:日誌寫進程

• PMON:進程監視器進程

• PSP0:進程衍生進程

• QMNn:隊列監視器進程

• RECO:恢復器進程

• SMON:系統監視器進程

• VKTM:虛擬計時器進程

• MMAN:內存管理器進程

以上進程列表不是完整列表。對於ASM 實例,這些進程並不總是執行它們在數據庫實例中執行的任務。

例如,數據庫實例中的LGWR進程負責將更改向量從SGA 的日誌緩衝區部分複製到磁盤上的聯機重做日誌。

ASM 實例的SGA 中不包含日誌緩衝區,該實例也不使用聯機重做日誌。

ASM 實例中的LGWR進程將事件記錄信息複製到ASM 磁盤組。

如果ASM 是以集羣方式建立的,則將在ASM 實例中運行與集羣管理相關的附加進程。

其中一些進程如下所示:

• LMON:全局入隊服務監視器進程

• LMDn:全局入隊服務守護程序

• LMSn:全局高速緩存服務進程

• LCKn:鎖定進程

 

ASM 組件:ASM 實例 - 主要進程

ASM 實例的主要進程負責與ASM 相關的活動。

 

ASM 實例使用專用的後臺進程完成其大部分功能。

RBAL進程在自動存儲管理實例中協調磁盤組的重新平衡活動。它負責對自動存儲管理磁盤執行全局打開操作。

ARBn進程在自動存儲管理實例中執行實際的重新平衡數據區移動。可能同時存在多個這樣的進程,這些進程名爲ARB0、ARB1等等。

GMON進程維護ASM 磁盤組中的磁盤成員資格。在向脫機磁盤寫入失敗後,MARK進程將ASM 分配單元標記爲過時。

Onnn進程表示客戶機/服務器連接的服務器端。啓動實例時將出現這些進程,之後它們將消失。

它們形成與ASM 實例的一組連接,用於交換消息,僅在需要時纔出現。

PZ9n進程表示一個或多個並行從屬進程,當ASM 同時在多臺計算機上以集羣配置運行時,可以使用該進程提取數據。

 

ASM 實例初始化參數

 

INSTANCE_TYPE = ASM

ASM_POWER_LIMIT = 1

ASM_DISKSTRING = '/dev/sda1','/dev/sdb*'

ASM_DISKGROUPS = DATA2, FRA

ASM_PREFERRED_READ_FAILURE_GROUPS = DATA.FailGroup2

DIAGNOSTIC_DEST = /u01/app/oracle

LARGE_POOL_SIZE = 12M

REMOTE_LOGIN_PASSWORDFILE = EXCLUSIVE

 

ASM 實例由參數文件控制,其方式與常規數據庫實例相同。通常設置的參數包括:

• INSTANCE_TYPE應該設置且必須爲ASM,表示ASM 實例,標識要啓動的實例是ASM,而不是數據庫實例。這是唯一一個必須定義的參數。對於數據庫實例,該參數值設置爲RDBMS。


• ASM_POWER_LIMIT:控制重新平衡操作的速度即指定磁盤rebalance的程度。值的範圍從1 到11,11 表示最快。如果省略,該值默認爲1。指定的級別越高,則rebalance的操作就會越快被完成,當然這也意味着這個時間段內將佔用更多的資源,指定級別較低的話,隨人rebalance操作會耗時更久,但對當前系統的IO及負載影響會更少,這需要根據實際情況衡量。另外,這個參數指定的只是一個默認值,在操作過程中,即可以隨時動態更改,也可以在語句級命令行時指定power,覆蓋該默認值。


修改ASM實例初始化參數文件的命令規則與數據庫初始化參數完全相同,比如說:

SQL> alter system set asm_power_limit=5;

System altered.


• ASM_DISKSTRING是一個與操作系統相關的值,ASM 使用它來限制搜索時考慮的磁盤集即是設置ASM啓動時檢查的磁盤,該選項可以同時指定多個值,並且支持通配符。比如只檢查/DEV/SD*。默認值爲空字符串,爲空的話,表示ASM將查找系統中所有ASM擁有讀寫權限的設備。這在大多數情況下就足夠了。如上所示的約束性更強的值可以減少ASM 執行搜索所需的時間,從而提高磁盤組裝載次數。

• ASM_DISKGROUPS:是ASM 實例啓動時或使用ALTER DISKGROUP ALL MOUNT命令時,ASM 實例要裝載的磁盤組的名稱列表。如果爲空的話,那麼實際就僅僅啓動到nomount狀態。如果使用SPFILE的話,該參數一般不需要手動修改,ASM能夠自動更新該初始化參數中的值。

Oracle Restart 會裝載列爲相關磁盤組的磁盤組,即使這些磁盤組未與ASM_DISKGROUPS參數列在一起也是如此。該參數沒有默認值。

• ASM_PREFERRED_READ_FAILURE_GROUPS指定包含首選讀取磁盤的故障組。對於包含數據的鏡像副本且有一個副本非常接近於服務器的擴展或延伸集羣數據庫,該參數非常有用。

• DIAGNOSTIC_DEST指定自動診斷資料檔案庫(ADR) 主目錄的位置。此目錄下有跟蹤文件、預警日誌、核心文件和意外事件文件。此參數的默認值由ORACLE_BASE的值派生。

• LARGE_POOL_SIZE指定大型池分配堆的大小(以字節表示)。大型池分配堆用於共享服務器系統中的會話內存,供消息緩衝區的並行執行和磁盤I/O 緩衝區的備份進程使用。ASM 實例使用自動內存管理,所以此參數用作大型池不能低於的最小大小。

• REMOTE_LOGIN_PASSWORDFILE指定Oracle 軟件是否檢查口令文件。默認值爲EXCLUSIVE。

上面列出的八個參數是需要爲ASM 實例創建的唯一幾個非默認參數。ASM 實例與數據庫實例不同,因爲並不是所有的數據庫參數都對ASM 實例有效。在全部344 個數據庫實例參數中,大約有74 個參數可以用於ASM 實例。對於上面未列出的其它參數,雖然其默認值對於大多數安裝來說應該已經足夠了,但也可以根據需要進行設置。

注:ASM 實例默認啓用自動內存管理,即使未明確設置MEMORY_TARGET參數也是如此。

該參數是全面ASM 內存管理唯一需要設置的參數。Oracle Corporation 強烈建議對ASM 實例使用自動內存管理。

 

數據庫實例與ASM 之間的交互

文件創建過程可以很好地說明數據庫實例與ASM 之間發生的交互。文件創建過程如下所示:

1. 數據庫請求創建文件。

2. ASM 前臺進程創建一個持續操作目錄(COD) 條目並在磁盤組中爲新的文件分配空間。

3. ASMB 數據庫進程接收新文件的區映射。

4. 現在文件處於打開狀態,數據庫進程直接初始化該文件。

5. 初始化後,數據庫進程請求提交文件創建。這會導致ASM 前臺進程清除COD 條目並將文件標記爲已創建。

6. 文件提交確認會隱式關閉該文件。將來發生I/O 時,數據庫實例需要重新打開該文件。

 

此示例強調了關於ASM 體系結構的重要兩點:

• 數據庫實例和ASM 實例協同工作。數據庫實例必須與ASM 交互,以便將數據庫文件映射到ASM 區。

數據庫實例還接收與ASM 操作(例如磁盤組重新平衡)相關的持續消息流,這類操作可能鎖定或移動ASM 區。

• 數據庫I/O 不通過ASM 實例來傳輸。實際上,數據庫直接根據ASM 文件執行I/O 操作,如步驟4 所示

 

ASM 實例:動態性能視圖

對於任何實例而言,其主要功能之一就是存儲基於內存的元數據表。這些表以前綴X$開頭並且通常不進行記錄。

以前綴V$開頭的一系列動態性能視圖用於以定製形式顯示X$內存表中包含的數據。這類信息以只讀方式提供,僅具有權限的管理員可以訪問。

使用SQL 語言從ASM 檢索這類信息。

ASM 實例託管基於內存的元數據表,這些表通過動態性能視圖呈現。

• ASM 實用程序使用SQL 語言訪問這些表來檢索僅含元數據的信息

• 包含許多專用的ASM 相關視圖,例如:

 

sys@mesdbbackup> select * from dict where table_name like 'V$ASM_%';

TABLE_NAME                     COMMENTS

------------------------------ --------------------------------------------------

V$ASM_ACFSSNAPSHOTS            Synonym for V_$ASM_ACFSSNAPSHOTS

V$ASM_ACFSVOLUMES              Synonym for V_$ASM_ACFSVOLUMES

V$ASM_ACFS_ENCRYPTION_INFO     Synonym for V_$ASM_ACFS_ENCRYPTION_INFO

V$ASM_ACFS_SECURITY_INFO       Synonym for V_$ASM_ACFS_SECURITY_INFO

V$ASM_ALIAS                    Synonym for V_$ASM_ALIAS--記錄文件別名信息

V$ASM_ATTRIBUTE                Synonym for V_$ASM_ATTRIBUTE

V$ASM_CLIENT                   Synonym for V_$ASM_CLIENT--返回當前連接的客戶端實例信息

V$ASM_DISK                     Synonym for V_$ASM_DISK---V$ASM_DISK*相關視圖中記錄的是ASM管理的磁盤及磁盤組信息

V$ASM_DISKGROUP                Synonym for V_$ASM_DISKGROUP

V$ASM_DISKGROUP_STAT           Synonym for V_$ASM_DISKGROUP_STAT

V$ASM_DISK_IOSTAT              Synonym for V_$ASM_DISK_IOSTAT

V$ASM_DISK_STAT                Synonym for V_$ASM_DISK_STAT

V$ASM_FILE                     Synonym for V_$ASM_FILE

V$ASM_FILESYSTEM               Synonym for V_$ASM_FILESYSTEM

V$ASM_OPERATION                Synonym for V_$ASM_OPERATION--記錄當前磁盤的操作信息

V$ASM_TEMPLATE                 Synonym for V_$ASM_TEMPLATE

V$ASM_USER                     Synonym for V_$ASM_USER

V$ASM_USERGROUP                Synonym for V_$ASM_USERGROUP

V$ASM_USERGROUP_MEMBER         Synonym for V_$ASM_USERGROUP_MEMBER

V$ASM_VOLUME                   Synonym for V_$ASM_VOLUME

V$ASM_VOLUME_STAT              Synonym for V_$ASM_VOLUME_STAT

21 rows selected.


如下:

sys@mesdbbackup> select GROUP_NUMBER ,NAME ,STATE,TYPE  from v$asm_diskgroup;

GROUP_NUMBER NAME                           STATE       TYPE

------------ ------------------------------ ----------- ------

           1 DATA                           CONNECTED   NORMAL

           2 RECOVERY                       MOUNTED     NORMAL

sys@mesdbbackup> select GROUP_NUMBER,DISK_NUMBER,NAME,PATH,STATE from v$asm_disk;

GROUP_NUMBER DISK_NUMBER NAME                           PATH            STATE

------------ ----------- ------------------------------ --------------- --------

           2           0 RECOVERY_0000                  /dev/asm-diskd  NORMAL

           2           1 RECOVERY_0001                  /dev/asm-diske  NORMAL

           1           1 DATA_0001                      /dev/asm-diskc  NORMAL

           1           0 DATA_0000                      /dev/asm-diskb  NORMAL

上面列出了包含ASM 相關元數據的最常用動態性能視圖。還有數百個其它動態性能視圖,但是其中大多數視圖都是空的,因爲它們需要數據庫實例裝載數據庫控制文件。ASM 實例不裝載數據庫控制文件。

 

ASM 系統權限

• ASM 實例沒有數據字典,所以連接ASM 只能使用下列系統權限。

ASM 實例沒有數據字典,所以連接ASM 實例只能使用以下三種系統權限之一:SYSASM、SYSDBA或 SYSOPER。

下面的列表講述了這些ASM 系統權限。

• SYSASM:該權限提供對ASM 實例的全部管理權限。

• SYSDBA:該權限授予對ASM 中存儲的數據的訪問權限,在當前版本中還授予SYSASM管理權限。

• SYSOPER:該權限授予使用一組非破壞性ALTER DISKGROUP命令以及啓動和停止ASM 實例的權限。不允許使用CREATE DISKGROUP等其它命令。

 

安裝ASM 時,使用操作系統組對 SYSASM、SYSDBA和 SYSOPER權限進行驗證。

Oracle Universal Installer (OUI) 實用程序將這些組分別稱爲OSASM、OSDBA和 OSOPER組,即OSASM組是授予了 SYSASM權限的操作系統組。

OSASM、OSDBA和 OSOPER組值的建議名稱分別爲 asmadmin、asmdba和 asmoper。

因此,SYSASM是數據庫使用的名稱,OSASM是OUI 實用程序使用的名稱,而 asmadmin是操作系統使用的名稱。它們都是指同一組用戶。

第一次創建ASM 實例時,只定義sys和 asmsnmp這兩個ASM 用戶。

 創建SYS用戶時,會自動爲其分配SYSASM權限。



使用Oracle Enterprise Manager 管理ASM 用戶

Oracle Enterprise Manager 允許你管理通過遠程連接(使用口令文件驗證)訪問ASM 的用戶。這些用戶是專門爲ASM 實例保留的。

僅當你作爲SYSASM用戶連接時才具有此功能。如果你作爲SYSDBA或SYSOPER用戶連接,該功能將隱藏。

• 單擊“Creat(創建)”按鈕時將顯示“Create User(創建用戶)”頁。

• 單擊“Edit(編輯)”按鈕時將顯示“Edit User(編輯用戶)”頁。

• 通過單擊“Delete(刪除)”按鈕可以刪除創建的用戶。

注:要以SYSASM角色登錄ASM,請單擊該頁頂部的“Preferences(首選項)”鏈接,然後單擊“Preferred Credentials(首選×××明)”鏈接。此時你將在目標類型列表中看到ASM。單擊ASM 目標類型旁邊的“Set Credentials(設置×××明)”圖標,定義具有SYSASM權限的帳戶和口令。你需要從Database Control 中註銷並再次登錄,更改纔會生效。

  • 啓動和停止ASM 實例使用SQL*Plus

使用SQL*Plus 啓動和停止ASM 實例與啓動和停止數據庫實例的方式相似。

$ . oraenv

ORACLE_SID = [orcl] ? +ASM

The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid is 

/u01/app/oracle

$ sqlplus / AS SYSASM

SQL*Plus: Release 11.2.0.1.0 - Production on Wed Jul 8 20:46:46 2009

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup

ASM instance started

Total System Global Area 284565504 bytes

Fixed Size 1336028 bytes

Variable Size 258063652 bytes

ASM Cache 25165824 bytes

ASM diskgroups mounted

ASM diskgroups volume enabled

SQL> shutdown abort

 

SQL> select name,state from v$asm_diskgroup;

NAME                           STATE

------------------------------ -----------

DATA                           MOUNTED

RECOVERY                       MOUNTED


SQL> select instance_name,status from v$instance;

INSTANCE_NAME    STATUS

---------------- ------------

+ASM             STARTED

在SQL*Plus 中使用STARTUP命令啓動ASM 實例,其方式與啓動Oracle DB 實例的方式相似。啓動ASM 實例時,請注意以下幾點:

• 要使用SQL*Plus 連接ASM 實例,請將 ORACLE_SID環境變量設置爲ASM SID。單實例數據的默認ASM SID 爲 +ASM,Oracle RAC 節點的默認ASM SID 是+ASMnode_number,其中node_number是節點的編號。oraenv腳本將設置ORACLE_BASE、ORACLE_SID、ORACLE_HOME和 PATH變量。

• 初始化參數文件必須包含下面的條目:

INSTANCE_TYPE = ASM 

該參數指示正在啓動ASM 實例,而不是數據庫實例。

• 運行STARTUP命令時,該命令嘗試裝載初始化參數ASM_DISKGROUPS指定的磁盤組,而不是嘗試裝載和打開某個數據庫。如果尚未爲 ASM_DISKGROUPS輸入值,稍後可以通過ALTER DISKGROUP...MOUNT命令裝載磁盤組。

下面的列表講述了與ASM 相關的 STARTUP命令參數。

• FORCE:在重新啓動ASM 實例之前向它發出SHUTDOWN ABORT。

• MOUNT或 OPEN:裝載ASM_DISKGROUPS初始化參數中指定的磁盤組。這是未指定命令參數時的默認值。

• NOMOUNT:啓動ASM 實例而不裝載任何磁盤組。

• RESTRICT:在受限模式下啓動實例。RESTRICT子句可以與 MOUNT、NOMOUNT和OPEN子句組合使用。


在受限模式下,數據庫實例不能使用磁盤組。即,數據庫無法打開磁盤組中的文件。

另外,如果磁盤組是由某個實例在受限模式下裝載的,則該磁盤組無法由集羣中的任何其它實例裝載。通過受限模式,你可以在磁盤組上執行維護任務,而不會受到客戶機的干擾。在磁盤組處於受限模式下時執行重新平衡操作,就不再需要在集羣環境中的ASM 實例之間傳遞鎖定和取消鎖定區映射消息。這樣可以提高重新平衡操作的整體吞吐量。在維護期間結束時,你必須顯式卸載該磁盤組並在正常模式下重新裝載該磁盤組。


在SQL*Plus 中運行SHUTDOWN命令時將啓動ASM 關閉進程。在運行此命令之前,請確保已設置ORACLE_SID和 ORACLE_HOME環境變量,從而你可以連接到ASM 實例。

Oracle 強烈建議你在嘗試關閉ASM 實例之前關閉使用該ASM 實例的所有數據庫實例。

下面的列表講述了與ASM 相關的 SHUTDOWN命令參數。

• NORMAL:ASM 在卸載所有磁盤組並關閉ASM 實例之前,將等待任何正在進行的SQL 完成執行。在關閉實例之前,ASM 將等待所有當前連接的用戶從該實例斷開。如果任何數據庫實例與ASM 實例連接,則 SHUTDOWN命令將返回錯誤並保持ASM 實例繼續運行。NORMAL是默認關閉模式。

• IMMEDIATE或 TRANSACTIONAL:ASM 在卸載所有磁盤組並關閉ASM 實例之前,將等待任何正在進行的SQL 完成執行。ASM 不等待當前與實例連接的用戶斷開連接。如果任何數據庫實例與ASM 實例連接,則 SHUTDOWN命令將返回錯誤並保持ASM 實例繼續運行。

• ABORT:ASM 實例立即關閉,而不按順序卸載磁盤組。這將導致下次啓動ASM 時進行恢復操作。如果有任何數據庫實例與ASM 實例連接,則該數據庫實例也將中止。

注:有連接的RDBMS 實例時,不應用NORMAL、IMMEDIATE和 TRANSACTIONAL形式的關閉,而將返回下面的錯誤:

SQL> shutdown

ORA-15097: cannot SHUTDOWN ASM instance with connected client (process 14372)

ASM是依賴於CSS守護進程的,因此在啓動ASM實例前要確保css守護進程已經啓動  。  CSS(Cluster Synchronization Services) 守護進程用來維持ASM 及客戶端數據庫實例間的一致性同步,如果是通過dbca建庫的話,那麼CSS守護進程默認即會啓動(跟隨系統reboot)。


啓動和停止ASM 實例使用srvctl

可以使用Server Control 實用程序(srvctl) 啓動和停止ASM 實例。

$ . oraenv

ORACLE_SID = [orcl] ? +ASM

The Oracle base for 

ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid is 

/u01/app/oracle

$ srvctl start asm -o mount

$ srvctl stop asm -f

可以使用Server Control 實用程序(srvctl) 檢查ASM 實例的狀態。

$ srvctl status asm

ASM is running on edrsr25p1

使用srvctl啓動和停止ASM 實例

可以使用Server Control 實用程序(srvctl) 啓動和停止ASM 實例以及由Grid Infrastructure 管理的其它資源。srvctl實用程序位於Grid Infrastructure 的ORACLE_HOME/bin位置下和數據庫安裝的 ORACLE_HOME/bin位置下。管理ASM、

監聽程序或Oracle Restart 時,應該使用位於Grid Infrastructure ORACLE_HOME中的srvctl實用程序。

可以下列方式使用 srvctl實用程序來控制ASM:

• 啓動ASM 實例。

srvctl start asm [-o <start_option>] 

<start_option>是有效的實例啓動選項

(FORCE、MOUNT、OPEN、NOMOUNT或RESTRICT)之一(可選)

• 停止ASM 實例。

srvctl stop asm [-o <stop_option>] -f 

<stop_option>是有效的實例關閉選項

(NORMAL、IMMEDIATE、TRANSACTIONAL或 ABORT)之一(可選),

–f 是強制

• 報告ASM 實例的狀態。

srvctl status asm


啓動和停止ASM 實例使用asmcmd

asmcmd實用程序提供了一個訪問ASM 的命令行界面,無需使用SQL 語言。

$ . oraenv

ORACLE_SID = [orcl] ? +ASM

The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid is 

/u01/app/oracle

$ asmcmd

Connected to an idle instance.

ASMCMD> startup

ASM instance started

Total System Global Area 284565504 bytes

Fixed Size 1336028 bytes

Variable Size 258063652 bytes

ASM Cache 25165824 bytes

ASM diskgroups mounted

ASM diskgroups volume enabled

ASMCMD> shutdown --abort

ASM instance shut down

Connected to an idle instance.

使用asmcmd啓動和停止ASM 實例

用於管理的ASM 元數據位於ASM 實例內包含的動態性能視圖內。通常通過ASM 實用程序使用SQL 語言來訪問這些視圖。要求瞭解SQL 語言增加了掌握ASM 的學習時間,而且SQL 語言培訓通常不在系統管理員和存儲管理員的學習範圍內。asmcmd實用程序提供了一個類似僞Shell 的環境,可以接受UNIX 格式的語法執行常用的ASM 管理任務。

它可以用於管理Oracle ASM 實例、磁盤組、磁盤組的文件訪問控制、磁盤組內的文件和目錄、磁盤組的模板以及卷。

可以使用 asmcmd實用程序啓動和關閉ASM 實例。支持的啓動選項包括:

--nomount(在不裝載磁盤組的情況下啓動ASM 實例)

--restrict(啓動ASM 實例並限制數據庫使用)

--pfile <pfile.ora>(使用定製pfile 啓動ASM 實例)

支持的關閉選項包括:

--immediate(立即執行關閉)

--abort(中止所有現有操作)


磁盤組概覽

磁盤組是一個或多個磁盤的邏輯分組,ASM 將其作爲一個集合來管理。每個磁盤組都包含與自身相關聯的元數據。在概念上,ASM 磁盤組類似於典型存儲區域網絡中的邏輯卷。

從磁盤組內分配文件空間。磁盤組中存儲的文件的內容將在該磁盤組的磁盤中平均分佈或條帶化,以便消除熱點並在各磁盤上提供一致的性能。每個ASM 文件都完全包含在一個磁盤組中。但是,一個磁盤組可以包含屬於多個數據庫的文件,而一個數據庫可以使用來自多個磁盤組的不同文件。

磁盤組的關鍵屬性是它的冗餘設置。有三種可能的磁盤組冗餘設置:

• 外部冗餘,其中ASM 不提供任何鏡像,磁盤都假設爲高度可靠。

• 正常冗餘,其中ASM 默認支持雙向鏡像,從而保證在較不可靠的存儲上實現數據完整性。

• 高冗餘,其中ASM 默認支持三向鏡像,從而更好地保證數據完整性。

ASM 最多支持創建63 個磁盤組;但是,對於大多數安裝,你很少會需要很多磁盤組。

 

ASM磁盤組的管理方式比較多,比如DBCA、EM、SQL*PLUS等都可以操作,還有oracle專門提供了ASMCMD命令行方式,像操作文件系統一樣來操作磁盤組。


ASM 磁盤

ASM 磁盤:

• 是爲ASM 磁盤組預配的存儲設備

• 通過正常O/S 接口來訪問

• 必須可由ASM 所有者讀取和寫入

• 必須可由集羣中的所有節點訪問

• 在不同的節點上可以有不同的O/S 名稱或路徑

• 可以是:

– 整個物理磁盤或物理磁盤的分區

– 存儲陣列中的磁盤或分區

– 邏輯卷(LV) 或邏輯單元(LUN) 

– 網絡連接文件(NFS) 

ASM 磁盤組包含一個或多個ASM 磁盤。

ASM 磁盤必須可由集羣中所有大,能夠提供高效的後續訪問

• 允許的AU 大小:

– 1、2、4、8、16、32 或64 MB 節點的ASM 所有者讀取和寫入。

ASM 磁盤可以是磁盤上的分區,但是Oracle 強烈建議不要與其它應用程序程序共享ASM 使用的物理磁盤。這是因爲在應用ASM 條帶化和鏡像策略時,磁盤組內的各個ASM 磁盤的I/O 性能必須相似且一致,才能獲得最佳性能。在ASM 和其它應用程序之間共享設備會難以確保磁盤性能相似且一致。

集羣中不同節點上的ASM 磁盤的O/S 設備名稱不必相同。ASM 通過讀取ASM 磁盤的標頭來識別磁盤組的成員。

通常,ASM 磁盤是以存儲陣列中的裸LUN 提供給ASM 的。另外,ASM 磁盤還可以是遠程NFS 文件器中的文件。


分配單元

ASM 磁盤劃分爲分配單元(AU):

• 在創建磁盤組時可以配置AU 大小。

• AU 默認大小爲1 MB:

– 足夠小,能夠被數據庫緩存;但又足夠

– 在超大型數據庫(VLDB) 中或使用專門的存儲硬件時,較大的AU 可能非常有用

在ASM 磁盤內,空間劃分爲分配單元(AU)。AU 默認大小是1 MB,該大小足夠小,不會變爲熱點,但又足夠大,能夠提供高效的後續訪問。創建磁盤組時可以設置AU 大小。你無法更改磁盤組的AU 大小。在超大型數據庫(VLDB) 中或使用專門的存儲硬件時,較大的AU 大小可能會很有用。如果經常訪問某個AU,則數據庫內核會將其緩存以便實現更高的訪問效率。


ASM 文件

ASM 文件:

• 是由AU 組成的ASM 區的集合

– 可變大小的區支持大型文件

• 對數據庫內核顯示爲普通文件

• 文件名以“+”開頭

– 例如,

+DATA/orcl/datafile/system.256.689832921

• 可以與可選的文件名別名相關聯

– 例如,+DATA/dbfiles/mydb/system01.dbf

• 在磁盤組中的磁盤中平均分佈

• 根據磁盤組中定義的策略進行鏡像

ASM 呈現一組文件供ASM 的客戶機使用。ASM 文件由一組分配單元組成,這些文件對數據庫內核顯示爲普通文件。

每個ASM 文件都具有唯一的系統生成的名稱。

 

生成格式爲:+diskgroup/dbname/file_type/file_type_tag.file.incarnation ,

• +diskgroup :磁盤組名稱;  

• dbname :數據庫的DB_UNIQUE_NAME參數值;   

• file_type :創建的文件類型,比如CONTROLFILE/DATAFILE/ONLINELOG/ARCHIVELOG/TEMPFILE/BACKUPSET/FLASHBAC

K等等;   

•  file_type_tag  :文件類型的標籤,比如表空間對應的通常爲該表空間名稱;   

•   file.incarnation  :文件序號+incarnation,用來確保文件的唯一; 

 

sys@mesdbbackup> alter tablespace INVENTORY add datafile '+DATA';

Tablespace altered.

ASMCMD> pwd

+data/test0924/datafile

ASMCMD> ls

INVENTORY.266.829658135

 

示例顯示了一個完全限定的ASM 文件名的示例。完全限定的ASM 文件名錶示一個層次結構,其開頭是加號與磁盤組名稱的組合。磁盤組名稱後是數據庫名稱和文件類型。最後的元素由標記名稱、文件編號和原型編號組成。可以創建別名(可選),爲管理員提供一種更用戶友好的方式來引用ASM 文件。

文件使用條帶化和鏡像所有內容(SAME) 策略在磁盤組的各ASM 磁盤中平均分佈。

ASM 本身支持大多數與數據庫相關的文件類型,例如數據文件、日誌文件、控制文件、

RMAN 備份及其它文件。在Oracle Database 11g發行版2 之前,ASM 僅支持與Oracle DB 相關的文件,無法用於存儲和管理ASCII 跟蹤文件和預警日誌、Oracle 二進制文件、

Oracle 集羣註冊表(OCR) 和集羣表決磁盤。Oracle Database 11g發行版2 提供在ASM 上運行通用文件系統的方式,從而消除了上述限制。


區映射

ASM 通過稱爲區映射的元數據跟蹤文件的分佈。區映射是一個表,將文件中的數據區映射到磁盤上的分配單元。

文件區與分配單元之間的關係如下所示。區包含:

• 一個AU 用於前20,000 個區(0-19999) 

•4 個AU 用於接下來的20,000 個區(20000-39999) 

• 16 個AU 用於40,000 以上的區

將可變大小的區與大型分配單元結合使用,可滿足非常大的ASM 文件的需要。


條帶化粒度

ASM 用於負載平衡的條帶化策略與用於等待時間的條帶化策略不同:

• 對於負載平衡,粗粒度條帶化將多個分配單元連接起來使用。

– 例如:

在ASM 中,條帶化主要具有兩種用途:

• 在磁盤組的所有磁盤中執行I/O 負載平衡。

• 改善I/O 等待時間。

粗粒度條帶化在磁盤組的各磁盤中分佈分配單元。這用於爲磁盤組提供負載平衡。分配文件時,ASM 會在所有磁盤中平均分佈分配單元。有時分佈無法非常平均,但是隨着時間的流逝,會變得幾乎相等。上圖顯示了一個具有五個分配單元的文件,這些分配單元在條帶化之後,分佈在一個外部冗餘磁盤組的五個磁盤中,該磁盤組共包含八個磁盤。

對於前20,000 個區,區大小等於AU 大小。從第20,001 個區到第40,000 個區,該區組總是一次分配8 個區,區大小等於4 倍AU 大小。如果AU 大小爲1 MB,這意味着ASM 文件將一次增大64 MB (8 * 4 * 1 MB)。如果文件採用粗粒度條帶化,則它將在8 個區中進行條帶化,條帶大小爲1 AU。條帶化始終在AU 級別進行,而不是在區級別。因此,無論文件多大,粗粒度文件的每個AU 都與該文件的前一個AU 所在的磁盤不同。在第40,000 個區之後,仍舊是每次分配8 個區,但區大小等於16 倍AU 大小。


細粒度條帶化

細粒度條帶化在分配單元組中放置128 KB 條帶單元來改善等待時間。

• 磁盤組具有8 個磁盤和外部冗餘

• 使用默認的AU 大小:1 MB 

• 第一個1 MB 區在8 個AU 中以128 KB 條帶形式寫入

細粒度條帶化將數據區拆分爲128 KB 的塊,然後在許多磁盤中分佈每個區的負載,從而改善特定類型文件的等待時間。默認情況下,細粒度條帶化用於控制文件和聯機重做日誌文件。

圖顯示了細粒度條帶化的工作原理。在此示例中,新文件的第一個1 MB 區最終佔用8 個不同分配單元中的第一個128 KB 塊,這8 個分配單元分佈在磁盤組的八個磁盤中。因此,1 MB 的讀取或寫入分佈在八個磁盤(而不是一個磁盤)中。

  • 細粒度條帶化

示例:

• 磁盤組具有8 個磁盤和外部冗餘

• 使用默認的AU 大小:1 MB 

• 下一個1 MB 區以128 KB 條帶的形式在相同的8 個分配單元中寫入,直到這些分配單元寫滿

繼續前面的示例,空間中的下一個1 MB 區將分佈在相同分配單元組的每個單元的第二個128 KB 塊中。這種模式將繼續,直到第一組分配單元寫滿,然後分配另一組。


ASM 故障組

• 共享需要容錯的一項公用資源的一組磁盤

• 鏡像的區副本存儲在不同的故障組中

• 存儲硬件指示故障組邊界

– 分離磁盤控制器的示例:

在磁盤組內,可以將一些磁盤歸到故障組中。故障組是存儲或數據庫管理員指定ASM 鏡像操作的硬件邊界的一種方式。

例如,可以將連接到一個磁盤控制器的所有磁盤指定爲某個公用故障組的磁盤。這樣,將在連接到不同控制器的磁盤上鏡像文件區。另外,管理員可以配置ASM 來選擇默認故障組策略。默認策略是每個磁盤位於自己的故障組中。

你可以使用所需的任何標準將磁盤歸到故障組中。故障組可以用於避免單個磁盤、磁盤控制器、I/O 網絡組件以及甚至整個存儲系統的故障。通常,管理員將分析其存儲環境並對故障組進行組織來消除特定故障情況。

由數據庫或存儲管理員確定其安裝的最佳故障組配置。


條帶化和鏡像示例

一個共含八個磁盤的正常冗餘磁盤組,其中的磁盤分佈在兩個故障組中。

條帶化和鏡像示例

本頁中的圖顯示了一個正常冗餘磁盤組中條帶化和鏡像的示例。紅塊表示一個包含五個區的文件,這些區在條帶化後,分佈在磁盤組(共八個磁盤)的五個磁盤中。藍塊表示文件區的鏡像副本。請注意,無論區在各個磁盤和故障組中如何分佈,每個區在一個故障組中僅有一個副本。

分配文件時,主區的分配用於保證性能,輔助副本的分配用於保證完整性。因此,默認情況下,所有數據庫讀取都針對主區進行。

 


ASM如何處理磁盤故障

ASM中的磁盤組可分成兩類,普通磁盤組和failure磁盤組,後者又與ASM的榮譽方式有所關聯。

普通磁盤組就是標準的存儲單元,ASM可以向其可訪問的磁盤組中讀寫數據,failure磁盤組是爲了提高數據的高可用性。

ASM中的磁盤榮譽策略分成三類,外部冗餘,標準冗餘和高度冗餘,其中外部冗餘與failure磁盤組無關,如果設置了標準冗餘和高度冗餘,那麼該磁盤組就必須擁有failure磁盤組。

標準冗餘,ASM要求改磁盤組至少要擁有兩個failure磁盤組,即提供雙倍鏡像保護,對於同一份數據(ASM中鏡像單位不是磁盤,也不是塊,而是一種AU的單位,該單位大小默認是1M)將有主從兩份鏡像,並且ASM通過算法來自動確保主、從鏡像不會存在於同一份failure 磁盤組,這樣就保障了就算整個failure 磁盤組都損壞,數據也不會丟失。至於高度冗餘(High Redundancy)就更安全了,它至少需要三個failure 磁盤組,也就是一份AU有一主多從的鏡像,理論上將更加安全。

如果磁盤發生損壞,那麼損壞的磁盤默認自動offlice並被drop掉,不過該磁盤所在的磁盤組仍將保持MOUNT狀態,如果該盤有鏡像的話,那麼應用不會有影響,鏡像盤將自動實現接管--只要不是所有failure磁盤組都損壞掉,否則的話,該磁盤組將自動DISMOUNT。


故障示例

如果磁盤H 發生故障,則將根據正常鏡像在正常磁盤上重新創建該磁盤包含的區。

此處擴展了上一頁中的示例,假設磁盤H 發生故障,無法再訪問其包含的數據。該故障要求恢復故障磁盤上的所有區並將這些區複製到另一磁盤。

區3 和5 的正常副本將複製到同一故障組中另一磁盤的空閒區域。在此示例中,區5 將從磁盤B 複製到磁盤F,區3 將從磁盤C 複製到磁盤G。

磁盤發生故障後的最後一步是ASM 從磁盤組中刪除故障磁盤。

刪除磁盤基本上會觸發相同的過程;不過,在刪除磁盤時,要被刪除的磁盤上的區首先會複製到可用替代位置。

 

ASM 擴展性 

 最多支持63個磁盤組;  

最多支持10000個磁盤;  

最大支持4pb/磁盤;  

最大支持40 exabyte/ASM存儲;   

最大支持1百W個文件/磁盤組;   

外部冗餘時單個文件最大35tb,標準冗餘時單個文件最大5.8tb,高冗餘度時單個文件最大3.9tb。


管理磁盤組

ASM 實例的主要目的是管理磁盤組和保護其數據。ASM 實例還將文件分佈傳送到數據庫實例。這樣,數據庫實例就可以直接訪問磁盤組中存儲的文件。

有多個磁盤組管理命令。執行這些命令都需要SYSASM或SYSDBA權限,且必須從ASM 實例發出。

你可以添加新磁盤組。還可以修改現有磁盤組來添加新磁盤、刪除現有磁盤以及執行許多其它操作。可以刪除現有磁盤組。


創建和刪除磁盤組使用SQL*Plus

CREATE DISKGROUP語句,該語句的語法如下: 

CREATE DISKGROUP diskgroup_name 

  [ { HIGH | NORMAL | EXTERNAL } REDUNDANCY ] 

  [ FAILGROUP failgroup_name ] 

  DISK [ NAME disk_name ] [ SIZE size_clause ] [ FORCE | NOFORCE ] ...; 


首先要指定的就是磁盤組名稱(diskgroup_name);  

指定冗餘度,有三個選擇:HIGH(高度冗餘>三路)、NORMAL(標準冗餘--雙路)和XTERNAL(外

部存儲冗餘);   

選擇是否指定FAILGROUP(如果選擇非external則必須指定);   

指定該磁盤組中的成員(對應的LUN),在指定成員時一般ASM能夠自動檢測出磁盤的容量,不過

如果DBA基於某些方面的考慮,希望限制ASM使用的空間的話,也可以在指定成員過程中,順

便指定大小(只要指定的大小不超出磁盤實際容量),在添加成員時,ASM也會自動檢查磁盤頭以

確定該磁盤是否被加入到其它的磁盤組中,當發現該盤已加入其它磁盤組的話,你可以通過

FORCE選項來強制修改該盤所屬磁盤組。 


$ . oraenv

ORACLE_SID = [orcl] ? +ASM

The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid is 

/u01/app/oracle

$ sqlplus / AS SYSASM

SQL*Plus: Release 11.2.0.1.0 - Production on Wed Jul 8 20:46:46 2009

Copyright (c) 1982, 2009, Oracle. All rights reserved.

..

SQL> CREATE DISKGROUP dgroupA NORMAL REDUNDANCY 

FAILGROUP controller1 DISK 

'/devices/A1' NAME diskA1 SIZE 120G FORCE, 

'/devices/A2', 

FAILGROUP controller2 DISK 

'/devices/B1', 

'/devices/B2'

SQL> DROP DISKGROUP dgroupA INCLUDING CONTENTS;


創建和刪除磁盤組

假設ASM 磁盤搜索在/dev目錄中找到了下列磁盤:A1、A2、B1和B2。另外,假設磁盤A1和A2的磁盤控制器不同於B1和B2的磁盤控制器。第一個示例說明如何配置名爲DGROUPA的磁盤組,其包含兩個故障組:CONTROLLER1和ONTROLLER2。該示例還對該磁盤組使用默認冗餘屬性NORMAL REDUNDANCY。你還可以提供磁盤名稱和磁盤的大小(可選)。如果你不提供此信息,ASM 會創建默認名稱並嘗試確定磁盤的大小。如果無法確定大小,將返回錯誤。FORCE指示指定的磁盤應該添加到指定的磁盤組,即使該磁盤已經格式化爲某個ASM 磁盤組的成員。對未格式化爲某個ASM 磁盤組的成員的磁盤使用FORCE選項將返回錯誤。

第二個語句所示,你可以刪除磁盤組及其所有文件。爲了避免意外刪除,如果磁盤組除內部ASM 元數據外還包含任何其它文件,則必須指定INCLUDING CONTENTS選項。必須先裝載磁盤組才能將其刪除。在確保未打開任何磁盤組文件後,將從磁盤組中刪除該組及其所有驅動器。然後,將覆蓋每個磁盤的標頭來清除ASM 格式信息。


向磁盤組添加磁盤

ALTER DISKGROUP dgroupA ADD DISK

'/dev/sde1' NAME A5,

'/dev/sdf1' NAME A6,

'/dev/sdg1' NAME A7,

'/dev/sdh1' NAME A8;

ALTER DISKGROUP dgroupA ADD DISK '/devices/A*';


磁盤格式化---------->磁盤組重新平衡

向磁盤組添加磁盤

此示例顯示如何向磁盤組添加磁盤。可以執行ALTER DISKGROUP ADD DISK命令來添加磁盤。第一個語句向DGROUPA磁盤組添加四個新磁盤。

第二個語句說明搜索字符串的相互影響。請考慮下列配置:

/devices/A1是磁盤組DGROUPA的成員。

/devices/A2是磁盤組DGROUPA的成員。

/devices/A3是磁盤組DGROUPA的成員。

/devices/A4是候選磁盤。

第二個命令將A4添加到DGROUPA磁盤組。該命令將忽略其它磁盤,即使它們與搜索字符串相匹配,因爲它們已經是DGROUPA磁盤組的一部分。上圖顯示當你向磁盤組添加磁盤時,ASM 實例會確保該磁盤是可尋址且可用的。然後會對該磁盤進行格式化和重新平衡。重新平衡過程比較耗費時間,因爲該過程會將所有文件的區移至新磁盤。

注:重新平衡不會阻止任何數據庫操作。重新平衡過程主要影響系統的I/O 負載。重新平衡的能力越高,對系統施加的I/O 負載越多,可用於數據庫I/O 的I/O 帶寬也就越少。

 


當發生添加/刪除磁盤組中磁盤的操作時,ASM能夠自動平衡。對於普通的刪除操作(無force選項),被刪除的磁盤在該上數據被有效處理前並不會立刻釋放,同樣,新增磁盤時,在重分配工作完成前,該盤也不會承擔I/O負載的工作。要監控後臺進行的操作,可以通過V$ASM_OPERATION視圖查詢。

如果希望ALTER DISKGROUP語句完成所有工作才返回的話,可以在執行時附加REBALANCE WAIT子句,這樣該語句就會等待自動平衡的操作,直接所有操作完成才返回結果,當然在等待期間,如果你不想等待,使用CTRL+C終端既可以獲得控制權,而平衡的操作不受影響,會在後臺繼續進行。


其它ALTER命令

從dgroupA刪除磁盤:

ALTER DISKGROUP dgroupADROP DISK A5;

在單個命令中添加和刪除磁盤:

ALTER DISKGROUP dgroupA 

DROP DISKA6

ADD FAILGROUPcontroller3 DISK '/dev/sdi1'NAME A9;


取消磁盤刪除操作

ALTER DISKGROUP dgroupA UNDROP DISKS;

其它ALTER命令

第一個語句顯示如何從DGROUPA磁盤組中刪除一個磁盤。

第二個語句顯示如何在單個命令中添加和刪除磁盤。這種方式的一大優點就是在該命令完成後纔開始重新平衡操作。

第三個語句顯示如何取消磁盤刪除操作。


當刪除磁盤時,ASM發現平衡不過來時(比如剩下的磁盤空間不足以存放所有數據時),刪除操作也會失敗,這種情況要麼先刪數據,要麼取消刪除的操作。

只要刪除操作還沒有真正完成,就可以取消刪除磁盤的操作,

UNDROP命令僅對磁盤的暫掛刪除操作起作用;它對於已經完成的刪除操作沒有影響。

如果需要,可以使用下面的語句對DGROUPB磁盤組進行重新平衡:

ALTER DISKGROUP dgroupB REBALANCE POWER 5; 

此命令通常是不需要的,因爲在添加、刪除磁盤或調整磁盤大小時會自動執行該操作。

但是如果你希望使用POWER子句覆蓋由初始化參數ASM_POWER_LIMIT定義的默認速度,此命令非常有用。通過重新輸入具有新級別的命令,可以更改正在進行的重新平衡操作的能力級別。能力級別爲零會導致重新平衡操作中斷,直到隱式或顯式重新調用該命令。

下面的語句可以卸載DGROUPA:

ALTER DISKGROUP dgroupA DISMOUNT; 

通過MOUNT和DISMOUNT選項,你可以使一個或多個磁盤組對數據庫實例可用或不可用。

在支持單實例的集羣ASM 環境中,當該實例故障轉移到另一節點時,手動卸載和裝載功能非常有用。


不管你是加還是山磁盤組中的磁盤,ASM都能自動進行平衡,確保該磁盤組中的每塊盤存儲的數據量平均,以實現最優化的IO性能,並且這一過程不會對數據造成影響。


手動平衡磁盤組

一般情況下ASM都會自動對其下的磁盤組進行平衡,不過ORACLE也提供了手動平衡磁盤組的方式,通過alter diskgroup ... power 語句。前面提到過磁盤組的平衡度有1到11多個級別,默認是按照ASM_POWER_LIMIT初始化參數中設置的值,手動平衡的話,設置的平衡度可以與初始化參數中並不相同,例如,設置磁盤組平衡度爲6,語句如下:


SQL> alter diskgroup DATA rebalance power 6;

Diskgroup altered.

  手動平衡磁盤組可能涉及大量的工作,該操作可能費時較久,因此DBA在執行該語句時,一定要注意該操作對IO 性能的影響。 

 另外再次強調,上述語句將很快返回diskgroup altered的提示,但這並不表示操作真正完成,它只是反饋語句提交而已,查看磁盤後臺的操作,可以通過v$asm_operator視圖,或者在語句執行時增加wait子句,這樣ASM將會等到操作真正完成時,才返回提示信息。 

 


管理目錄


ASM 磁盤組中文件和目錄的管理自動化水平相當高,應該說基本上完全不需要DBA參與,當然,也是可以手動修改的。 

  創建新目錄: 

SQL> alter diskgroup asmdisk2 add directory '+ASMDISK2/JSS1'; 

Diskgroup altered. 

  修改目錄名: 

SQL> alter diskgroup asmdisk2 rename directory '+ASMDISK2/JSS1'   to '+ASMDISK2/JSS2'; 

Diskgroup altered. 

  刪除目錄名: 

SQL> alter diskgroup asmdisk2 drop directory '+ASMDISK2/JSS2'; 

Diskgroup altered. 

  實際上,ASM中目錄和文件的管理,也可以通過ASMCMD命令行方式進行,該命令行進入之後,是一個類似文件系統的管理界面,ORACLE提供了一些最基礎的,如cd、ls、mkdir、rm等等幾個有限的操作命令。


管理別名


當系統自動產生的名稱太過複雜不怎麼好記,DBA可以通過別名,爲它創建一個簡單化的名稱,而又不會對其現有名稱造成任何影響。ASM中創建別名是通過alter diskgroup的alias子句實現,支持增加/修改/刪除等多項操作。V$ASM_ALIAS視圖中可以查詢到當前實例中創建的別名。


  例如,增加別名: 

SQL> alter diskgroup asmdisk2 add alias '+ASMDISK2/repdb/datafile/temp01.dbf' for '+ASMDISK2/repdb/TEMPFILE/TEMP.267.714576831'; 

Diskgroup altered. 

  修改別名: 

SQL> alter diskgroup asmdisk2 rename alias '+ASMDISK2/repdb/datafile/temp01.dbf' to '+ASMDISK2/repdb/TEMPFILE/temp01.dbf'; 

Diskgroup altered. 

  刪除別名: 

SQL> alter diskgroup asmdisk2 drop alias '+ASMDISK2/repdb/TEMPFILE/temp01.dbf'; 

Diskgroup altered. 

 不管是添加/刪除或是修改別名,對原有文件路徑均不會有影響。 


使用Oracle Enterprise Manager 管理ASM

Oracle Enterprise Manager (EM) 是Oracle 的管理工具系列,管理對象涵蓋數據庫、中間件、應用程序、網絡、IT 基礎結構及其它。Oracle Enterprise Manager 是一個基於瀏覽器的環境,爲常見ASM 管理任務提供了一個點擊式替代方案。


ASM 磁盤組兼容性

• 每個磁盤組的兼容性都可以分別控制:

– ASM 兼容性控制磁盤上ASM 元數據結構。

– RDBMS 兼容性控制最低使用者客戶機級別。

– ADVM 兼容性確定磁盤組是否可以包含Oracle ASM 卷。

• 設置磁盤組兼容性的操作是不可逆的。

適用於ASM 磁盤組的兼容性有三種:涉及描述磁盤組的持久性數據結構,客戶機(磁盤組的使用者)的功能,以及能否在磁盤組中包含卷。這些屬性分別稱爲“ASM 兼容性”、“RDBMS 兼容性”和“ADVM 兼容性”。每個磁盤組的兼容性都可以獨立控制。這是支持包含Oracle Database 10g和Oracle Database 11g磁盤組的異構環境所必需的。

這三種兼容性設置是每個ASM 磁盤組的屬性:

•RDBMS 兼容性是指RDBMS 實例的最低兼容版本,此設置將允許該實例裝載磁盤組。

該兼容性確定了ASM 實例與數據庫(RDBMS) 實例間交換消息的格式。ASM 實例可以支持以不同兼容性設置運行的不同RDBMS 客戶機。每個實例的數據庫兼容版本設置必須高於或等於該數據庫使用的所有磁盤組的RDBMS 兼容性。數據庫實例與ASM 實例通常在不同的Oracle 主目錄中運行。這意味着數據庫實例可以運行與ASM 實例不同的軟件版本。數據庫實例第一次連接到ASM 實例時,系統會協定這兩個實例都支持的最高版本。

數據庫的兼容性參數設置、數據庫的軟件版本以及磁盤組的RDBMS 兼容性設置確定了數據庫實例能否裝載給定的磁盤組。

•ASM 兼容性是指控制磁盤上ASM 元數據的數據結構格式的持久性兼容性設置。

磁盤組的ASM 兼容性級別必須始終高於或等於同一磁盤組的RDBMS 兼容性級別。

ASM 兼容性只與ASM 元數據的格式相關。文件內容的格式取決於數據庫實例。例如,可以將某個磁盤組的ASM 兼容性設置爲11.0,而將該磁盤組的RDBMS 兼容性設置爲10.1。這意味着該磁盤組只能由軟件版本爲11.0 或更高的ASM 軟件管理,而軟件版本高於或等於10.1 的任何數據庫客戶機都可以使用該磁盤組。


• ADVM 兼容性屬性確定磁盤組能否包含Oracle ASM 卷。該值必須設置爲11.2 或更高。設置該屬性前,必須確保COMPATIBLE.ASM的值爲11.2 或更高。此外,還必須加載ADVM 卷驅動程序。

僅當持久性磁盤結構或消息傳送協議發生更改時,才需要提高磁盤組的兼容性。但是,提高磁盤組兼容性是一個不可逆的操作。可以使用CREATE DISKGROUP命令或ALTER DISKGROUP命令來設置磁盤組兼容性。

注:除了磁盤組兼容性,兼容參數(數據庫兼容版本)確定了啓用的功能;該參數適用於數據庫或ASM 實例,具體取決於instance_type參數。例如,將該參數設置爲10.1 將禁止使用Oracle Database 11g中引入的任何新功能(磁盤聯機/脫機、可變區等)。


ASM 磁盤組屬性

CREATE DISKGROUP DATA2 NORMAL REDUNDANCY 

DISK '/dev/sda1','/dev/sdb1'

ATTRIBUTE 'compatible.asm'='11.2';

每當創建或更改ASM 磁盤組時,都可以使用CREATE DISKGROUP和ALTER DISKGROUP命令新增的ATTRIBUTE子句更改其屬性。圖中的表簡要概述了這些屬性:

•ASM 允許使用在創建磁盤組時指定的不同分配單元(AU) 大小。AU 大小可以是1、2、4、8、16、32 或64 MB。

•RDBMS 兼容性:有關詳細信息,請參閱“ASM 磁盤組兼容性”一節。

•ASM 兼容性:有關詳細信息,請參閱“ASM 磁盤組兼容性”一節。

• 可以用分鐘(M)、小時(H) 或天(D) 爲單位指定DISK_REPAIR_TIME。如果省略單位,則使用默認值H。如果省略此屬性,則使用默認值3.6H。可以使用ALTER DISKGROUP ... DISK OFFLINE語句覆蓋此屬性。

• 還可以爲指定的模板指定冗餘屬性。

• 還可以爲指定的模板指定條帶化屬性。

注:對於每個已定義的磁盤組,可以通過V$ASM_ATTRIBUTE固定視圖查看所有已定義的屬性。


使用Oracle Enterprise Manager 編輯磁盤組屬性

Oracle Enterprise Manager 提供了一種簡便方式用於存儲和檢索與磁盤組相關的環境設置。

在“Create Disk Group(創建磁盤組)”頁和“Edit Advanced Attributes for Disk Group(編輯磁盤組的高級屬性)”頁中都可以設置兼容屬性。僅“Edit Advanced Attributes for Disk Group(編輯磁盤組的高級屬性)”頁中添加了disk_repair_time屬性。

注:對於低於11g的ASM 實例,默認ASM 兼容性和客戶機兼容性都爲10.1。對於11gASM 實例,默認ASM 兼容性爲11.2,數據庫兼容性爲10.1。


檢索ASM 元數據

• 使用SQL*Plus:

SQL> SELECT f.type, f.redundancy, f.striped, f.modification_date, 

a.system_created, a.name FROM v$asm_alias a, v$asm_file f WHERE 

a.file_number = f.file_number and a.group_number = f.group_number 

and type='DATAFILE';

TYPE REDUND STRIPE MODIFICAT S NAME

-------- ------ ------ --------- - ---------------------DATAFILE MIRROR COARSE 08-JUL-09 Y SYSTEM.256.689832921

DATAFILE MIRROR COARSE 08-JUL-09 Y SYSAUX.257.689832923

..

• 使用asmcmd:

ASMCMD> ls -l +DATA/orcl/datafile

Type Redund Striped Time Sys Name

DATAFILE MIRROR COARSE JUL 08 21:00:00 Y SYSTEM.256.689832921

DATAFILE MIRROR COARSE JUL 08 21:00:00 Y SYSAUX.257.689832923

..

檢索ASM 元數據

ASM 實例託管基於內存的元數據表,這些表通過動態性能視圖呈現。可以使用SQL*Plus、asmcmd或Oracle Enterprise Manager 查詢該數據。

使用SQL*Plus 需要具有SQL 語言知識,可能要聯接多個動態性能視圖來檢索相關信息。

第一個示例顯示v$asm_file和v$asm_alias之間建立了一個聯接,以便顯示關於數據庫的數據文件的元數據。如果針對ASM 實例執行此查詢,根據語法的定義方式,將檢索多個數據庫的數據文件。需要使用附加過濾條件才能將輸出限定爲單個數據庫。

asmcmd實用程序的優點在於,不需要SQL 語言知識就能連接到ASM 實例並檢索元數據。

它使用與UNIX 表示法類似的樣式。此幻燈片上的第二個示例使用asmcmd命令來檢索SQL 示例中的元數據。此示例的另一個優點是輸出限制爲單個數據庫的數據文件,因爲列出的路徑包含數據庫名稱orcl和文件類型datafile。因此,對於asmcmd中顯示的目錄,需要使用WHERE子句設置SQL 過濾條件才能給出相同結果。

注:在Oracle Enterprise Manager Database Control 中,只需在各個ASM Web 頁中瀏覽就能查看大多數ASM 元數據。


ASM 快速鏡像重新同步概覽

ASM 快速鏡像重新同步可以顯著減少重新同步臨時故障磁盤所需的時間。如果某個磁盤因臨時故障而脫機,ASM 將跟蹤在中斷期間發生修改的區。臨時故障被修復後,ASM 可以快速地僅重新同步在中斷期間受影響的ASM 磁盤區。

此功能假設受影響的ASM 磁盤的內容未被破壞或修改。

某個ASM 磁盤路徑出現故障時,如果您已設置了相應磁盤組的DISK_REPAIR_TIME屬性,則ASM 磁盤會脫機,但不會被刪除。此屬性的設置確定了ASM 可容忍的磁盤中斷持續時間;如果中斷在此時間範圍內,則修復完成後仍可重新同步。注:跟蹤機制對每個修改的分配單元使用1 位。這樣可確保跟蹤機制非常高效。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章