oracle10G新特性之ASM的應用

jackjw發表於2008-09-22

[@more@]

oracle10G新特性之ASM的應用

ASM的應用:
1、ASM的特點:
不是映象整個硬碟而是映象資料庫物件,如果在硬體級別上做了raid則不可以分段物件
自動平衡:增加額外的硬碟時,ASM會將一定比列的檔案從一個或多個硬碟上移動到新硬碟上,從而維持所有磁碟之間整體的I/O平衡
ASM有自己獨有的例項來提供oracle例項和檔案系統之間的介面。有兩個新的oracle後臺程式支援ASM例項,RBAL和ORBn .
RBAL協調磁碟組的磁碟活動,而ORBn(n是0-9之間的數字)執行磁碟組中磁碟之間的實際盤區移動
ASM例項也有兩個後臺程式:OSMB和RBAL。OSMB執行資料庫和ASM例項之間的通訊。RBAL執行代表資料庫的磁碟組中磁碟的開啟和關閉
ASM有它自己的初始化檔案和密碼檔案,但是沒有資料字典,ASM例項都透過SYS或SYSTEM連線並使用作業系統驗證,ASM只能處於nomount或mount狀態,不存在open狀態
作為sysdba連線ASM例項可以執行所有 ASM操作,而sysoper則只提供用來執行已配置的和穩定的ASM例項的例程操作。

2、ASM初始化引數說明:
instance_type:ASM例項具有ASM特有的值,傳統的ORACLE例項預設值為rdbms
db_unique_name:預設值是+ASM,它是叢集中或單節點上ASM例項組的唯一名稱
asm_power_limit:用於控制重新平衡操作發生的速度。值的範圍1-11,預設是1(較低的I/O開銷)
asm_diskstring:指定一個或多個串,這些串與作業系統有關,用於限制可用於建立磁碟組的磁碟裝置。如過為NULL,則表示所有可見的所有磁碟都可以做為建立磁碟組的候選項
asm_diskgroups:指定一個包含磁碟組名稱的列表,可以在啟動時由ASM例項自動安裝這些磁碟組,或者透過alter diskgroup all mount命令安裝
large_pool_size:表示所有的ASM程式包都在該池中執行,因此最少要設定8M

3、ASM例項的啟動和關閉:
startup預設為startup mount;
startup nomount 只啟動例項,不安裝任何ASM磁碟
startup restrict 臨時防止資料庫例項連線到ASM例項而安裝磁碟組
shutdown

4、ASM的動態效能檢視:
v$asm_disk:磁碟資訊
v$asm_diskgroup:磁碟組資訊
v$asm_file:磁碟組上檔案資訊
v$asm_operation:ASM上正在執行或長期執行的操作
v$asm_template:磁碟組中的模板
v$asm_client:ASM與資料庫的連線資訊
v$asm_alias:磁碟組的別名

5、ASM檔名稱格式:
1)、完全限定的名稱 +group/dbname/file type/tag.file.incarnation 如:+data2/rac/datafile/users3.311.1
2)、數字名稱:+DATA2.311.1
3)、別名:alter diskgroup data2 add alias '+data2/purch/users.dbf' for '+data2/rac/datafile/users3.311.1';
4)、具有模板名稱的別名:create tablespace users4 datafile '+data2/user_spare(datafile)';
5)、不完整的名稱:create tablespace users5 datafile '+data2';
6)、具有模板的不完整名稱:create tablespace users6 datafile '+data2(datafile)';

