真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

OracleASM的概念以及工作原理是什么

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)Oracle ASM的概念以及工作原理是什么,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)建站是一家以成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、網(wǎng)站推廣、小程序App開發(fā)等移動(dòng)開發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為成都水泥攪拌車等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開發(fā)服務(wù)。

     ASM:Automatic Storage Management,是ORACEL10G以后為了簡(jiǎn)化存儲(chǔ)管理的復(fù)雜性,也是為了擺脫對(duì)其他廠商的依賴而推出的。ASM作為目前ORACLE推薦的首選存儲(chǔ)方案,除了具有集群文件系統(tǒng)的功能外,同時(shí)還集成了冗余、IO分散等卷管理器的功能。我們可以通過兩種方式使用ASM,包括建立在裸設(shè)備上,如果安裝了ASMLib,也可以建立的塊設(shè)備上。

     使用ASM需要從ORACLE官方網(wǎng)站下載ASM驅(qū)動(dòng)包,一般包括了ASM和ASMLib兩部分,需要注意ASM和ASMLib是兩部分,ASMLib只是ASM的一個(gè)管理工具包,我們常用ASMLib包創(chuàng)建ASM磁盤,如/etc/init.d/oracleasm VOL1 /dev/sdb1[這里也可以是裸設(shè)備].如上所訴,如果我們直接使用裸設(shè)備作為我們的ASM磁盤,那么就可以不用安裝ASMLib (主要是通過asm_disstring='' 參數(shù)指定)

如下的一些ASM包,下載ASM包需要根據(jù)自己的操作系統(tǒng)內(nèi)核版本來選擇:

oracleasm-2.6.18-194.el5-2.0.5-1.el5.i686.rpm
oracleasm-2.6.18-194.el5debug-2.0.5-1.el5.i686.rpm
oracleasm-2.6.18-194.el5-debuginfo-2.0.5-1.el5.i686.rpm
oracleasm-2.6.18-194.el5PAE-2.0.5-1.el5.i686.rpm
oracleasm-2.6.18-194.el5xen-2.0.5-1.el5.i686.rpm
oracleasmlib-2.0.4-1.el5.i386.rpm
oracleasm-support-2.1.8-1.el5.i386.rpm

1.后臺(tái)進(jìn)程

ASM與普通的RDBMS非常類似,ASM由一些后臺(tái)進(jìn)程組成,也可以通過sql*plus工具維護(hù)。
ASM實(shí)例和傳統(tǒng)的實(shí)例的RDBMS實(shí)例相比多兩個(gè)進(jìn)程:RBAL和ABRn

<1>RBAL:這個(gè)進(jìn)程也叫rebalancer進(jìn)程,負(fù)責(zé)規(guī)劃ASM磁盤組的rebalancer活動(dòng)。
<2>ABRn:是RBAL進(jìn)程的子進(jìn)程,這個(gè)進(jìn)程在數(shù)量上可以有多個(gè),n從1~9,這些子進(jìn)程負(fù)責(zé)完成真正的rebalancer活動(dòng)。
<3>傳統(tǒng)進(jìn)程:ASM實(shí)例也有DBWR、LGWR等進(jìn)程。

而使用ASM作為存儲(chǔ)的RDBMS實(shí)例,也會(huì)多出兩個(gè)進(jìn)程:RBAL和ASMB.

