Oracle ASM管理及維護

1、ASM概念
ASM(自動存儲管理automatic storage management):
    ASM是Oracle 10g R2推出的卷管理器,能夠自動管理磁盤組並提供有效的數據冗餘功能,簡化數據文件的管理和分類。提供
與平臺無關的文件系統、邏輯卷管理以及軟RAID服務,支持條帶化和磁盤鏡像,從而實現了在數據庫被加載的狀況下添加或移除
磁盤以及自動平衡I/O以刪除「熱點」。單獨做爲oracle實例部署,只須要參數文件就能夠啓動,只有它運行時才能被其餘數據訪問。
ASM 磁盤按分配單元(AU) 進行分區,每一個分配單元的大小爲1 MB。分配單元是ASM 分配的最小連續磁盤空間。ASM 不容許跨分配
單元拆分一個Oracle 塊。
使用ASM的好處:
    1.配置更簡單,而且最大化推進數據庫合併的存儲資源利用。
    2.在增量增長或刪除存儲容量後執行自動聯繫重分配
    3.維護數據的冗餘副本以提升可用性。
    4.支持10g,11g的數據存儲及RAC的共享存儲管理
    5.使用OMF方式來管理文件
    6.簡化管理oracle數據庫文件
    7.數據分佈到各個磁盤中以平衡負載
    8.跨磁盤的集成鏡像
ASM冗餘:
    ASM使用獨特的鏡像算法:不鏡像磁盤,而是鏡像分配單元。
ASM支持三種不一樣的冗餘方式:
    1.外部冗餘(external redundancy):表示Oracle無論理鏡像,鏡像功能由外部存儲系統實現,如經過RAID技術;有效磁
                                       盤空間是全部磁盤設備空間的大小之和。
    2.默認冗餘(normal redundancy):表示Oracle提供2份鏡像來保護數據,有效磁盤空間是全部磁盤設備大小之和的1/2
    3.高度冗餘(high redundancy):表示Oracle提供3份鏡像來保護數據,以提升性能和數據的安全,最少須要三塊磁盤(三
                                   個failure group);有效磁盤空間是全部磁盤設備大小之和的1/3。    
ASM進程:ASM 實例除了傳統的 DBWR,LGWR,CKPT,SMON,PMON 等進程還包含以下四個新後臺進程:
    RBAL:負責協調磁盤組的從新平衡活動(負責磁盤組均衡)。
    GMON:用於ASM磁盤組監控。
    ARB0-ARBn:在同一時刻能夠存在許多此類進程,它們分別名爲ARB0、ARB1,執行實際的從新平衡分配單元移動進程。
    O0nn 01-10:創建到 ASM 實例的鏈接,某些長時間操做好比建立數據文件,RDBMS會經過這些進程向ASM發送信息。
    ASMB:與ASM 實例的前臺進程鏈接,週期性的檢查兩個instance的健康情況。一個數據庫實例同時只能與一個ASM實例連
          接,所以數據庫只會有一個ASMB後臺進程。如一個節點上有多個數據庫實例,它們只能共享一個 ASM 實例。
    CSS:集羣同步服務。要使用ASM,必須確保已經運行了CSS集羣同步服務,CSS負責ASM實例和數據庫實例之間的同步。
ASM與數據庫實例的關係:
    每一個數據庫實例同時只能與一個ASM實例鏈接,如一個節點上有多個數據庫實例,它們只能共享一個ASM實例。ASM實例必
需要先於數據庫實例啓動,和數據庫實例同步運行,遲於數據庫實例關閉。ASM 實例和數據庫實例的關係能夠是1:1,也可
以是1:n。若是是1:n,最好爲ASM 安裝單獨的ASM_HOME。ASM支持datafile,logfiles,control files,archivelogs,
RMAN backup sets等可經過OMF方式管理的文件。
    每一個使用ASM 的數據庫實例都有兩個新的後臺進程,ASMB 和RBAL。RBAL 負責全局打開磁盤組中的磁盤。數據庫實例啓動時,ASMB
做爲前臺進程鏈接到ASM 實例。
    ASM 實例包含兩個新的後臺進程。一個進程負責協調磁盤組的從新平衡活動,稱爲RBAL。第二個進程負責執行實際的從新平衡分配
單元移動操做。node

2、ASM實例安裝配置
1.配置ASMLIB服務
安裝ASM對應版本的軟件包
    rpm -Uvh  \ oracleasm-support-2.1.8-1.el5 \ oracleasm-2.6.18-164.el5xen-2.0.5-1.el5 \
    oracleasmlib-2.0.4-1.el5 
