ASM 磁盤、目錄的管理

--========================數據庫

-- ASM 磁盤、目錄的管理網絡

--========================oracle

 

    ASM磁盤是ASM體系結構的重要組成部分,ASM磁盤由ASM實例來定位、管理,本文主要講述ASM磁盤組、故障組等等。性能

    有關ASM實例及ASM數據庫的建立請參考:建立ASM實例及ASM數據庫ui

 

1、相關概念spa

    1.ASM 磁盤組.net

        ASM存儲管理除了ASM實例以外,最大的組成部分就是ASM磁盤組。一個ASM磁盤組由過多個ASM磁盤組成日誌

        一個磁盤組內能夠存放多個數據文件,一個數據文件僅僅只能位於一個磁盤組內,不能跨磁盤組orm

        多個數據庫能夠共享相同的或多個磁盤組對象

        磁盤組的冗餘類型能夠分爲三類:標準冗餘,高度冗餘,外部冗餘

        對於已建立的磁盤組,不可以更改其冗餘級別,如要更改,須要刪除該磁盤組後再從新建立

 

    2.ASM 磁盤 

        ASM磁盤經過標準的OS接口來訪問,由Oracle用戶來讀寫,在彙集的全部節點能夠被訪問

        ASM磁盤在不一樣的節點可使用不一樣的名字

        ASM磁盤可使網絡文件系統

        ASM磁盤上的對象被冗餘保護

        每個ASM磁盤的第1塊用於定義磁盤的頭部信息,ASM磁盤名字編號,建立的時間戳等

        ASM文件會均勻分佈在一個ASM組內的各個磁盤中

 

    3.ASM 故障組

        一個磁盤組能夠由兩個或多個故障組組成

        一個故障組由一個或多個ASM磁盤組成

        故障組提供了共享相同資源的冗餘,咱們能夠這樣來理解標準冗餘

            假定有磁盤組DG1,且建立了兩個故障組fgroup1,fgroup2,每一個故障組由2個ASM磁盤組成,則對標準冗餘而言,兩個故障組互爲鏡像

            failgroup1  --> asmdiskA , asmdiskB

            failgroup2  --> asmdiskC , asmdiskD

            假定文件datafileA大小爲4MB,則4個extent均勻分佈到asmdiskA,asmdiskB,一樣asmdiskC,asmdiskD也包含該文件的1至4個extent

            即只要有一個extent在故障組fgroup1中存在,一定有一個鏡像的extent存在於fgroup2中,反之亦然,兩個extent互爲鏡像。

            當一個故障組中的某個磁盤損壞,假定爲asmdiskA ,則asmdiskA中原來保存的extent將會從failgroup2中複製到asmdiskB中。

            總之,故障組failgroup1和failgroup2一定有相同的extent副本

        標準冗餘至少須要2個故障組,高度冗餘則至少須要3個故障組。事實上對於未明確指定故障組的狀況下,一個標準冗餘至少須要2個

            asm磁盤,而高度冗餘至少須要3個asm磁盤

       

    4.分配單元

        ASM磁盤的最小粒度是分配單元,大小默認是1M,也可設置爲128K進行細粒度訪問

        支持粗粒度和細粒度分配單元進行讀寫來實現裝載平衡和減小延遲

        ASM文件由一些分配單元的集合組成

       

    5.ASM 文件 

        對Oracle自身而言,實際上與標準的文件並無太多區別

        ASM文件通常位於磁盤組內建立的子目錄內,磁盤組以加號開頭,至關於Linux系統的根目錄

            如+DG1/oradb/datafile/system.258.346542

        ASM能夠爲控制文件,數據文件,聯機日誌文件,參數文件,歸檔日誌,備份等

            不支持trace文件,可執行文件,OCR,Votingdisk等,注:Oracle 11g R2可支持

        使用extent maps來記錄文件到磁盤的映射

 

    6.I/O分佈

        可使用條帶化和鏡像來保護數據

        文件被平均分佈在一個組內的全部磁盤中

        磁盤的添加與刪除,ASM會自動從新分配AU,所以也不存在碎片的問題

        將I/O分配到不一樣的磁盤控制器提升了讀寫數據

       

    7.Rebalance

        ASM 文件被均衡地分佈在一個磁盤組的全部磁盤中

        磁盤添加時,當前磁盤組加載的全部磁盤中共享的部分extent將會被移植到新的磁盤中,直到從新分佈完成才正常提供I/O均衡

        磁盤刪除或故障時,刪除磁盤或故障磁盤的extent將會被均勻的分佈到剩餘的磁盤中

        未使用force關鍵字drop磁盤操做,該磁盤上全部數據rebalance完畢後才被釋放.即完畢後磁盤脫機,置磁盤頭部狀態爲former

        總之,任意存儲性質改變(磁盤增長,刪除,故障)都將致使rebalance,且由asm自動完成,無需人工干預,在一個時間段一般會鎖定一個盤區

           

    8.ASM磁盤組的管理

        一般建議建立兩個磁盤組,一個用於保存數據文件,一個用於保存閃回,備份恢復使用

        Flash Recovery Area 的大小取決於閃回內容須要保留的時間長短

        儘量將數據區與閃回區使用不一樣的物理通道

        儘量一次性mount全部須要用到的磁盤

        建議使用性能,磁盤大小相近的磁盤。假定兩個故障組FG1,FG2各使用一塊磁盤,則FG1內的磁盤應保持與FG2內的磁盤大小相同,

            不然會以最小的磁盤空間做爲可以使用空間

   

    9.ASM磁盤組的管理方式

        SQLPlus

        OEM

        DBCA

        ASMCMD

 