<4>RBAL:這個(gè)進(jìn)程的主要功能是打開每個(gè)磁盤組的所有磁盤和數(shù)據(jù)的rebalancer。
<5>ASMB:這個(gè)進(jìn)程作為ASM實(shí)例和數(shù)據(jù)庫(kù)實(shí)例之間的信息通道。這個(gè)進(jìn)程負(fù)責(zé)與ASM實(shí)例的通信,它先利用Diskgroup Name從CSS獲得管理該Diskgroup的ASM實(shí)例的連接串,然后簡(jiǎn)歷到ASM的持久連接,兩個(gè)實(shí)例通過這條連接定期交換信息,同時(shí)也是一種心跳機(jī)制。 這也說明了當(dāng)我們的單實(shí)例數(shù)據(jù)使用ASM存儲(chǔ)時(shí),為什么要單獨(dú)啟動(dòng)一個(gè)CSS進(jìn)程。
<6>O0nn01~10:這是一組進(jìn)程,這組進(jìn)程建立到ASM實(shí)例的連接,某些長(zhǎng)時(shí)間操作如創(chuàng)建數(shù)據(jù)文件,RDBMS會(huì)通過這些進(jìn)程向 ASM發(fā)送信息。

注意:ASM實(shí)例必須要先于數(shù)據(jù)庫(kù)實(shí)例啟動(dòng)、和數(shù)據(jù)庫(kù)實(shí)例同步運(yùn)行、遲于數(shù)據(jù)庫(kù)實(shí)例關(guān)閉。

2.ASM的安裝位置

ASM實(shí)例和RDBMS實(shí)例的關(guān)系需要注意以下兩點(diǎn):

<1>如果一個(gè)節(jié)點(diǎn)上的ASM實(shí)例和RDBMS實(shí)例是1:n的關(guān)系,也就是一個(gè)ASM實(shí)例同時(shí)為多個(gè)RDBMS實(shí)例提供存儲(chǔ), 則最好為 ASM 安裝單獨(dú)的$ASM_HOME,并和RDBMS的$ORACLE_HOME區(qū)分開來,在這種環(huán)境下需要使用ASM_HOME下的監(jiān)聽器。
<2>如果節(jié)點(diǎn)上的ASM實(shí)例和RDBMS實(shí)例是1:1的關(guān)系,也就是ASM實(shí)例只為一個(gè)RDBMS實(shí)例提供存儲(chǔ),則ASM和RDBMS可以共用一個(gè)$ORACLE_HOME

3.創(chuàng)建ASM磁盤

配置ASM磁盤需要注意以下幾點(diǎn):

<1>ASM是以O(shè)racle用戶身份運(yùn)行的,要想讓它能夠發(fā)現(xiàn)磁盤分區(qū)并進(jìn)行管理和使用,必須把這些分區(qū)的屬主設(shè)置成Oracle。

<2>可通過兩種方式創(chuàng)建ASM磁盤,一種是裸設(shè)備,一種是ASMLib方式。

<3>使用裸設(shè)備創(chuàng)建的ASM磁盤參數(shù)可以這樣指定:

       asm_diskstring='/dev/raw/raw1','/dev/raw/raw5' 或 asm_diskstring='/dev/raw/raw*'

<4>使用ASMLib方式創(chuàng)建的ASM磁盤參數(shù)可以這樣指定即"ORCL:磁盤名"格式:

      asm_diskstring='ORCL:VOL1','ORCL:VOL2' 或 asm_diskstring='ORCL:VOL*'

#######################

配置裸設(shè)備

    配置裸設(shè)備我就不詳細(xì)描述了,下面只是給出命令。我的博客里也有相關(guān)的文章。注意的是配置完裸設(shè)備需要把裸設(shè)備的屬主改成Oracle,操作系統(tǒng)版本不同,配置稍有差別:

 (1)對(duì)磁盤分區(qū)   fdisk -l /fdisk /dev/sdb
 (2)編輯rawdevices配置文件,添加裸設(shè)備、塊設(shè)備的綁定條目  
 vi /etc/sysconfig/rawdevices
    /dev/raw/raw1 /dev/sdb1
 (3)啟動(dòng)rawdevices服務(wù)   service rawdevices start
 (4)配置隨系統(tǒng)自動(dòng)啟動(dòng)   chkconfig rawdevices on   一般默認(rèn)是都o(jì)n
 (5)確認(rèn)rawdevices服務(wù)啟動(dòng)  service rawdevices status
 (6)查看裸設(shè)備  raw -qa或直接cd /dev/raw;ls
 (7)修改權(quán)限   cd /dev/raw;chown oracle:dba raw*
 
  設(shè)置權(quán)限的時(shí)候 chown 命令重啟系統(tǒng)后會(huì)失效,可以把此命令配置在/etc/rc.local中。

