oracle數據庫存儲管理--ASM

說明:文章是用windows live writer自動上載的,有些特殊符號顯示不正確,如“>”顯示爲“>”。須修改之處太多,無暇修改。閱讀不便之處,請見諒!

特點:

  • ASM能代替外部LVM或FS的功能,不依賴外部數據存儲結構。
  • ASM內含多種存儲冗餘功能如鏡像,不依賴外部數據冗餘功能。
  • 能夠自動將數據均衡分佈在磁盤組內所有磁盤中,從而提高系統性能。
  • 跨平臺使用,配置和管理界面統一,簡化了用戶管理。

1、在linux下須安裝相應補丁包和驅動程序(按以下順序安裝):

# rpm -ivh oracleasm-support-2.1.3-1.el5.i386.rpm

# rpm -ivh oracleasm-2.6.18-164.el5-2.0.5-1.el5.rpm

# rpm -ivh oracleasmlib-2.0.4-1.el5.i386.rpm

在商用unix下是不用安裝這些驅動程序的,如AIX下直接使用rhdisk。實際上,在linux下也可以直接使用磁盤或磁盤分區(須轉換爲裸設備),後面會有介紹。

2、配置ASM環境

# /etc/init.d/oracleasm configure

Configuring the Oracle ASM library driver.

This will configure the on-boot properties of the Oracle ASM library

driver. The following questions will determine whether the driver is

loaded on boot and what permissions it will have. The current values

will be shown in brackets ('[]'). Hitting <ENTER> without typing an

answer will keep that current value. Ctrl-C will abort.

Default user to own the driver interface []: oracle

Default group to own the driver interface []: oinstall

Start Oracle ASM library driver on boot (y/n) [n]: y

Scan for Oracle ASM disks on boot (y/n) [y]:

Writing Oracle ASM library driver configuration: done

Initializing the Oracle ASMLib driver: [ OK ]

Scanning the system for Oracle ASMLib disks: [ OK ]

若配置後顯示失敗(failure),則檢查oracleasm的版本是否與操作系統內核版本一致。

檢查方法:#uname –r是否與oracleasm-2.6.18-164.el5-2.0.5-1.el5.rpm 是否對應,若不一致則到下面網站下載:http://www.oracle.com/technetwork/topics/linux/downloads/rhel5-084877.html。若檢查版本是一致的,則可嘗試執行如下命令:# oracleasm update-driver。

3、創建和刪除ASM磁盤

創建ASM磁盤:

# /etc/init.d/oracleasm createdisk data_vol01_sdb5 /dev/sdb5
Marking disk "data_vol01_sdb5" as an ASM disk:             [  OK  ]
# /etc/init.d/oracleasm createdisk data_vol02_sdb6 /dev/sdb6
Marking disk "data_vol02_sdb6" as an ASM disk:             [  OK  ]
 

列出ASM磁盤:

# /etc/init.d/oracleasm listdisks
DATA_VOL01_SDB5
DATA_VOL02_SDB6
FLASH_VOL_SDB1

刪除ASM磁盤:

# /etc/init.d/oracleasm deletedisk FLASH_VOL_SDB1
Removing ASM disk "FLASH_VOL_SDB1":                        [  OK  ]

4、創建ASM磁盤組:

(1)啓動dbca

# su - oracle
$ dbca

p_w_picpath

(2)啓動CSS服務

p_w_picpath

提示用root用戶運行$ORACLE_HOME/bin/localconfig add,使CSS(Oracle Cluster Synchronization Service,集羣同步服務)啓動並加入inittab文件,使其開機自動啓動。

p_w_picpath

# /u01/db_1/bin/crsctl check cssd
CSS appears healthy                              

css服務正常。

(3)設置ASM實例的sys用戶密碼

p_w_picpath

(4)啓動ASM實例

p_w_picpath

p_w_picpath

(5)創建磁盤組

p_w_picpath

p_w_picpath

三種冗餘模式:

  1. High:數據將鏡像兩份,磁盤組中至少3個磁盤。
  2. Normal:數據鏡像一份,磁盤組中至少2個磁盤。
  3. Extenal:外部提供數據保護,如:RAID盤。