2、ASM磁盤建立及管理  

   

    1.查看ASM配置磁盤搜索信息

        SQL> show parameter instance_type

 

        NAME                                 TYPE        VALUE

        ------------------------------------ ----------- ------------------------------

        instance_type                        string      ASM

 

        SQL> show parameter asm_diskst

 

        NAME                                 TYPE        VALUE

        ------------------------------------ ----------- ------------------------------

        asm_diskstring                       string      /dev/oracleasm/disks/VOL*

 

    2.使用oracleasm建立磁盤

        [root@oradb ~]#  /etc/init.d/oracleasm createdisk VOL1 /dev/sdd1

        Marking disk "VOL1" as an ASM disk: [  OK  ]

        [root@oradb ~]#  /etc/init.d/oracleasm createdisk VOL2 /dev/sdd2

        Marking disk "VOL2" as an ASM disk: [  OK  ]

        [root@oradb ~]#  /etc/init.d/oracleasm createdisk VOL3 /dev/sde1

        Marking disk "VOL3" as an ASM disk: [  OK  ]

        [root@oradb ~]#  /etc/init.d/oracleasm createdisk VOL4 /dev/sde2

        Marking disk "VOL4" as an ASM disk: [  OK  ]

        [root@oradb ~]#  /etc/init.d/oracleasm listdisks

        VOL1

        VOL2

        VOL3

        VOL4

           

    3.建立磁盤組語法

   

            CREATE DISKGROUP diskgroup_name

              [ { HIGH | NORMAL | EXTERNAL } REDUNDANCY ]

              [ FAILGROUP failgroup_name ]

              DISK [ NAME disk_name ] [ SIZE size_clause ] [ FORCE | NOFORCE ] ...;

   

    4.建立磁盤組

   

        SQL> create diskgroup DG1 normal redundancy disk '/dev/oracleasm/disks/VOL1' name VOL1;

        create diskgroup DG1 normal redundancy disk '/dev/oracleasm/disks/VOL1' name VOL1

        *

        ERROR at line 1:

        ORA-15018: diskgroup cannot be created    --標準冗餘至少須要兩塊磁盤

        ORA-15072: command requires at least 2 failure groups, discovered only 1

 

        SQL> create diskgroup DG1 normal redundancy

          2  disk '/dev/oracleasm/disks/VOL1' name DG1_VOL1 ,'/dev/oracleasm/disks/VOL2' name DG1_VOL2;

 

        SQL> create diskgroup DG2 normal redundancy                            --使用標準冗餘建立磁盤組DG2

          2  failgroup FG1 disk '/dev/oracleasm/disks/VOL3' name DG2_FG1_VOL3

          3  failgroup FG2 disk '/dev/oracleasm/disks/VOL4' name DG2_FG2_VOL4;

 

        SQL> create diskgroup DG_ext external redundancy disk '/dev/oracleasm/disks/VOL10' name DG_ext_VOL10; --外部冗餘

 

        SQL> select group_number gno,name,state,type,total_mb,free_mb,   --查看建立的磁盤組

          2  required_mirror_free_mb rmfmb,usable_file_mb ufmb

          3  from v$asm_diskgroup;

 

               GNO NAME            STATE       TYPE     TOTAL_MB    FREE_MB      RMFMB       UFMB

        ---------- --------------- ----------- ------ ---------- ---------- ---------- ----------

                 1 DG1             MOUNTED     NORMAL       3066       2964          0       1482

                 2 DG2             MOUNTED     NORMAL       3066       2964          0       1482

                 3 DG_EXT          MOUNTED     EXTERN        100         50          0         50 

 

        SQL> select group_number gno,name,failgroup fgno,state,total_mb,free_mb,header_status from v$asm_disk;

 

               GNO NAME            FGNO            STATE      TOTAL_MB    FREE_MB HEADER_STATU

        ---------- --------------- --------------- -------- ---------- ---------- ------------

                 2 DG2_FG2_VOL4    FG2             NORMAL         1537       1486 MEMBER

                 2 DG2_FG1_VOL3    FG1             NORMAL         1529       1478 MEMBER

                 1 DG1_VOL2        DG1_VOL2        NORMAL         1537       1486 MEMBER

                 1 DG1_VOL1        DG1_VOL1        NORMAL         1529       1478 MEMBER

                 3 DG_EXT_VOL10    DG_EXT_VOL10    NORMAL          100         50 MEMBER

 

    5.磁盤組添加故障組和成員

        --爲非故障組添加成員

            SQL> alter diskgroup DG1 add disk '/dev/oracleasm/disks/VOL5' name DG1_VOL5; 

 

        --爲DG2添加一個故障組FG3及成員

            SQL> alter diskgroup DG2

              2  add failgroup FG3 disk '/dev/oracleasm/disks/VOL6' name DG2_FG3_VOL6;  --添加故障組及成員

 

        --爲DG2的個故障組各添加一個成員

            SQL> alter diskgroup DG2

              2  add failgroup FG1 disk '/dev/oracleasm/disks/VOL7'

              3  add failgroup FG2 disk '/dev/oracleasm/disks/VOL8'

              4  add failgroup FG3 disk '/dev/oracleasm/disks/VOL9';

 

    6.刪除磁盤組中的磁盤,故障組中的成員,磁盤組

 

        SQL> alter diskgroup DG1 drop disk DG1_VOL5;   --刪除磁盤組DG1中的磁盤VOL5

 

        SQL> alter diskgroup DG2 drop disk DG2_0003;  --刪除故障組中的單個成員

 

        SQL> alter diskgroup DG2 drop disks in failgroup FG3;  --刪除故障組及全部成員,注意此時爲drop disks 複數形式

         

        SQL> alter diskgroup DG1 drop disk DG1_VOL4            --刪除磁盤組中的磁盤,同時添加故障組FG3

                add failgroup FG3 disk '/dev/oracleasm/disks/VOL9' name DG1_VOL11;

               

        SQL> drop diskgroup DG1;    --刪除磁盤組

       

    7.調整磁盤組的容量

        ----故障組FG3的容量將被調整到G,若是磁盤空間不足,則調整失敗

        SQL> alter diskgroup DG2  resize disks in failgroup FG3 size 10G;

   

    8.手動Rebalance

        SQL> alter diskgroup DG2 rebalance power 3 wait;

   

    9.磁盤組的加載與卸載及內部一致性檢查

   

        SQL> alter diskgroup all dismount;

        SQL> alter diskgroup DG2 mount;

        SQL> alter diskgroup DG2 check all;

   

    10.查看磁盤組的partner

   

        SQL>  select name,state,type from v$asm_diskgroup where group_number=3;   --查看磁盤組DG3的信息        

 

        NAME            STATE       TYPE

        --------------- ----------- ------

        DG3             MOUNTED     NORMAL

                          

        SQL> select grp,disk,number_kfdpartner from x$kfdpartner where grp=3;

 

               GRP       DISK NUMBER_KFDPARTNER

        ---------- ---------- -----------------

                 3          0                 1        --磁盤組DG3使用了3個磁盤,且冗餘度爲標準冗餘

                 3          0                 2        --磁盤組0的partner 爲磁盤組1,2

                 3          1                 0        --磁盤組1的partner 爲磁盤組0,2

                 3          1                 2

                 3          2                 0        --磁盤組2的partner 爲磁盤組0,1

                 3          2                 1

         