#######################

ASMLib方式

使用ASMLib就不需要?jiǎng)?chuàng)建裸設(shè)備,可以直接在塊設(shè)備上創(chuàng)建(當(dāng)然也可以裸設(shè)備上創(chuàng)建)。

(1)根據(jù)操作系統(tǒng)內(nèi)核版本下載安裝    rpm -ivh oracleasm*.rpm

(2)配置驅(qū)動(dòng)   /etc/init.d/oracleasm configure  

(3)確認(rèn)配置成功,ASMLib被加載#3種方法

--確認(rèn)ASMLib被加載  

lsmod |grep asm  

--確認(rèn)系統(tǒng)內(nèi)存中存在oracleasmfs文件系統(tǒng)

cat /proc/filesystem

--確認(rèn)oracleasmfs被掛載

df -ha

(4)創(chuàng)建ASM磁盤

 /etc/init.d/oracleasm createdisk VOL1 /dev/sdb1    ...  

(5)檢查ASM磁盤是否創(chuàng)建成功(ASMLib方式的磁盤)

  cd /etc/init.d/oracleasm listdisks  

(6)查看每個(gè)ASM磁盤對(duì)應(yīng)的物理設(shè)備

 /etc/init.d/oracleasm querydisk VOL1

4.ASM的存儲(chǔ)結(jié)構(gòu)

ASM的存儲(chǔ)我們需要明白兩點(diǎn):

<1>每個(gè)磁盤組都有一個(gè)ASM文件系統(tǒng)。

<2>ASM磁盤組自身就帶有條帶化和鏡像功能。

       在使用ASM存儲(chǔ)的數(shù)據(jù)庫(kù)實(shí)例與普通采用文件系統(tǒng)的數(shù)據(jù)庫(kù)實(shí)例其存儲(chǔ)結(jié)構(gòu)有所不同,在采用ASM存儲(chǔ)的數(shù)據(jù)庫(kù)實(shí)例中其RDBMS部分仍然采用tablespace,segment,extent這種結(jié)構(gòu)來組織空間,這與傳統(tǒng)的方式一樣.所不同的是extent不再對(duì)應(yīng)到data block,而是對(duì)應(yīng) 到ASM的AU(Allocation Unit),空間的分配不再以data file形式,而是ASM file,這一點(diǎn)也證明了ASM 文件系統(tǒng)的存在.

Oracle ASM的概念以及工作原理是什么

ASM存儲(chǔ)特點(diǎn):
<1> asm可以把多個(gè)磁盤分區(qū)(asm disk)集合成一個(gè)磁盤組(asm diskgroup)提供給RDBMS使用。對(duì)于RDBMS而言,ASM DiskGroup和普通的磁盤沒有區(qū)別,都可以在上面創(chuàng)建文件。使用asm存儲(chǔ)隔離了RDBMS實(shí)例對(duì)底層存儲(chǔ)技術(shù)的依賴,RDBMS只專心自己的事務(wù)功能即可,而不必關(guān)心底層存儲(chǔ)的實(shí)現(xiàn)細(xì)節(jié)。
<2> 一個(gè)Disk Group有1到多個(gè)ASM DISK組成,一個(gè)ASM DISK只能屬于一個(gè)Disk Group。
<3> 一個(gè)Disk Group中可以包含多個(gè)Disk File,但是一個(gè)Disk file只能在一個(gè)Disk Group內(nèi),每個(gè)Disk File會(huì)在ASM Disk間平均分配,分散IO以提高性能。
<4> 如果磁盤組空間不夠,可以動(dòng)態(tài)向磁盤組中添加、刪除磁盤,然后ASM重新條帶化數(shù)據(jù)文件,而所有這些對(duì)RDBMS都是透明的。
<5> ASM還提供了卷管理器才有的鏡像保護(hù)功能,這種鏡像是在ASM file級(jí)別的,而不像其他的卷管理器是在卷級(jí)別。
<6> ASM把a(bǔ)sm disk劃分為若干存儲(chǔ)單元叫作Allocation Unit(AU);一般每個(gè)AU是1MB。
<7> 數(shù)據(jù)庫(kù)仍然使用extent作為基本單位,extent是RDBMS的內(nèi)容,需要對(duì)應(yīng)到ASM的AU,extent和AU的對(duì)應(yīng)關(guān)系一般為1:1,但是如果使用了ASM的冗余功能,關(guān)系就變成了1:2或1:3(叫作2-way或3-way mirroring)。
<8> 數(shù)據(jù)庫(kù)仍然是利用extent map來操作數(shù)據(jù)。在傳統(tǒng)的存儲(chǔ)方式中,extent map是從數(shù)據(jù)文件中獲得的;而在ASM環(huán)境中,這個(gè)extent map不是從數(shù)據(jù)文件中獲得,
     而是從ASM實(shí)例獲得。