設置ASM的所屬用戶grid及組asmadmin,而且設置爲自啓動:
    #/etc/init.d/oracleasm configure -i
    Default user to own the driver interface [grid]:
    Default group to own the driver interface [asmadmin]:
    Start Oracle ASM library driver on boot (y/n) [y]: y
    Scan for Oracle ASM disks on boot (y/n) [y]: y
服務啓停
    [root@node1 oracle]# /etc/init.d/oracleasm  stop
    [root@node1 oracle]# /etc/init.d/oracleasm  start
    [root@node1 oracle]# /etc/init.d/oracleasm status
參照 grid infrastructure 安裝算法

3、ASM管理
1.ASM 軟件包安裝狀況
檢查驅動加載狀況:
    [root@node1 ~]# lsmod | grep oracleasm
    oracleasm              84392  1
檢查oracleasmfs文件系統:
    [root@node1 ~]# cat /proc/filesystems | grep oracleasm
    [root@node1 ~]# df -a |head -1;df -a | grep oracleasm
查看已建立的ASM磁盤
    [root@node1 disks]# ll /dev/oracleasm/disks/
ASM磁盤操做的日誌:
    cat /var/log/oracleasm
2.ASM 磁盤管理
將系統配置的磁盤分區
    fdisk  /dev/sdb (n,p,w,d)
將分區建立爲ASM磁盤  
    [grid@node1 ~]$/etc/init.d/oracleasm --help
    [root@node1 ~]# oracleasm  createdisk  DISKB01  /dev/sdb1
刪除asm磁盤
    [root@node1 ~]# oracleasm  deletedisk  DISKB01
查看asm磁盤
    [root@node1 sbin]# /etc/init.d/oracleasm  scandisks
    [root@node1 sbin]# /etc/init.d/oracleasm  listdisks
    [root@node1 sbin]# oracleasm  querydisk -p DISKB01
    [root@node1 sbin]# oracleasm  querydisk   /dev/sd*
將磁盤的操做權限付給grid用戶
    chmod -R 777  /dev/oracleasm/disks
查看ASM磁盤狀況(sql)ASM 實例沒有數據字典,鏈接此類實例的惟一方法是使用操做系統驗證機制
    select group_number,disk_number,mount_status,header_status,mode_status,state,failgroup,
    total_mb,free_mb,name,path from v$asm_disk;
查看磁盤,磁盤組狀況
    col name format a10
    col path format a15
    col failgroup format a6
    col state format a9
    select a.group_number,a.name,b.name,b.failgroup,a.state,b.path from v$asm_diskgroup a,v$asm_disk b where 
    a.group_number = b.group_number;
3.ASM磁盤組管理
a.使用ASMCA工具建立,修改,刪除ASM磁盤組
b.使用ASM實例的sql命令建立,修改,刪除磁盤組
建立外部冗餘磁盤組(能夠是多塊磁盤,也能夠只是一塊磁盤)
    create diskgroup  dge  external redundancy disk  'ORCL:ASMDISKB01';
    create diskgroup  dge  external redundancy disk  'ORCL:DISKC01','ORCL:DISKC02';
建立普通冗餘磁盤組(至少兩塊磁盤)fg1必須得要
    create diskgroup dgn normal redundancy failgroup  fg1 disk 'ORCL:ASMDISKB01' name diskb01 failgroup fg2
    disk 'ORCL:ASMDISKB02' name diskb02;
建立高冗餘磁盤組(至少三塊磁盤)
    create diskgroup dgh high redundancy
    failgroup fgh1 disk 'ORCL:DISKC01' name dgh_a
    failgroup fgh2 disk 'ORCL:DISKC02' name dgh_b
    failgroup fgh3 disk 'ORCL:DISKD01' name dgh_c;
刪除ASM磁盤組
    drop diskgroup  dgd;
    drop diskgroup  dgc including contents;
向ASM磁盤組中增長磁盤(用磁盤路徑)  
向高冗餘磁盤組中添加磁盤成員(能夠對每一個failgroup增長一塊,也能夠只給某個failgroup增長)
    alter diskgroup dgh  add failgroup fgh3 disk 'ORCL:DISKD02';
向外部冗餘磁盤組中添加磁盤成員
    alter diskgroup dge add  disk   'ORCL:DISKC02';
向普通冗餘磁盤組中添加磁盤成員
    alter diskgroup dgn add  failgroup fg1 disk 'ORCL:ASMDISKB03' name diskb03;
向磁盤組中增長磁盤後,能夠經過如下命令查看同步過程
    select group_number,sofar,est_work from v$asm_operation;
    show parameter power