3、磁盤組中目錄、文件的管理

    1.爲磁盤組增長目錄

        SQL> alter diskgroup DG2 add directory '+DG2/datafile';                      --爲磁盤組增長目錄

 

        SQL> alter diskgroup DG2 rename directory '+DG2/datafile' to '+DG2/dtfile';  --重命名目錄

 

        SQL> alter diskgroup DG2 drop directory '+DG2/dtfile';                       --刪除目錄

   

        SQL> alter diskgroup DG2 add directory '+DG2/asmdb/datafile';   --爲磁盤組增長目錄

        alter diskgroup DG2 add directory '+DG2/asmdb/datafile'

        *

        ERROR at line 1:

        ORA-15032: not all alterations performed

        ORA-15173: entry 'asmdb' does not exist in directory '/ '       --收到錯誤提示,asmdb目錄不存在,必需要先建立

 

        SQL> alter diskgroup DG2 add directory '+DG2/asmdb/';           --首先添加asmdb

 

        SQL> alter diskgroup DG2 add directory '+DG2/asmdb/datafile';   --再次添加目錄成功

 

    2.爲文件添加別名,重命名別名

        SQL> alter diskgroup DG1 add alias '+DG1/asmdb/datafile/users.dbf'   --添加別名

          2  for '+DG1/asmdb/datafile/users.263.734885485' ;

 

        SQL> select name,group_number,file_number,alias_index,alias_directory,system_created

          2  from v$asm_alias where file_number=263;

     

        NAME                      GROUP_NUMBER FILE_NUMBER ALIAS_INDEX A S

        ------------------------- ------------ ----------- ----------- - -

        USERS.263.734885485                 1         263          215 N Y

        users.dbf                           1         263          216 N N

   

        SQL> alter diskgroup DG1 rename alias '+DG1/asmdb/datafile/users.dbf'   --重命名一個別名

          2  to '+DG1/asmdb/datafile/users01.dbf';

 

        SQL> select name,group_number,file_number,alias_index,alias_directory,system_created

          2  from v$asm_alias where file_number=263;

     

        NAME                      GROUP_NUMBER FILE_NUMBER ALIAS_INDEX A S

        ------------------------- ------------ ----------- ----------- - -

        USERS.263.734885485                 1         263          215 N Y

        users01.dbf                         1         263          216 N N

 

    3.爲文件刪除別名

        SQL> alter diskgroup DG1 drop alias '+DG1/asmdb/datafile/users01.dbf';

 