#==============================
   什么extent map: 在數(shù)據(jù)庫(kù)中 Data file和segment的空間分配、擴(kuò)展都不是以Data Block為單位的,而是以Extent為單位,這個(gè)extent大小在創(chuàng)建表空間的時(shí)候指定;整個(gè)表空間的所有extent信息就構(gòu)成了extent map。根據(jù)extent map是記錄在數(shù)據(jù)字典中還是記錄在數(shù)據(jù)文件中,又可以分為數(shù)據(jù)字典和本地管理兩種管理方式,在Oracle10g以后,缺省的方式都是本地管理。
<9> 數(shù)據(jù)庫(kù)實(shí)例從asm獲得extent map來操作extent map后,后續(xù)的讀寫操作直接操作磁盤,而不再經(jīng)過ASM。
<10> asm實(shí)例只負(fù)責(zé)對(duì)asm磁盤組的維護(hù),包括創(chuàng)建、刪除磁盤組,添加、刪除磁盤;而不負(fù)責(zé)數(shù)據(jù)文件的讀寫,這些操作由數(shù)據(jù)庫(kù)實(shí)例完成。

5.RDBMS和ASM之間的交互

     當(dāng)ASM實(shí)例掛載一個(gè)磁盤組之后,ASM會(huì)把Disk Group Name、ASM Instance Name、Oracle Home Path等信息注冊(cè)到CSS,這些信息會(huì)被RDBMS用來構(gòu)造Connect String。
     當(dāng)RDBMS啟動(dòng)過程中需要訪問某個(gè)ASM File時(shí),RDBMS會(huì)和CSS聯(lián)系,從CSS獲得Connect String,然后發(fā)起一個(gè)到ASM實(shí)例的連接,這條ASM和 RDBMS實(shí)例之間的初始連接叫做Umbilicu(臍帶),只要RDBMS打開ASM File,這個(gè)連接就會(huì)保持活動(dòng)。直到所有ASM File都被RDBMS關(guān)閉后,這個(gè)連接才會(huì)關(guān)閉。在RDBMS一端,這個(gè)連接是ASMB后臺(tái)進(jìn)程;而在ASM方面,是一個(gè)前臺(tái)進(jìn)程,叫Umbilicus Forground(UFG).ASM和RDBMS通過這個(gè)連接發(fā)送互動(dòng)信息。

       如果檢查L(zhǎng)ISTENER中ASM實(shí)例的注冊(cè)信息,可以看到ASM不是OPEN狀態(tài),而是以BLOCKED狀態(tài)注冊(cè)的。BLOCKED狀態(tài)禁止了通常方式的數(shù)據(jù)庫(kù)連接,從而確保所有連接都是通過ASMB后臺(tái)進(jìn)程的路由完成,保證了ASM操作的安全性。