添加故障組
    alter diskgroup dgn  add failgroup fgn3 disk  'ORCL:DISKD01';
刪除磁盤組中的磁盤(用磁盤名)
    alter diskgroup dgn  drop disk ASMDISKB02;
刪除磁盤時同時添加磁盤,可減小重平衡次數
    alter diskgroup dge drop disk DISKC01 add disk 'ORCL:DISKC02';
刪除故障組
    alter diskgroup dgn drop disks in failgroup fgn3;
刪除故障組同時添加故障組
    alter diskgroup dgn  drop disks in failgroup fg3 add failgroup fg4 disk 'ORCL:DISKD01';
中止磁盤從一個磁盤組中刪除
    alter diskgroup dg1 undrop disks;
平衡磁盤數據
    alter diskgroup dg1 rebalance;
    alter diskgroup dg1 rebalance wait;     --wait即等到數據平衡結束纔在命令行提示結束
    alter diskgroup dg1 rebalance power 11;  --加快平衡速度
修改加快同步
    alter system set asm_power_limit=10;
中止平衡磁盤數據
    alter diskgroup dg1 rebalance power 0;
掛載和卸載磁盤組
    alter diskgroup dgn mount;
    alter diskgroup dgn dismount;
    alter diskgroup dg1 dismount force;
檢測磁盤組一致性
    ALTER DISKGROUP dgn CHECK ALL;
4.ASM目錄管理
增長目錄
    alter diskgroup dgn add directory '+DGN/datafile';
重命名目錄
    alter diskgroup dgn rename directory '+DGN/datafile' to '+DGN/datafiles';
刪除目錄
    alter diskgroup dgn drop directory '+DGN/datafiles';
建立目錄後就能夠將文件建立爲本身指定的路徑
    create tablespace test datafile '+DGN/dirone/test01.dbf' size 20M;
    CREATE TABLESPACE sample DATAFILE '+dgroupA';
5.ASM別名管理
asm文件添加別名
    alter diskgroup data add alias  '+data/c1/datafile/system01.dbf' for  
    '+data/c1/datafile/SYSTEM.260.803945885';
asm文件修改別名
    alter diskgroup data rename alias  '+data/c1/datafile/system01.dbf' to 
    '+data/c1/datafile/system02.dbf';
asm文件刪除別名
    alter diskgroup data drop alias '+data/c1/datafile/system02.dbf';
6.ASMCMD工具
    是一個命令行實用程序,可用於輕鬆地查看和操縱ASM 磁盤組中的文件和目錄。該實用程序能夠列出磁盤組
內容、執行搜索、建立和刪除目錄以及顯示空間使用狀況等等,grid用戶下調用asmcmd,可用rm 命令刪除磁盤裏
的文件等。
    asmcmd -p 在命令行前顯示當前路徑
    du        顯示指定的ASM目錄下ASM文件佔用的全部磁盤空間
    lsdg      列出全部磁盤組及其屬性
    lsdsk     列出此ASM實例可見的全部磁盤
    rm        刪除ASM文件或目錄
    remap     修理磁盤上遭到破壞或損壞的一系列物理塊
7.單實例ASM數據庫啓動、關閉過程:
開啓:
確認oracleasm狀態正常
    # /etc/init.d/oracleasm  status
    # oracleasm listdisks
啓動ASM監聽,實例
    [grid@node1 ~]$ crsctl start resource -all
    $ lsnrctl start
    $ sqlplus / as sysasm
    startup
啓動oracle數據庫實例
    $ sqlplus / as sysdba
    startup
關閉:
關閉數據庫
    shutdown immediate
關閉ASM實例
    shutdown immediate
    [grid@node1 ~]$ crsctl stop resource -all
8.ASM實例幾個參數介紹
instance_type=[RDBMS | ASM]
    若是是ASM的話,該參數必定要是ASM。
asm_power_limit=[1 - 11]
    指定了磁盤自動平衡負載的等級,數字越大,表示自動均衡能力越強。
asm_diskstring
    指定了ASM實例啓動時自動尋找磁盤的特徵。如參數設置爲/dev/mapper/*,那麼ASM實例在disk group添加磁盤時
會默認把全部/dev/mapper目錄下的磁盤都顯示出來,默認狀況爲NULL,也就是全部磁盤設備都顯示出來。
asm_diskgroups
    指定實例啓動時自動MOUNT的磁盤組。
參考資料:
http://czmmiao.iteye.com/blog/1743998
 sql

相關文章
相關標籤/搜索