溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ASM磁盤管理分析

發(fā)布時間:2021-11-11 15:29:46 來源:億速云 閱讀:136 作者:iii 欄目:關(guān)系型數(shù)據(jù)庫

本篇內(nèi)容介紹了“ASM磁盤管理分析”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

1.ASM 磁盤組

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

一個磁盤組內(nèi)可以存放多個數(shù)據(jù)文件,一個數(shù)據(jù)文件僅僅只能位于一個磁盤組內(nèi),不能跨磁盤組。

多個數(shù)據(jù)庫可以共享相同的或多個磁盤組。

磁盤組的冗余類型可以分為三類:標準冗余,高度冗余,外部冗余。

對于已創(chuàng)建的磁盤組,不能夠更改其冗余級別,如要更改,需要刪除該磁盤組后再重新創(chuàng)建。

2.ASM 磁盤 

ASM磁盤通過標準的OS接口來訪問,由Oracle用戶來讀寫,在聚集的所有節(jié)點可以被訪問。

ASM磁盤在不同的節(jié)點可以使用不同的名字。

ASM磁盤可以使網(wǎng)絡(luò)文件系統(tǒng)。

ASM磁盤上的對象被冗余保護。

每一個ASM磁盤的第1塊用于定義磁盤的頭部信息,ASM磁盤名字編號,創(chuàng)建的時間戳等。

ASM文件會均勻分布在一個ASM組內(nèi)的各個磁盤中。

3.ASM 故障組

一個磁盤組可以由兩個或多個故障組組成。

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

故障組提供了共享相同資源的冗余,我們可以這樣來理解標準冗余。

假定有磁盤組DG1,且創(chuàng)建了兩個故障組。

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互為鏡像。

當(dāng)一個故障組中的某個磁盤損壞,假定為asmdiskA ,則asmdiskA中原來保存的extent將會從failgroup2中復(fù)制到asmdiskB中。

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

標準冗余至少需要2個故障組,高度冗余則至少需要3個故障組。事實上對于未明確指定故障組的情況下,一個標準冗余至少需要2個

asm磁盤,而高度冗余至少需要3個asm磁盤。

4.分配單元

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

支持粗粒度和細粒度分配單元進行讀寫來實現(xiàn)裝載平衡和減少延遲。

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

5.ASM 文件

對Oracle自身而言,實際上與標準的文件并沒有太多區(qū)別。

ASM文件一般位于磁盤組內(nèi)創(chuàng)建的子目錄內(nèi),磁盤組以加號開頭,相當(dāng)于Linux系統(tǒng)的根目錄。

如+DG1/oradb/datafile/system.258.346542

ASM可以為控制文件,數(shù)據(jù)文件,聯(lián)機日志文件,參數(shù)文件,歸檔日志,備份等。

不支持trace文件,可執(zhí)行文件,OCR,Votingdisk等,注:Oracle 11g R2可支持。

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

6.I/O分布

可以使用條帶化和鏡像來保護數(shù)據(jù)。

文件被平均分布在一個組內(nèi)的所有磁盤中。

磁盤的添加與刪除,ASM會自動重新分配AU,因此也不存在碎片的問題。

將I/O分配到不同的磁盤控制器提高了讀寫數(shù)據(jù)。

7.Rebalance

ASM 文件被均衡地分布在一個磁盤組的所有磁盤中。

磁盤添加時,當(dāng)前磁盤組加載的所有磁盤中共享的部分extent將會被移植到新的磁盤中,直到重新分布完成才正常提供I/O均衡。

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

未使用force關(guān)鍵字drop磁盤操作,該磁盤上所有數(shù)據(jù)rebalance完畢后才被釋放.即完畢后磁盤脫機,置磁盤頭部狀態(tài)為former。

總之,任意存儲性質(zhì)改變(磁盤增加,刪除,故障)都將導(dǎo)致rebalance,且由asm自動完成,無需人工干預(yù),在一個時間段通常會鎖定一個盤區(qū)。

8.ASM磁盤組的管理

通常建議創(chuàng)建兩個磁盤組,一個用于保存數(shù)據(jù)文件,一個用于保存閃回,備份恢復(fù)使用。

Flash Recovery Area 的大小取決于閃回內(nèi)容需要保留的時間長短。

盡可能將數(shù)據(jù)區(qū)與閃回區(qū)使用不同的物理通道。

盡可能一次性mount所有需要用到的磁盤。