4、TEMPLATE的管理

        TEMPLATE是一個模板,爲數據庫中新增的文件定義了缺省分配單元大小,以及冗餘級別。對於不一樣類型的文件,使用了不一樣的AUs以及

    不一樣的冗餘度。如對控制文件採用高度冗餘,條帶使用精細化條帶(128kb),而參數文件,數據文件則採用標準冗餘,粗級別條帶(1MB)。

    這個特性正是Oracle asm 管理不一樣於外部冗餘的特性,便可以基於文件的不一樣屬性而使用不一樣級別的冗餘度和不一樣大小的條帶化分配單

    元。固然,咱們能夠根據不一樣的需求來修改該模板,使得建立新的文件時根據須要來應用其冗餘和條帶花特性。系統管理人員能改變系統缺

    省template, 但不能刪除該刪除,管理員能增長本身的template,而後在該模板上建立數據文件。

   

    下面是缺省狀況下DG1中新增文件所使用的缺省的條帶化及其冗餘級別

        SQL> select * from v$asm_template where group_number=1;

                                                               

        GROUP_NUMBER ENTRY_NUMBER REDUND STRIPE S NAME

        ------------ ------------ ------ ------ - -----------------------------------

                   1            0 MIRROR COARSE Y PARAMETERFILE

                   1            1 MIRROR COARSE Y DUMPSET

                   1            2 HIGH   FINE   Y CONTROLFILE

                   1            3 MIRROR COARSE Y ARCHIVELOG

                   1            4 MIRROR FINE   Y ONLINELOG

                   1            5 MIRROR COARSE Y DATAFILE

                   1            6 MIRROR COARSE Y TEMPFILE

                   1            7 MIRROR COARSE Y BACKUPSET

                   1            8 MIRROR COARSE Y AUTOBACKUP

                   1            9 MIRROR COARSE Y XTRANSPORT

                   1           10 MIRROR COARSE Y CHANGETRACKING

                   1           11 MIRROR FINE   Y FLASHBACK

                   1           12 MIRROR COARSE Y DATAGUARDCONFIG

   

    1.建立TEMPLATE的語法

   

        ALTER DISKGROUP disk_group_name ADD TEMPLATE template_name

          ATTRIBUTES ([{MIRROR|HIGH|UNPROTECTED}] [{FINE|COARSE}]);

   

    2.添加TEMPLATE

        SQL> alter diskgroup DG1 add template template_one attributes (high fine);

        SQL> alter diskgroup DG1 add template template_two attributes (unprotected);

   

    3.修改已存在的TEMPLATE

        SQL> alter diskgroup DG1 alter template template_one attributes (coarse);

 

    4.刪除TEMPLATE

        SQL> alter diskgroup DG1 drop template template_two;

   

    5.基於模板建立數據文件

        SQL> create tablespace test datafile '+DG1/asmdb/datafile/test.dbf(template_one)' size 10M;

   

    6.查看當前系統中文件使用的模板

        SQL> select name,redundancy,striped

          2  from v$asm_alias a join v$asm_file b

          3  on a.file_number=b.file_number

          4  and a.group_number=b.group_number

          5  order by name;

 

        NAME                                REDUND STRIPE

        ----------------------------------- ------ ------

        Current.256.734885363               HIGH   FINE

        SYSAUX.260.736463679                MIRROR COARSE

        TBS_RMAN.265.735409761              MIRROR COARSE

        TEMP.262.734885475                  MIRROR COARSE

        SYSTEM.259.734885389                MIRROR COARSE

   