磁盤的八種狀態:

  • UNKNOWN - Automatic Storage Management disk header has not been read

  • CANDIDATE - Disk is not part of a disk group and may be added to a disk group with the ALTER DISKGROUP statement

  • INCOMPATIBLE - Version number in the disk header is not compatible with the Automatic Storage Management software version.

  • PROVISIONED - Disk is not part of a disk group and may be added to a disk group with the ALTER DISKGROUP statement. The PROVISIONED header status is different from the CANDIDATE header status in that PROVISIONED implies that an additional platform-specific action has been taken by an administrator to make the disk available for Automatic Storage Management.

  • MEMBER - Disk is a member of an existing disk group. No attempt should be made to add the disk to a different disk group. The ALTER DISKGROUP statement will reject such an addition unless overridden with the FORCE option

  • FORMER - Disk was once part of a disk group but has been dropped cleanly from the group. It may be added to a new disk group with the ALTER DISKGROUP statement.

  • CONFLICT - Automatic Storage Management disk was not mounted due to a conflict

  • FOREIGN - Disk contains data created by an Oracle product other than ASM. This includes datafiles, logfiles, and OCR disks.

p_w_picpath

冗餘方式爲normal,成員盤兩個,則取兩盤中容量最小爲可用空間。但在normal和high方式下,磁盤組的可用容量還與failgroup組中的磁盤有關,後面會詳細介紹。

5、使用裸設備創建ASM磁盤組:

(1)創建裸設備

# vi /etc/udev/rules.d/60-raw.rules

ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdb3", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sdb5", RUN+="/bin/raw /dev/raw/raw4 %N"
KERNEL=="raw[1-4]",OWNER="oracle",GROUP="oinstall",MODE="640"

注:陰影部分,不可以有超過大於10的數。也就是說如果用這種方法改變裸設備的所主,設備編號則不能有大於10,如:raw10,raw11…等這樣的設備名。如果有可用chown改變。

# start_udev
Starting udev:                                             [  OK  ]
# ls –l /dev/raw
total 0
crw-r----- 1 oracle oinstall 162, 1 Jan 31 17:02 raw1
crw-r----- 1 oracle oinstall 162, 2 Jan 31 17:02 raw2
crw-r----- 1 oracle oinstall 162, 3 Jan 31 17:02 raw3
crw-r----- 1 oracle oinstall 162, 4 Jan 31 17:02 raw4

(2)創建磁盤組

# su - oracle
$ dbca

p_w_picpath

由於/dev/sdb5即raw4已經是data_grp01的成員盤,所以不會顯示。

p_w_picpath

冗餘方式爲external,成員盤兩個,則磁盤組可用容量爲兩盤容量之和(不包括開銷)。

6、使用ASM磁盤組

創建數據庫(截圖步驟中部分省略):

$ export ORACLE_SID=+ASM

$ lsnrctl start

p_w_picpath

p_w_picpath

p_w_picpath

p_w_picpath

p_w_picpath

p_w_picpath

p_w_picpath

p_w_picpath

p_w_picpath

7、ASM磁盤維護

(1)數據庫啓動順序:CSS服務—&gt;ASM實例—&gt;Oracle數據庫實例

         數據庫關閉順序:Oracle數據庫實例—&gt;ASM實例—&gt;CSS服務

(2)登入ASM實例

$ export ORACLE_SID=+ASM

$ sqlplus / as sysdba

SQL&gt; show parameter name;

NAME                     TYPE            VALUE
------------------------------------ ---------------------- ------------------------------
db_name                  string
db_unique_name                 string            +ASM
global_names                 boolean            FALSE
instance_name                 string            +ASM
service_names                 string            +ASM

(3)登錄數據庫

$export ORACLE_SID=asmora10

$ sqlplus / as sysdba

SQL&gt; show parameter instance_name;

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
instance_name                 string     asmora10
SQL&gt; show parameter spfile;

NAME                     TYPE     VALUE
----------------------------- ----------- ------------------------------
spfile                     string     +DATA_GRP01/asmora10/spfileasm
                                               ora10.ora

SQL&gt; select name from v$datafile
  2  union
  3  select member from v$logfile
  4  union
  5  select name from v$controlfile
  6  union
  7  select name from v$tempfile;