創(chuàng)建ASM文件的過程如下:  

<1>、用戶在RDBMS中輸入create file命令;  

<2>、RDBMS會(huì)產(chǎn)生一個(gè)前臺(tái)進(jìn)程去連接ASM實(shí)例的進(jìn)程;  

<3>、創(chuàng)建文件的指令會(huì)通過這個(gè)連接交給ASM實(shí)例;  

<4>、ASM實(shí)例根據(jù)指令創(chuàng)建文件,從磁盤中分配AU;ASM會(huì)根據(jù)指令中指定的template或Diskgroup默認(rèn)的template來決定文件的冗余、條帶策略;  

<5>、AU分配完成后,ASM就把這個(gè)文件的extent map發(fā)送給RDBMS;ASM創(chuàng)建一個(gè)COD記錄以跟蹤目前這個(gè)掛起的操作;  

<6>、RDBMS發(fā)起IO操作,初始化這個(gè)ASM File;這時(shí)候不需要ASM介入;  

<7>、初始化完成后,RDBMS向ASM發(fā)送commit請(qǐng)求;  

<8>、ASM接到commit請(qǐng)求后,ASM的LGWR進(jìn)程把ACD change Record 寫入到ACD Directory;然后ASM的DBWR進(jìn)程把Allocation Table、File Directory、Alias Directory異步寫回磁盤;  

<9>、如果RDBMS放棄創(chuàng)建,ASM會(huì)使用COD(相當(dāng)于ASM中的回滾段)回滾文件操作?;貪L操作會(huì)把Allocation Entries標(biāo)志為free,釋放File Directory中的條目。    

ASM File的打開和IO過程 

<1>、RDBMS向ASM Instacne發(fā)生file-open請(qǐng)求   

<2>、ASM查看ASM SGA中是否存在相應(yīng)的Extent Map,如果有則直接通過ASMB把Extent Map發(fā)生給RDBMS,如果沒有則從File Directory,再通過ASMB把Extent Map發(fā)生給RDBMS   

<3>、在10g中ASM會(huì)把整個(gè)ASM FILE的extent map都發(fā)生給RDBMS,在11g中只會(huì)返回前60個(gè)Direct Extent,Indirect Extent會(huì)在需要時(shí)載入。   

<4>、ASM FILE的整個(gè)IO過程由RDBMS直接操作ASM FILE不需要ASM實(shí)例介入

刪除ASM File的過程 

<1>、RDBMS實(shí)例想ASM實(shí)例發(fā)出刪除請(qǐng)求   

<2>、ASM創(chuàng)建COD記錄用于回滾操作,接著標(biāo)記allocation table中的條目為free,釋放File directory記錄,

         刪除alias direcotry中的別名記錄。   

<3>、如果此時(shí)ASM實(shí)例崩潰,則利用COD記錄進(jìn)行回滾