建議使用性能,磁盤大小相近的磁盤。假定兩個故障組FG1,F(xiàn)G2各使用一塊磁盤,則FG1內(nèi)的磁盤應(yīng)保持與FG2內(nèi)的磁盤大小相同,否則會以最小的磁盤空間作為可使用空間。

9.ASM磁盤組的管理方式

SQLPlus

OEM

DBCA

ASMCMD

ASM磁盤創(chuàng)建及管理
-----------------------------------------------------------------------------------------------------------------
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創(chuàng)建磁盤

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

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

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

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

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

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

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

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

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

VOL1

VOL2

VOL3

VOL4

3.創(chuàng)建磁盤組語法

CREATE DISKGROUP diskgroup_name

              [ { HIGH | NORMAL | EXTERNAL } REDUNDANCY ]

              [ FAILGROUP failgroup_name ]

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

4.創(chuàng)建磁盤組

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                            --使用標準冗余創(chuàng)建磁盤組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,   --查看創(chuàng)建的磁盤組

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 復(fù)數(shù)形式

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.調(diào)整磁盤組的容量

----故障組FG3的容量將被調(diào)整到G,如果磁盤空間不足,則調(diào)整失敗

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

8.手動Rebalance

SQL> alter diskgroup DG2 rebalance power 3 wait;

9.磁盤組的加載與卸載及內(nèi)部一致性檢查

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

ASM磁盤組中目錄、文件的管理
-------------------------------------------------------------------------------------------------------------------------------
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目錄不存在,必須要先創(chuàng)建

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';


ASM磁盤組,TEMPLATE的管理
---------------------------------------------------------------------------------------------------
TEMPLATE是一個模板,為數(shù)據(jù)庫中新增的文件定義了缺省分配單元大小,以及冗余級別。對于不同類型的文件,使用了不同的AUs以及不同的冗余度。如對控制文件采用高度冗余,條帶使用精細化條帶(128kb),而參數(shù)文件,數(shù)據(jù)文件則采用標準冗余,粗級別條帶(1MB)。這個特性正是Oracle asm 管理不同于外部冗余的特性,即可以基于文件的不同屬性而使用不同級別的冗余度和不同大小的條帶化分配單元。當(dāng)然,我們可以根據(jù)不同的需求來修改該模板,使得創(chuàng)建新的文件時根據(jù)需要來應(yīng)用其冗余和條帶花特性。系統(tǒng)管理人員能改變系統(tǒng)缺省template, 但不能刪除該刪除,管理員能增加自己的template,然后在該模板上創(chuàng)建數(shù)據(jù)文件。

1.缺省的條帶化及其冗余級別

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

2.創(chuàng)建TEMPLATE的語法

ALTER DISKGROUP disk_group_name ADD TEMPLATE template_name

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

3.添加TEMPLATE

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

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

4.修改已存在的TEMPLATE

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

5.刪除TEMPLATE

SQL> alter diskgroup DG1 drop template template_two;

6.基于模板創(chuàng)建數(shù)據(jù)文件

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

7.查看當(dāng)前系統(tǒng)中文件使用的模板

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


ASM認證與口令文件
---------------------------------------------------------------------------------------------------------------------
1.ASM認證
ORACLE ASM 實例沒有數(shù)據(jù)字典,所以連接ASM 實例只能通過如下三種系統(tǒng)權(quán)限來進行連接: SYSASM,SYSDBA,SYSOPER.

2.連接ASM實例
1.在操作系統(tǒng)上直接使用OS 認證。
2.在操作系統(tǒng)上使用口令文件認證。
3.通過Oracle Net Service遠程+ 口令文件遠程連接。

3.ASM口令文件

如何創(chuàng)建ASM 實例的口令文件?

若使用ASMCA 來創(chuàng)建的ASM 實例,那么會創(chuàng)建口令文件,口令文件默認的用戶是SYS和ASMSNMP。 

如果要添加其他用戶到口令文件中,就需要使用create user 和 grant命令來添加。

若不是使用ASMCA來創(chuàng)建的,就需要手工的創(chuàng)建口令文件,并對SYS用戶賦予SYSASM 的權(quán)限。

ASM 口令文件創(chuàng)建和oracle 實例一樣:
$ orapwd file=$ORACLE_HOME/dbs/orapw+ASM password=oracle

“ASM磁盤管理分析”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

asm
AI