NAME
--------------------------------------------------------------------------------
+DATA_GRP01/asmora10/controlfile/current.260.741893725
+DATA_GRP01/asmora10/datafile/sysaux.257.741893599
+DATA_GRP01/asmora10/datafile/system.256.741893597
+DATA_GRP01/asmora10/datafile/undotbs1.258.741893599
+DATA_GRP01/asmora10/datafile/users.259.741893599
+DATA_GRP01/asmora10/onlinelog/group_1.261.741893725
+DATA_GRP01/asmora10/onlinelog/group_2.262.741893737
+DATA_GRP01/asmora10/onlinelog/group_3.263.741893745
+DATA_GRP01/asmora10/tempfile/temp.264.741893765
+FLASH_GRP01/asmora10/controlfile/current.256.741893725
+FLASH_GRP01/asmora10/onlinelog/group_1.257.741893731

+FLASH_GRP01/asmora10/onlinelog/group_2.258.741893743
+FLASH_GRP01/asmora10/onlinelog/group_3.259.741893751

13 rows selected.

(4)查看磁盤組及ASM磁盤

$ export ORACLE_SID=+ASM

$ sqlplus / as sysdba

查看磁盤組狀況:

SQL&gt; select name,state,type,total_mb,free_mb,usable_file_mb,offline_disks from v$asm_diskgroup;

NAME          STATE             TYPE        TOTAL_MB    FREE_MB USABLE_FILE_MB OFFLINE_DISKS
------------- ---------------------- ------------ ---------- ---------- -------------- -------------
DATA_GRP01    MOUNTED             NORMAL        4784       2766       1383           0
FLASH_GRP01   MOUNTED             EXTERN        3826       3597       3597           0

手動mount磁盤組:

SQL&gt; alter diskgroup data_grp01 mount;

手動卸載磁盤組(在數據庫關閉情況下):

SQL&gt; alter diskgroup flash_grp01 dismount;

查看磁盤狀況:

SQL&gt; select name,header_status,mount_status,state,total_mb,path from v$asm_disk;

p_w_picpath

(5)添加、刪除磁盤組

p_w_picpath

添加磁盤組:

SQL&gt; create diskgroup data_grp02 high redundancy disk 'ORCL:DATA_VOL03_SDB7','ORCL:DATA_VOL04_SDB8','ORCL:DATA_VOL03_SDB9';

p_w_picpath

刪除磁盤組:

SQL&gt; drop diskgroup data_grp02;

(6)向external磁盤組中添加、刪除磁盤

添加磁盤到磁盤組

SQL&gt; alter diskgroup flash_grp01 add disk '/dev/raw/raw3' name flash_grp01_03;

p_w_picpath

查看磁盤組中磁盤重新平衡狀況:

SQL&gt; select group_number,operation,state,est_work,sofar,est_rate,est_minutes from v$asm_operation;

p_w_picpath

SQL&gt; show parameter power

NAME                     TYPE            VALUE
------------------------------------ ---------------------- ------------------------------
asm_power_limit              integer            1

這參數指定重新平衡磁盤數據時暫用帶寬的力度。取值爲0~11。數值越大,對系統佔用的I/0資源越多,重新平衡動作將越快完成。此參數也可以在添加或刪除磁盤動作時指定,如:

SQL&gt; alter diskgroup data_grp01 add disk 'ORCL:DATA_VOL03_SDB7' rebalance power 11;

從磁盤組中刪除磁盤:

SQL&gt; alter diskgroup flash_grp01 drop disk flash_grp01_03;

p_w_picpath

p_w_picpath

(7)向磁盤組中添加、刪除磁盤

添加磁盤:

SQL&gt; alter diskgroup data_grp01 add disk 'ORCL:DATA_VOL03_SDB7','ORCL:DATA_VOL04_SDB8';

p_w_picpath

刪除磁盤:

SQL&gt; alter diskgroup data_grp01 drop disk 'DATA_VOL01_SDB5';

注意:如果刪除normal或high磁盤組中的磁盤,刪除磁盤後磁盤組中磁盤的數量必須不少於2個或3個。若不能滿足這個要求,則被刪除的磁盤會處於hung狀態。如下所示:

p_w_picpath