5、使用OMF 建立ASM文件涉及的一些參數

 

    DB_CREATE_FILE_DEST           --Oracle建立數據文件、臨時文件時,在未明確指定路徑的狀況下的缺省路徑

                                 --當db_create_online_log_dest_n未指定時,也做爲聯機日誌文件和控制文件的缺省路徑

    DB_CREATE_ONLINE_LOG_DEST_n   --Oracle建立聯機日誌文件和控制文件時,在未明確指定路徑的狀況下的缺省路徑

    DB_RECOVERY_FILE_DEST         --適用於rman, archivelog,onlinelog

    CONTROL_FILES

    LOG_ARCHIVE_DEST_n

    LOG_ARCHIVE_DEST

    STANDBY_ARCHIVE_DEST

   

    查看OMF相關參數的設置

        SQL> show parameter db_reco

 

        NAME                                 TYPE        VALUE

        ------------------------------------ ----------- ------------------------------

        db_recovery_file_dest                string      +RECOVERYDEST

        db_recovery_file_dest_size           big integer 1500M

        SQL> show parameter db_create

 

        NAME                                 TYPE        VALUE

        ------------------------------------ ----------- ------------------------------

        db_create_file_dest                  string      +DG1

   

    有關OMF請參考:Oralce OMF 功能詳解

   

6、ASM 磁盤的相關視圖

    v$asm_disk(_stat)       --查看磁盤及其狀態信息

    v$asm_diskgroup(_stat)  --查看磁盤組及其狀態信息

    v$asm_operation         --查看當前磁盤的操做信息

    v$asm_client            --返回當前鏈接的客戶端實例信息

    v$asm_file              --返回asm文件的相關信息

    v$asm_template          --返回asm文件樣本的相關信息

    v$asm_alias             --返回asm文件的別名信息

   轉:http://blog.csdn.net/leshami/article/details/6134071

相關文章
相關標籤/搜索