oracle asm自動儲存使用及管理說明(上)
oracle rac使用越來越廣泛,對asm使用也越來越多,下面就asm的使用進行說明,主要是針對linux應用方面的
一、建立磁碟組
1、建立裸裝置
--redhat4的使用
首先劃分lun vg00,然後在lun上面建立lv
# lvcreate -L 5000M -n ora_asm1 vg00
# lvcreate -L 5000M -n ora_asm2 vg00
# lvcreate -L 5000M -n ora_asm3 vg00
# lvcreate -L 5000M -n ora_asm4 vg00
# lvcreate -L 5000M -n ora_asm5 vg00
繫結網路卡
# raw /dev/raw/raw1 /dev/vg00/ora_asm1
# raw /dev/raw/raw1 /dev/vg00/ora_asm2
# raw /dev/raw/raw1 /dev/vg00/ora_asm3
# raw /dev/raw/raw1 /dev/vg00/ora_asm4
# raw /dev/raw/raw1 /dev/vg00/ora_asm5
在/etc/sysconfig/rawdevices中新增如下:
/dev/raw/raw1 /dev/vg00/ora_asm1
/dev/raw/raw1 /dev/vg00/ora_asm2
/dev/raw/raw1 /dev/vg00/ora_asm3
/dev/raw/raw1 /dev/vg00/ora_asm4
/dev/raw/raw1 /dev/vg00/ora_asm5
更改raw許可權
# chown oracle:dba /dev/raw/raw*
# vi /etc/init.d/app
chown oracle:dba /dev/raw/raw*
# ln -s /etc/init.d/app /etc/rc5.d/S99mapp
--在redhat5、6中,使用udev的方式
如果沒有使用多路徑,一般就如下就行了
[root@mytest1 rules.d]# pwd
/etc/udev/rules.d
[root@mytest1 rules.d]# more 99-oracle-asmdevices.rules
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="36000c291777955ad7db711db64828c6e", NAME="OCR1
", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="36000c29a84d75cb069f392fabe063c6e", NAME="OCR2
", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="36000c29780f67522e980b44dfad5a8a0", NAME="DATA
1", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="36000c296005896610f2a8a1f156b3688", NAME="OCR3
", OWNER="grid", GROUP="asmadmin", MODE="0660"
[root@mytest1 rules.d]# start_udev
Starting udev: [ OK ]
2、配置ASM
# su - oracle
# export ORACLE_SID=+ASM
# dbca
選擇Configure Automatic Storage Management
3、ASM引數檔案資訊
#strings $ORACLE_HOME/dbs/spfile+ASM.ora
+ASM.asm_diskgroups='ASM_DISKGROUP'#Manual Mount
*.asm_diskgroups='ASM_DISKGROUP'
*.background_dump_dest='/home/oracle/admin/+ASM/bdump'
*.core_dump_dest='/home/oracle/admin/+ASM/cdump'
*.instance_type='asm'
*.large_pool_size=12M
*.remote_login_passwordfile='SHARED'
*.user_dump_dest='/home/oracle/admin/+ASM/udump'
在$ORACLE_HOME/dbs存在兩個檔案:
1) ab_+ASM.dat
SQL>shutdown
$ rm ab_+ASM.dat
SQL>startup
重新生成該檔案,RDBMS連線ASM例項時候,使用該檔案確定相關的環境資訊。如果檔案刪除,RDBMS不能連線ASM.
2) hc_+ASM.dat
EM使用該檔案進行健康監控,如果該檔案刪除,健康檢查資訊將不準確。
4、程式檢查
# ps -ef |grep asm
# crsctl check css
# ps -ef |grep d.bin
二、asm磁碟資訊查詢
ASM 資訊查詢
1、檢視diskgroup空間大小,以及ASM狀態
SQL> select name, total_mb, free_mb, usable_file_mb, state
from v$asm_diskgroup;
NAME TOTAL_MB FREE_MB USABLE_FILE_MB STATE
------------------------------ ------------------ --------------- -------------------------- -----------
ASM_DISKGROUP 25120 24963 9969 MOUNTED
2、程式數計算
SQL>show parameter process
processes=40
計算公式=25+(10+最大數量並行資料檔案建立)*RDMS連線ASM數量
= 25+(10+5)*1
=40
3、顯示SGA值
SQL>show sga
4、ASM控制檔案
SQL>show parameter control
control_files = /home/oracle/app/ora10g/dbs/cntrl+ASM.dbf
該檔案在目錄中不存在,在ASM例項中沒有任何意義
5、檢視管理ASM使用者
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP
--------------------------------- ------------ ----------
SYS TRUE TRUE
6、檢視diskgroup中各個磁碟狀態
SQL> select name, mount_status from v$asm_disk;
NAME MOUNT_S
---------------------------------- -----------------
ASM_DISKGROUP_0004 CACHED
ASM_DISKGROUP_0003 CACHED
ASM_DISKGROUP_0002 CACHED
ASM_DISKGROUP_0001 CACHED
ASM_DISKGROUP_0000 CACHED
v$asm_disk_stat與v$asm_disk類似
v$asm_file顯示ASM檔案
v$asm_operation:顯示ASM重新負載平衡操作過程
三、asm磁碟刪除\新增
1、刪除disk
SQL> select group_number, name from v$asm_diskgroup;
GROUP_NUMBER NAME
---------------------------- ------------------
1 ASM_DISKGROUP
SQL> select path, name from v$asm_disk where group_number=1;
PATH NAME
------------------------------ ------------------------------
/dev/raw/raw5 ASM_DISKGROUP_0004
/dev/raw/raw4 ASM_DISKGROUP_0003
/dev/raw/raw3 ASM_DISKGROUP_0002
/dev/raw/raw2 ASM_DISKGROUP_0001
/dev/raw/raw1 ASM_DISKGROUP_0000
SQL>alter diskgroup ASM_DISKGROUP drop disk asm_diskgroup_0004;
SQL>alter diskgroup ASM_DISKGROUP drop disk asm_diskgroup_0003;
2、建立新的diskgroup
SQL> select name, path, mode_status, state from v$asm_disk;
NAME PATH MODE_ST STATE
------------------------------ ------------------------------ ------- --------
/dev/raw/raw6 ONLINE NORMAL
/dev/raw/raw5 ONLINE NORMAL
/dev/raw/raw4 ONLINE NORMAL
ASM_DISKGROUP_0002 /dev/raw/raw3 ONLINE NORMAL
ASM_DISKGROUP_0001 /dev/raw/raw2 ONLINE NORMAL
ASM_DISKGROUP_0000 /dev/raw/raw1 ONLINE NORMAL
SQL>create diskgroup dg1 external redundancy disk '/dev/raw/raw4';
SQL> select name, state, type, total_mb, free_mb from v$asm_diskgroup;
NAME STATE TYPE TOTAL_MB FREE_MB
------------------------------ ----------- ------ ---------- ----------
ASM_DISKGROUP MOUNTED NORMAL 15072 14919
DG1 MOUNTED EXTERN 5024 4974
SQL>drop diskgroup dg1;
SQL> create diskgroup dg1 normal redundancy
2 failgroup f1 disk '/dev/raw/raw4'
3 failgroup f2 disk '/dev/raw/raw5';
alter diskgroup sysdg add failgroup DATA1 disk 'ORCL:ASMDSKA' add failgroup data2 disk 'ORCL:ASMDSKB';
select a.group_number,a.name,b.name,b.path,b.failgroup from v$asm_diskgroup a,v$asm_disk b where a.group_number = b.group_number;
select * from v$asm_operation;
在建立diskgroup有三個選項:external, normal和high redunancy,具體在使用中,如果使用中高階儲存裝置,通常磁碟映象在硬體級別就完成了,所以在建立diskgroup採用external,normal則至少需要兩個磁碟,high則是三個磁碟,通常用於低端儲存裝置。
3、新增disk到現有的diskgroup
SQL>alter diskgroup ASM_DISKGROUP add disk
'/dev/raw/raw6' name ASM_DISKGROUP_0003;
刪除failure group 下的所有disk
SQL>alter diskgroup dg1 drop disks in failgroup f2;
檢查disk狀態,f2下的磁碟處於hung狀態
SQL> select group_number,disk_number,name,failgroup,state from v$asm_disk;
4、重新設定disk大小
alter diskgroup asm_diskgroup resize disk ASM_DISKGROUP_0001 size 800m;
5、將diskgroup進行dismount和mount
SQL> select name, state from v$asm_diskgroup;
NAME STATE
------------------------------------- ---------------
ASM_DISKGROUP MOUNTED
DG1 MOUNTED
SQL>alter diskgroup dg1 dismount;
SQL> alter diskgroup asm_diskgroup dismount;
SQL> select name, state from v$asm_diskgroup;
NAME STATE
------------------------------------- ---------------
ASM_DISKGROUP DISMOUNTED
DG1 DISMOUNTED
SQL> alter diskgroup dg1 mount;
SQL>alter diskgroup asm_diskgroup mount;
SQL> select name, state from v$asm_diskgroup;
NAME STATE
------------------------------------- ---------------
ASM_DISKGROUP MOUNTED
DG1 MOUNTEDx`
6、冗餘性考慮
我們在建立diskgroup沒有指定failure group, failure group 自動在自己盤重建。但我們要注意指定failure group 時,每個failure group中的盤數量和大小要一致,避免空間浪費。
在ASM的diskgroup中,第一個被分配的file extents,作為primary extent,其他作為second extents,在10g中,預設都是先讀primary extents,但在11g,我們可以設定prefered read 特性,主要解決了RAC的兩個節點中,節點1優先讀取primary extent,節點2優先讀取second extents,提高I/O效能
7、disk partnership
在normal和high redundancy diskgroup中,磁碟故障切換備用盤的資訊可查詢x$kfdpartner.
SQL> select name, disk_number
from v$asm_disk
where GROUP_NUMBER=2
order by 2;
NAME DISK_NUMBER
----------------------------------- -------------------------
ASM_DISKGROUP_0000 0
ASM_DISKGROUP_0001 1
ASM_DISKGROUP_0002 2
SQL> select disk, NUMBER_KFDPARTNER from x$kfdpartner;
DISK NUMBER_KFDPARTNER
----------------- -----------------------------------
0 1
0 2
1 0
1 2
2 0
2 1
可以看到磁碟1的parner是磁碟2和磁碟3.
四、條帶化
ASM的條帶化有兩種:coarse和fine-gained。AU是最小分配單元,預設是1M,每個AU預設由8個128K條帶空間組成。
coarse條帶化中一個extent對映為一個AU,預設是1M大小,比如4個磁碟
#0~#3,分配extent時候,第一個AU分配給disk0,第二個AU給disk1,依此順推。所以該條帶化適合連續的I/O讀寫,比如全表掃描表。
Fined-gained條帶化,一個AU中的8個128K條帶空間,平均打散在磁碟上,也就是說,4個磁碟,1個AU是平均分佈在4個磁碟,每個磁碟2個128K。適合於對資料讀寫延遲比較敏感的檔案。如redo日誌,控制檔案,spfile等。
10g版本AU和條帶設定引數:_asm_ausize和_asm_stripesize,11g版本資料庫在建立diskgroup時候,可以設定attribute 'au_size' = '16M'。
五、Rebalance
從diskgroup中新增或刪除disk時候,將觸發RBAL程式建立rebalance計劃,並計算執行Rebalance所需要時間和工作要求,然後發訊息給ASM Reblance (ARBx)程式處理該請求。ARBx程式的數量由引數ASM_POWER_LIMIT決定。COD (Continuting Operation Directory)用於記錄rebalances情況。如果rebalance失敗,在重啟instance時候,將從COD讀取記錄,重新啟動rebalance。ARBx程式對每個extents進行locked, relocated和unlocked操作,執行過程中可以參考v$asm_operation檢視。
ASM_POWER_LIMIT範圍是0~11,0:表示不進行rebalance,值越大, rebalance速度越快。
在進行rebalance時候要注意以下幾點:
1、每個disk的大小必須是相同,如果存在一個小盤,因為rebalance將對每個盤的分配相同比例的空間,可能造成rebalance時候空間不足。
2、rebalance僅僅在diskgroup發生改變時候才進行的,並不是定時執行
3、如果磁碟大小一樣,仍然沒有進行rebalance,需要檢視asm_power_limit
4、如果rebalance執行過程中,server當機,重啟後會自動進行rebalance
5、影響rebalance速度因素有很多,最重要是I/O子系統
6、如果執行過程中,空閒空間不足,造成rebalance失敗,將出現ORA-15041錯誤,需要再新增disk,。
7、如果需要頻繁新增disk,每一次都可能造成資料的頻繁移動,為提高效率,最好批次新增。
從老的磁碟陣列切換和遷移disk到新的磁碟陣列命令如下:
SQL> alter diskgroup add disk '/dev/xxx/xxx'
drop disk [disk_name] rebalance power 8;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29371470/viewspace-1259096/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle asm自動儲存使用及管理說明(下)OracleASM
- oracle自動儲存管理(ASM)的優點OracleASM
- 使用自動儲存管理 (ASM)建立資料庫ASM資料庫
- 【ASM】自動儲存管理的新特性ASM
- 自動儲存管理ASM日常維護(一)ASM
- VMWARE+RHEL3+ORACLE10g+ 自動儲存管理 (ASM) 筆記OracleASM筆記
- oracle asm 儲存限制OracleASM
- Oracle ASM儲存Spfile解析OracleASM
- Oracle 在asm前使用udev繫結共享儲存OracleASMdev
- Oracle9i自動分段空間管理改善分段儲存Oracle
- 自動儲存、靜態儲存和動態儲存
- 安裝oracle 11g 使用ASM儲存 詳細OracleASM
- 11g新特性--自動儲存管理
- Linux 下 自動啟動oracle資料配置說明LinuxOracle
- oracle orapwd使用說明Oracle
- windows 下 asm儲存啟動故障WindowsASM
- 【ASM學習】ASM引數說明ASM
- oracle控制檔案轉儲說明Oracle
- oracle資料塊轉儲說明Oracle
- MySQL儲存過程的匯出說明MySql儲存過程
- DFL自動虛擬載入的使用說明
- 儲存管理(一):openfiler介紹及儲存理解
- MySQL 使用者管理 說明MySql
- Oracle OCP(42):ASM 儲存結構簡介OracleASM
- 多AG自動生成apk說明APK
- 【ORACLE】Oracle常用SQL及重點功能說明OracleSQL
- Oracle OS Watcher使用說明Oracle
- oracle程式和記憶體轉儲說明Oracle記憶體
- oracle日誌檔案頭轉儲說明Oracle
- oracle資料檔案頭轉儲說明Oracle
- Kibana安裝及使用說明
- Oracle中password file的作用及說明Oracle
- ASM儲存使用RMAN複製控制檔案ASM
- oracle10gR1 asm儲存簡單示例OracleASM
- Oracle9i的自動分段空間管理改善了分段儲存的本質Oracle
- ORACLE10g的新特性-簡化你的工作:自動化儲存管理 (轉)Oracle
- asm 儲存線上遷移ASM
- Oracle Restart啟動資料庫例項故障一例( Oracle ASM儲存Spfile解析)OracleREST資料庫ASM