6、管理ASM磁碟組:
粗糙分段:在磁碟上對磁碟組中的檔案分段。以每個1M為單位將檔案擴充套件到所有的磁碟。適合於OLTP高度併發的小I/O請求系統
細密分段:以128K為單位擴充套件檔案到磁碟組中所有磁碟上。適合於併發性低的OLTP系統或傳統的資料倉儲
如果要定義磁碟組的映象必須先定義磁碟的故障組,可用於磁碟組中的故障組的數量可以限制可用於磁碟組的映象型別。
有三中映象型別:
外部冗餘:只需要一個故障組,一般是由raid卡提供冗餘
普通冗餘:磁碟組中需要兩個故障組
高度冗餘:磁碟組中需要至少三個故障組
普通和高度冗餘映象的是盤區而不是硬碟,同時每個磁碟將具有每個磁碟上主要的和映象的盤區
舉例:
新增一個具有高度冗餘的磁碟組:
檢視使用v$asm_disk檢視初始化引數asm_diskstring發現的所有可以用於建立磁碟組的磁碟,以及這些磁碟的狀態
select group_number,disk_number,name,failgroup,create_date,path from v$asm_disk;
檢視已存在的磁碟組的資訊:
select group_number,name,type,total_mb,free_mb from v$asm_diskgroup;
建立高度冗餘的磁碟組,如果是普通的話,high redundancy 改成normal,並只建立兩個故障組
create diskgroup data2 high redundancy
failgroup fg1 disk '/dev/raw/raw3' name d2a
failgroup fg2 disk '/dev/raw/raw4' name d2b
failgroup fg3 disk '/dev/raw/raw5' name d2c;

如果用兩塊硬碟組成一個故障組
ALTER DISKGROUP data2
ADD FAILGROUP fg1 disk '/dev/raw/raw6' name d2a1;
為了確保映象有足夠的空間,因此故障組fg2,fg3也應該加上一個磁碟。
建完以後再檢視下磁碟組的資訊和磁碟的資訊,確認已經將相關磁碟完成建立好磁碟組
select group_number,name,type,total_mb,free_mb from v$asm_diskgroup;
select group_number,disk_number,name,failgroup,create_date,path from v$asm_disk;

刪除磁碟組:
drop diskgroup date2 (including contents);如果裡面已經有資料
完成建立磁碟組後,可以新建表空間來存放相關資料
create tablespace user datafile '+data2';

增加一塊硬碟到磁碟組中
ALTER DISKGROUP data2
ADD FAILGROUP fg4 disk '/dev/raw/raw6' name d2d;
可以透過v$asm_operation檢視來檢視正在進行的操作,因為預設的重新平衡初始化引數值asm_power_limit是1,可以改變該值以便重新平衡操作的功率
alter diskgroup data2 rebalance power 8;
執行完後再看正在進行的操作:
select group_number,operation,state,power,actual,sofar,est_work,est_rate,est_minutes from v$asm_operation;
EST_WORK是要移動的單元的總數,SOFAR是重新平衡操作中到目前為止已移動的單元的數量。EST_RATE是重新平衡操作每分鐘移動的單元的當前數量,EST_MINUTES給出剩餘時間的估計值(以分鐘計)。
如果是普通冗餘,增加了一個故障組,但是還是普通冗餘,由於磁碟組中有額外的盤區副本,因此可以改進針對磁碟組中物件的SELECT語句的I/O效能。

執行ALTER DISKGROUP DROP命令可以從盤組中刪除磁碟。但是要注意,要刪除的磁碟的磁碟名應是Oracle生成的ASM磁碟名,
不是新增該磁碟時所用的作業系統盤名。要確定刪除磁碟時使用的正確名字,可查詢V$ASM_DISK。在LABEL列找到作業系統磁碟名,
再使用NAME列中相應的ASM磁碟名:
ALTER DISKGROUP data2
DROP DISK d2d;
從磁碟組中刪除所有想刪的磁碟後,執行ALTER DISKGROUP REBALANCE命令初始化重新平衡操作。然後等待ASM移去被刪除磁碟上的所有資料。
監視V$ASM_OPERATION檢視來觀察該過程,或觀察V$ASM_DISK檢視的STATUS列。當重新平衡完成後,你可以刪除或重新使用該驅動器。

對磁碟組修改的所有相關命令:
alter diskgroup ... drop disk
alter diskgroup ... drop ...add
alter diskgroup ... mount
alter diskgroup ... dismount
alter diskgroup ... check all

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

相關文章