這種情況下應先放棄drop操作:

SQL&gt; alter diskgroup data_grp01 undrop disks;

如果確定要刪除磁盤,則應先向組內添加一塊新的磁盤後再刪除:

SQL&gt; alter diskgroup data_grp01 add disk 'ORCL:DATA_VOL02_SDB6' drop disk 'DATA_VOL03_SDB7';

8、Failgroup故障組

(1)概念

在normal和high保護模式下,ASM會將數據鏡像2份或三份,如(以normal磁盤組爲例):

p_w_picpath

兩個磁盤的情況下,數據A,B,C,D在兩個磁盤上互爲鏡像。

p_w_picpath

三個磁盤的情況下,數據A,B,C,D和鏡像在不同磁盤,並均勻分佈。

p_w_picpath

四個磁盤情況下,數據均勻分佈。考慮如下情況:

p_w_picpath

兩塊磁盤損壞,則數據A將面臨丟失。爲解決這個問題,引出failgroup的概念:在同一ASM磁盤組內,一個或多個磁盤組成一個failgroup,鏡像在不同failgroup間進行,同樣一個failgroup的不同磁盤間不允許做鏡像。這樣,如果同一個failgroup組內的磁盤處於同一磁盤控制器的情況下(比如,上圖中上面兩塊受損的磁盤由同一個SCSI控制器掌管),可以避免磁盤控制器損壞導致的數據損失。也就是說,同一ASM磁盤組內任意一個failgroup內的磁盤損壞都不會造成數據丟失。當然,這種情況在external模式下是不成立的。

所以,上述情況如果在每兩塊磁盤爲一個failgroup的情況下,數據分佈應該是這樣的:

p_w_picpath

(2)查看failgroup

SQL&gt;  select name,header_status,mount_status,total_mb,failgroup,path from v$asm_disk;

p_w_picpath

默認情況下,在創建ASM磁盤組時,每個磁盤均屬於以該磁盤名命名的failgroup。

(3)指定磁盤的failgroup

p_w_picpath

在normal/high保護模式下,failgroup至少有2/3個。

SQL&gt; create diskgroup data_grp02 normal redundancy failgroup fg01 disk '/dev/raw/raw3' failgroup fg02 disk '/dev/raw/raw4';

p_w_picpath

SQL&gt; alter diskgroup data_grp02 add failgroup fg01 disk 'ORCL:DATA_VOL03_SDB9' name data_grp02_0002;

p_w_picpath

從上面data_grp02磁盤組的可用空間可以看出,由於鏡像的原因,failgroup中磁盤的分配情況也會影響到磁盤組的可用空間。如下圖所示:

p_w_picpath

(4)刪除failgroup中磁盤

SQL&gt; alter diskgroup data_grp02 drop disk 'DATA_GRP02_0001';

p_w_picpath

failgroup中最後一個磁盤不能被刪除。

SQL&gt; alter diskgroup data_grp02 undrop disks;

9、手工控制ASM

$ export ORACLE_SID=+ASM

$ asmcmd

ASMCMD&gt; ?
        commands:
        -------- 
        cd
        du
        find
        help
        ls
        lsct
        lsdg
        mkalias
        mkdir
        pwd
        rm
        rmalias
ASMCMD&gt; ls -l
State       Type    Rebal  Unbal  Name
MOUNTED     NORMAL  N      N      DATA_GRP01/
MOUNTED     NORMAL  N      N      DATA_GRP02/
DISMOUNTED          N      N      FLASH_GRP01/
ASMCMD&gt; cd data_grp02
ASMCMD&gt; ls
ASMCMD&gt; mkdir ttt
ASMCMD&gt; ls -l
Type  Redund  Striped  Time             Sys  Name
                                        N    ttt/
ASMCMD&gt; lsdg
State       Type    Rebal  Unbal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Name
MOUNTED     NORMAL  N      N         512   4096  1048576      7176     5093             2392            1350              0  DATA_GRP01/
MOUNTED     NORMAL  N      N         512   4096  1048576      7175     7071             2870            2100              0  DATA_GRP02/
DISMOUNTED          N      N         512   4096  1048576         0        0                0               0             

10、裸設備遷移至ASM環境

 

待續。。。

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