• SYSOPER:該權限授予使用一組非破壞性ALTER DISKGROUP命令以及啓動和中止ASM 實例的權限。不容許使用CREATE DISKGROUP等其它命令。
Oracle Universal Installer (OUI) 實用程序將這些組分別稱爲OSASM、OSDBA和 OSOPER組,即OSASM組是授予了 SYSASM權限的操做系統組。
所以,SYSASM是數據庫使用的名稱,OSASM是OUI 實用程序使用的名稱,而 asmadmin是操做系統使用的名稱。它們都是指同一組用戶。
- 使用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 中註銷並再次登陸,更改才
會生效。
使用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)。
可使用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
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 磁盤組預配的存儲設備
• 經過正常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 文件:
• 是由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 來選擇默認
故障組策略。默認策略是每一個磁盤位於本身的故障組中。
你可使用所需的任何標準將磁盤歸到故障組中。故障組能夠用於避免單個磁盤、磁盤
控制器、I/O 網絡組件以及甚至整個存儲系統的故障。一般,管理員將分析其存儲環境
並對故障組進行組織來消除特定故障狀況。
由數據庫或存儲管理員肯定其安裝的最佳故障組配置。
一個共含八個磁盤的正常冗餘磁盤組,其中的磁盤分佈在
兩個故障組中。
條帶化和鏡像示例
本頁中的圖顯示了一個正常冗餘磁盤組中條帶化和鏡像的示例。紅塊表示一個包含五個區
的文件,這些區在條帶化後,分佈在磁盤組(共八個磁盤)的五個磁盤中。藍塊表示文件
區的鏡像副本。請注意,不管區在各個磁盤和故障組中如何分佈,每一個區在一個故障組中
僅有一個副本。
分配文件時,主區的分配用於保證性能,輔助副本的分配用於保證完整性。所以,默認情
況下,全部數據庫讀取都針對主區進行。
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 從磁盤組中刪除故障磁盤。
刪除磁盤基本上會觸發相同的過程;不過,在刪除磁盤時,要被刪除的磁盤上的區首先會
複製到可用替代位置。
• 最多支持63個磁盤組;
•最多支持10000個磁盤;
•最大支持4pb/磁盤;
•最大支持40 exabyte/ASM存儲;
•最大支持1百W個文件/磁盤組;
•外部冗餘時單個文件最大35tb,標準冗餘時單個文件最大5.8tb,高冗餘度時單個文件最大3.9tb。
ASM 實例的主要目的是管理磁盤組和保護其數據。ASM 實例還將文件分佈傳送到數據庫
實例。這樣,數據庫實例就能夠直接訪問磁盤組中存儲的文件。
有多個磁盤組管理命令。執行這些命令都須要SYSASM或SYSDBA權限,且必須從ASM
實例發出。
你能夠添加新磁盤組。還能夠修改現有磁盤組來添加新磁盤、刪除現有磁盤以及執行許多
其它操做。能夠刪除現有磁盤組。
。
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終端既能夠得到控制權,而平衡的操做不受影響,會在後臺繼續進行。
從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 元數據結構。
– 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中引入的任何新功能(磁盤聯機/脫機、可變區等)。
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。
• 使用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 磁盤路徑出現故障時,若是您已設置了相應磁盤組的DISK_REPAIR_TIME
屬性,則ASM 磁盤會脫機,但不會被刪除。此屬性的設置肯定了ASM 可容忍的磁盤中
斷持續時間;若是中斷在此時間範圍內,則修復完成後仍可從新同步。
注:跟蹤機制對每一個修改的分配單元使用1 位。這樣可確保跟蹤機制很是高效。
• 使用SQL*plus、asmcmd和Oracle Enterprise
Manager 管理ASM 實例
• 建立和刪除ASM 磁盤組
• 指定ASM 兼容性屬性
• 擴展ASM 磁盤組
• 比較檢索ASM 元數據的方