ASM 磁碟、目錄的管理
--========================
-- ASM 磁碟、目錄的管理
--========================
ASM磁碟是ASM體系結構的重要組成部分,ASM磁碟由ASM例項來定位、管理,本文主要講述ASM磁碟組、故障組等等。
有關ASM例項及ASM資料庫的建立請參考:建立ASM例項及ASM資料庫
一、相關概念
1.ASM 磁碟組
ASM儲存管理除了ASM例項之外,最大的組成部分就是ASM磁碟組。一個ASM磁碟組由過多個ASM磁碟組成
一個磁碟組內可以存放多個資料檔案,一個資料檔案僅僅只能位於一個磁碟組內,不能跨磁碟組
多個資料庫可以共享相同的或多個磁碟組
磁碟組的冗餘型別可以分為三類:標準冗餘,高度冗餘,外部冗餘
對於已建立的磁碟組,不能夠更改其冗餘級別,如要更改,需要刪除該磁碟組後再重新建立
2.ASM 磁碟
ASM磁碟透過標準的OS介面來訪問,由Oracle使用者來讀寫,在聚集的所有節點可以被訪問
ASM磁碟在不同的節點可以使用不同的名字
ASM磁碟可以使網路檔案系統
ASM磁碟上的物件被冗餘保護
每一個ASM磁碟的第塊用於定義磁碟的頭部資訊,ASM磁碟名字編號,建立的時間戳等
ASM檔案會均勻分佈在一個ASM組內的各個磁碟中
3.ASM 故障組
一個磁碟組可以由兩個或多個故障組組成
一個故障組由一個或多個ASM磁碟組成
故障組提供了共享相同資源的冗餘,我們可以這樣來理解標準冗餘
假定有磁碟組DG1,且建立了兩個故障組fgroup1,fgroup2,每個故障組由個ASM磁碟組成,則對標準冗餘而言,兩個故障組互為映象
failgroup1 --> asmdiskA , asmdiskB
failgroup2 --> asmdiskC , asmdiskD
假定檔案datafileA大小為MB,則個extent均勻分佈到asmdiskA,asmdiskB,同樣asmdiskC,asmdiskD也包含該檔案的至個extent
即只要有一個extent在故障組fgroup1中存在,必定有一個映象的extent存在於fgroup2中,反之亦然,兩個extent互為映象。
當一個故障組中的某個磁碟損壞,假定為asmdiskA ,則asmdiskA中原來儲存的extent將會從failgroup2中複製到asmdiskB中。
總之,故障組failgroup1和failgroup2必定有相同的extent副本
標準冗餘至少需要兩個故障組,高度冗餘則至少需要個故障組。事實上對於未明確指定故障組的情況下,一個標準冗餘至少需要兩個
asm磁碟,而高度冗餘至少需要個asm磁碟
4.分配單元
ASM磁碟的最小粒度是分配單元,大小預設是M,也可設定為K進行細粒度訪問
支援粗粒度和細粒度分配單元進行讀寫來實現裝載平衡和減少延遲
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
二、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 0 2 --磁碟組的partner 為磁碟組,2
3 1 0 --磁碟組的partner 為磁碟組,2
3 1 2
3 2 0 --磁碟組的partner 為磁碟組,1
3 2 1
三、磁碟組中目錄、檔案的管理
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';
四、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
五、使用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 功能詳解
六、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檔案的別名資訊
七、更多參考
有關閃回特性請參考
Oracle 閃回特性(FLASHBACK DATABASE)
Oracle 閃回特性(FLASHBACK DROP & RECYCLEBIN)
Oracle 閃回特性(Flashback Query、Flashback Table)
Oracle 閃回特性(Flashback Version、Flashback Transaction)
有關基於使用者管理的備份和備份恢復的概念請參考:
Oracle 基於使用者管理恢復的處理(詳細描述了介質恢復及其處理)
有關RMAN的恢復與管理請參考:
有關Oracle體系結構請參考:
Oracle 例項和Oracle資料庫(Oracle體系結構)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-704493/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ASM之磁碟組中目錄檔案的管理ASM
- 全面學習和應用ORACLE ASM特性--(4)管理asm磁碟組中目錄和檔案OracleASM
- asm磁碟管理篇ASM
- 使用 ASMCMD 工具管理ASM目錄及檔案ASM
- ASM之磁碟建立及管理ASM
- ASM學習筆記_磁碟的管理ASM筆記
- 有效管理 ASM 磁碟組空間ASM
- ASM的管理----刪除和新增磁碟組ASM
- 目錄管理
- 全面學習和應用ORACLE ASM特性--(2)管理asm磁碟OracleASM
- 【ASM】如何建立ASM磁碟ASM
- ASM之建立ASM磁碟ASM
- linux將掛載在home目錄下的磁碟轉移到根目錄下Linux
- ASM磁碟頭ASM
- ASM 增加磁碟ASM
- Oracle asm磁碟中新加磁碟OracleASM
- 全面學習和應用ORACLE ASM特性--(5)管理asm磁碟中的檔案OracleASM
- 【LINUX學習】檢視磁碟與目錄的資訊Linux
- asm 磁碟組 增刪磁碟組ASM
- Linux udev 動態管理Oracle ASM磁碟-實驗LinuxdevOracleASM
- ASM磁碟組更換磁碟的操作方法ASM
- Linux 磁碟對應 ASM diskgroup 中的磁碟LinuxASM
- ASM磁碟組限制ASM
- asm磁碟normal模式ASMORM模式
- ASM磁碟大小限制ASM
- 如何建立ASM磁碟ASM
- asm 磁碟切換ASM
- 12c ASM audit目錄增長過快的bugASM
- Linux排查磁碟大檔案或大目錄Linux
- 使用CREATE DISKGROUP語句建立ASM磁碟組,提示找不到相應的ASM磁碟ASM
- 【ASM】ASM與DB軟體部署在不同目錄時注意ORACLE_HOME的設定ASMOracle
- 修改ASM磁碟組的屬性ASM
- ASM磁碟空間的檢視ASM
- 【ASM】Oracle asm磁碟被格式化,如何掛載該磁碟組ASMOracle
- Linux — 檔案、目錄管理Linux
- 遷移ASM磁碟組ASM
- 配置ASM磁碟-轉載ASM
- ASM磁碟頭比較ASM