[轉]Oracle DB 管理ASM實例

• 描述使用ASM 的好處
• 管理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六、32 或64),範圍在1 MB 到64 MB 之間。
對於使用大量順序讀取操做的數據倉庫應用程序,較大的AU 大小一般會提供性能優點。
 
 
注:圖中的圖形只顯示了一種ASM 文件:數據文件。不過,ASM 也可用於存儲其它類型的數據庫文件。
 
  • ASM 對於管理員的好處
使用ASM 能夠免除:
• I/O 性能優化
• 數據文件移動和從新組織
• 文件名管理
• 邏輯卷管理
• 文件系統管理
• 集羣文件系統管理
• 裸設備管理
 
使用ASM 能夠顯著減小:
• 邏輯單元號(LUN) 管理
– 邏輯單元數量較少,大小較大
• 數據庫管理員對系統管理員的依賴性
• 手動執行維護任務時可能發生的錯誤
 
使用ASM 能夠免除非ASM 存儲環境中許多必不可少的任務。其中包括:
• I/O 性能優化:ASM 採用條帶化和鏡像全部內容的策略,且執行自動從新平衡操做,這意味着再也不須要旨在平衡磁盤使用以及消除磁盤熱點的I/O 性能優化。
• 數據文件移動和從新組織:再也不須要更改數據文件的位置來知足性能要求和空間約束條件。
• 文件名管理:再也不須要定義和強制執行文件命名策略。
• 邏輯卷、文件系統、集羣文件系統和裸設備管理:再也不須要這些存儲元素。
 
使用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@TEST0924> 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@TEST0924> select GROUP_NUMBER ,NAME ,STATE,TYPE  from v$asm_diskgroup;
 
GROUP_NUMBER NAME                           STATE       TYPE
------------ ------------------------------ ----------- ------
           1 DATA                           CONNECTED   NORMAL
           2 RECOVERY                       MOUNTED     NORMAL
 
sys@TEST0924> 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 磁盤必須可由集羣中全部節點的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:
– 足夠小,可以被數據庫緩存;但又足夠大,可以提供 高效的後續訪問
• 容許的AU 大小:
– 一、二、四、八、1六、32 或64 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@TEST0924> 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目錄中找到了下列磁盤:A一、A二、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' 
  2  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 '+ASMDI SK2/repdb/TEMPFILE/TEMP.267.714576831'; 
Diskgroup altered. 
  修改別名: 
SQL> alter diskgroup asmdisk2 rename alias '+ASMDISK2/repdb/datafile/temp01.dbf' to '+AS MDISK2/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六、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。對於11g ASM 實例,默認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 位。這樣可確保跟蹤機制很是高效。
  • 小結
 
• 使用SQL*plus、asmcmd和Oracle Enterprise  Manager 管理ASM 實例
• 建立和刪除ASM 磁盤組
• 指定ASM 兼容性屬性
• 擴展ASM 磁盤組
• 比較檢索ASM 元數據的方

 

http://blog.csdn.net/rlhua/article/details/12972983css

相關文章
相關標籤/搜索