6.ASM、RDBMS、CSS關(guān)系

      在ASM實(shí)例與RDBMS實(shí)例運(yùn)行過程中,CSS起到了重要的作用。我們知道存儲(chǔ)是由ASM實(shí)例維護(hù)的,但是RDBMS在運(yùn)行過程中,并是不是所有的讀寫都要借助ASM實(shí)例,RDBMS實(shí)例只在打開數(shù)據(jù)文件時(shí)需要從ASM實(shí)例獲得Extent Map信息,并把這些信息保存在SGA中。而以后的數(shù)據(jù)讀寫都是直接操作存儲(chǔ)的。因此如果ASM實(shí)例終止,必須關(guān)閉所有使用該ASM的RDBMS實(shí)例,以確認(rèn)這些RDBMS實(shí)例不能操作該ASM管理的存儲(chǔ)上的數(shù)據(jù),也就是要進(jìn)行IO隔離(IO Fencing)。
     ASM實(shí)例啟動(dòng)時(shí),需要在CSS中注冊(cè),而所有實(shí)用ASM存儲(chǔ)的RDBMS實(shí)例啟動(dòng)時(shí),也要像CSS注冊(cè),同時(shí)從CSS獲得ASM的連接串。RDBMS實(shí)例和ASM實(shí)例是通過ASM實(shí)例端的UFG和RDBMS實(shí)例端的ASMB進(jìn)程組成的通道進(jìn)行通信。
   如果ASM實(shí)例Crash,UFG就會(huì)終止RDBMS的ASMB進(jìn)程,對(duì)于RDBMS而言,這個(gè)進(jìn)程是關(guān)鍵進(jìn)程,其終止會(huì)導(dǎo)致RDBMS的終止。
   ASM進(jìn)程和RDBMS進(jìn)程除了主動(dòng)向CSS注冊(cè),CSS也要跟蹤兩個(gè)實(shí)例的IO的健康狀況,如果RDBMS的實(shí)例終止,CSS通知ASM,ASM實(shí)例就會(huì)代替RDBMS實(shí)例執(zhí)行一些資源回收釋放工作。ASM實(shí)例將不受影響仍然正常運(yùn)行。

7.ASM別名

  先來了解一下OMF:
  OMF,全稱是Oracle_Managed Files,即Oracle文件管理,使用OMF可以簡(jiǎn)化管理員的管理工作,不用指定文件的名字、大小、路徑,
其名字,大小,路徑由oracle 自動(dòng)分配。在刪除不再使用的日志、數(shù)據(jù)、控制文件時(shí),OMF也可以自動(dòng)刪除其對(duì)應(yīng)的OS文件。
  想使用OMF需要設(shè)置3個(gè)參數(shù),我們可以根據(jù)需要對(duì)這三個(gè)參數(shù)設(shè)置,三個(gè)參數(shù)作用不解釋了  
  db_create_file_dest
  db_create_online_log_dest_n
  db_recover_file_dest


      ASM別名可以看作是OMF在ASM上的擴(kuò)展,它定義了各種文件在ASM磁盤上的存放位置,因此ASM file的存放路徑和文件命名是循序特定的格式的,格式如下:
 +diskgroup_name/database_name/database file type/tag_name.file_number.incarnation
     這個(gè)完整的名稱叫做FQDN(Fully Qualified Filename Notation)。但是FQDN對(duì)于DBA來說不容易記憶,因此Oracle又提供了ASM Alias來方便管理和記憶。
 
   ASM別名的目的就是為了方便管理和記憶,所以沒有太多的道理可講,但是在使用上有些小技巧需要注意。別名即可以在文件創(chuàng)建之初就指定,也可以在文件創(chuàng)建之后再補(bǔ)上,兩者略有區(qū)別。
  創(chuàng)建ASM別名兩種方法:
  <1>在RDBMS中創(chuàng)建數(shù)據(jù)文件時(shí)就指定別名。
   create tablespace test datafile '+data/test.dbf' size 10m;
   
  <2>在ASM中對(duì)已有的ASM文件創(chuàng)建別名。
  alter diskgroup data add alias '+data/test.dbf' for '+data/ORCL/datafile/test.273.660075820'
  
  這兩種方式的區(qū)別在于,后者指定的別名對(duì)于數(shù)據(jù)庫(kù)不可見。 

8.ASM的限制

        目前ASM只支持?jǐn)?shù)據(jù)庫(kù)文件(包括控制文件、spifle、數(shù)據(jù)文件、日志文件、備份文件),還不支持其他文件。ASM會(huì)檢查每個(gè)文件的文件頭,只有符合要求的才能保存到ASM  中,對(duì)于不能識(shí)別的文件報(bào)ORA-27047:"unable to read the header block or the file"錯(cuò)誤。

上述就是小編為大家分享的Oracle ASM的概念以及工作原理是什么了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)站欄目:OracleASM的概念以及工作原理是什么
分享URL:http://weahome.cn/article/jpjhpj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部