共計 6136 個字符,預(yù)計需要花費(fèi) 16 分鐘才能閱讀完成。
這篇文章主要介紹“oracle rac 的 lmd 進(jìn)程怎么理解”,在日常操作中,相信很多人在 oracle rac 的 lmd 進(jìn)程怎么理解問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”oracle rac 的 lmd 進(jìn)程怎么理解”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學(xué)習(xí)吧!
結(jié)論
1, 測試環(huán)境為 oracle 10.2.0.1 rac
2,lmd 進(jìn)程如果異常中斷,會導(dǎo)致所屬 RAC 實例重啟,并且在關(guān)庫前會生成一個 SYSTEMSTATE DUMP 文件
3,lmon 進(jìn)程是監(jiān)控 lmd 進(jìn)程,即 lmd 進(jìn)程如果死掉,會由 lmon 進(jìn)程重啟它
4,lmd 進(jìn)程負(fù)責(zé)全局隊列服務(wù),即 GES, 說白了,就是管理跨 RAC 多實例的資源請求,由此可見 LMD 進(jìn)程的重要性,如果 LMD 出現(xiàn)故障,數(shù)據(jù)庫 DML 操作會 HANG 住
進(jìn)而會引發(fā) RAC 節(jié)點間的 IPC 通訊延時
5,IPC 通訊延時會產(chǎn)生對應(yīng)的 LMD 的 TRACE FILE
測試
–lmd 含義
lmd 進(jìn)程是負(fù)責(zé)全局隊列服務(wù)的進(jìn)程,即 GES;
它是負(fù)責(zé)每個 RAC 實例來自遠(yuǎn)端 RAC 節(jié)點的資源請求;并且它是一個 DAEMON 進(jìn)程,也就是說會由一個監(jiān)控進(jìn)程保護(hù)它,如果它不存在,由監(jiān)控進(jìn)程重啟它
– 可見 lmd 進(jìn)程如果異常中斷,會直接導(dǎo)致 RAC 節(jié)點強(qiáng)制關(guān)閉,并且在關(guān)閉實例前生成一個 systemstate dump,以供分析
[oracle@jingfa1 ~]$ ps -ef|grep lmd
oracle 4774 1 0 Nov09 ? 00:00:31 asm_lmd0_+ASM1
oracle 11220 1 0 02:13 ? 00:00:15 ora_lmd0_jingfa1
oracle 30706 30376 0 05:19 pts/3 00:00:00 grep lmd
[oracle@jingfa1 ~]$ kill -9 11220
Tue Nov 10 05:20:03 2015
Errors in file /u01/app/oracle/admin/jingfa/bdump/jingfa1_pmon_11212.trc:
ORA-00482: LMD* process terminated with error
Tue Nov 10 05:20:03 2015
PMON: terminating instance due to error 482
Tue Nov 10 05:20:03 2015
Errors in file /u01/app/oracle/admin/jingfa/bdump/jingfa1_lms0_11222.trc:
ORA-00482: LMD* process terminated with error
Tue Nov 10 05:20:03 2015
System state dump is made for local instance
System State dumped to trace file /u01/app/oracle/admin/jingfa/bdump/jingfa1_diag_11214.trc
Tue Nov 10 05:20:03 2015
Trace dumping is performing id=[cdmp_20151110052003]
Tue Nov 10 05:20:08 2015
Instance terminated by PMON, pid = 11212
– 緊接實例又會自動重啟
Tue Nov 10 05:21:05 2015
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
可見 lmd 進(jìn)程又會自動重啟
[oracle@jingfa1 ~]$ ps -ef|grep lmd
oracle 3474 30376 0 05:23 pts/3 00:00:00 grep lmd
oracle 4774 1 0 Nov09 ? 00:00:31 asm_lmd0_+ASM1
oracle 32703 1 0 05:21 ? 00:00:00 ora_lmd0_jingfa1
上述說 lmd 進(jìn)程的健康是由其監(jiān)控進(jìn)程負(fù)責(zé)的,經(jīng)查官方手冊是 lmon 進(jìn)程,LMON 進(jìn)程負(fù)責(zé)每個 RAC 實例跨實例或者叫全局隊列及資源的管理,以及全局隊列鎖的恢復(fù)操作
[oracle@jingfa1 bdump]$ ps -ef|grep lmon
oracle 4772 1 0 Nov09 ? 00:00:29 asm_lmon_+ASM1
oracle 19857 30376 0 05:34 pts/3 00:00:00 grep lmon
oracle 32701 1 0 05:21 ? 00:00:02 ora_lmon_jingfa1
[oracle@jingfa1 bdump]$ kill -9 32701
可見如果異常中斷 LMON,其所屬的 LMD 進(jìn)程也會強(qiáng)制關(guān)閉
[oracle@jingfa1 bdump]$ ps -ef|grep lmd
oracle 4774 1 0 Nov09 ? 00:00:32 asm_lmd0_+ASM1
oracle 21171 30376 0 05:34 pts/3 00:00:00 grep lmd
可見只要異常中斷 lmon 進(jìn)程,會強(qiáng)制重啟數(shù)據(jù)庫實例
Tue Nov 10 05:34:18 2015
Errors in file /u01/app/oracle/admin/jingfa/bdump/jingfa1_pmon_32695.trc:
ORA-00481: LMON process terminated with error
Tue Nov 10 05:34:18 2015
PMON: terminating instance due to error 481
Tue Nov 10 05:34:18 2015
System state dump is made for local instance
System State dumped to trace file /u01/app/oracle/admin/jingfa/bdump/jingfa1_diag_32697.trc
Tue Nov 10 05:34:18 2015
Trace dumping is performing id=[cdmp_20151110053418]
Tue Nov 10 05:34:23 2015
Instance terminated by PMON, pid = 32695
Tue Nov 10 05:35:19 2015
Starting ORACLE instance (normal)
可見 lmon 及 lmd 會自動重啟
[oracle@jingfa1 bdump]$ ps -ef|grep lmon
oracle 4772 1 0 Nov09 ? 00:00:30 asm_lmon_+ASM1
oracle 21820 1 0 05:35 ? 00:00:01 ora_lmon_jingfa1
oracle 27926 30376 0 05:39 pts/3 00:00:00 grep lmon
[oracle@jingfa1 bdump]$ ps -ef|grep lmd
oracle 4774 1 0 Nov09 ? 00:00:33 asm_lmd0_+ASM1
oracle 21822 1 0 05:35 ? 00:00:00 ora_lmd0_jingfa1
oracle 28028 30376 0 05:39 pts/3 00:00:00 grep lmd
引申下,也就是說肯定操作系統(tǒng)層面會有某種機(jī)制,確保 lmon 及 lmd 進(jìn)程異常中斷后,會重啟它們,哪這種機(jī)制到底是什么呢?
經(jīng)分析操作系統(tǒng)層面的各個進(jìn)程,主要是 /etc/init.d 下,對比后發(fā)現(xiàn) lmon 及其所屬 lmd 是隸屬于 ORACLE 層面,而非集群層面,沒有對應(yīng)的進(jìn)程控制它們,
我們換個思路分析,與 lmd 進(jìn)程相關(guān)的參數(shù)有哪些,其含義是什么?
NAME_1 VALUE_1 DESC1
————————————————– ————————————————– ————————————————–
_lm_lmd_waittime 8 default wait time for lmd in centiseconds
—node1
SQL select addr,program,username,pid,spid from v$process where username= oracle and spid=21822;
ADDR PROGRAM USERNAME PID SPID
—————- ———————————————— ————— ———- ————
0000000083A585C8 oracle@jingfa1 (LMD0) oracle 6 21822
–node2
SQL select addr,program,username,pid,spid from v$process where username= oracle and spid=668;
ADDR PROGRAM USERNAME PID SPID
—————- ———————————————— ————— ———- ————
0000000083A585C8 oracle@jingfa2 (LMD0) oracle 6 668
–node2
SQL conn tbs_zxy/system
Connected.
SQL update t_lock set a=11 where a=1;
1 row updated.
–node1
SQL update t_lock set a=1111 where a=1;
–hang 住
可見上述參數(shù)并不直接與鎖的檢測有關(guān)喲,但是 lmd 是和全局鎖有關(guān)的
換個思路,如果 oradebug 模擬暫停 lmd, 再產(chǎn)生全局鎖會如何呢
—node1
暫停 lmd
SQL oradebug setospid 21822
Oracle pid: 6, Unix process pid: 21822, image: oracle@jingfa1 (LMD0)
SQL oradebug suspend
Statement processed.
Tue Nov 10 06:03:44 2015
Unix process pid: 21822, image: oracle@jingfa1 (LMD0) flash frozen
—node2
暫停 lmd
SQL oradebug setospid 668
Oracle pid: 6, Unix process pid: 668, image: oracle@jingfa2 (LMD0)
SQL oradebug suspend
Statement processed.
Tue Nov 10 06:06:08 2015
Unix process pid: 668, image: oracle@jingfa2 (LMD0) flash frozen
—node2
SQL update t_lock set a=11 where a=1;
1 row updated.
–node1
SQL update t_lock set a=1111 where a=1;
–hang 住
現(xiàn)在開始觀察節(jié)點 1 及節(jié)點 2 的告警日志
–node2
Tue Nov 10 06:09:42 2015
IPC Send timeout detected.Sender: ospid 682 – 可見發(fā)送進(jìn)程是 SMON 進(jìn)程
Receiver: inst 1 binc 432326879 ospid 21822 – 可見接受者是 NODE1 的 LMD 進(jìn)程
Tue Nov 10 06:09:45 2015
IPC Send timeout to 0.0 inc 20 for msg type 12 from opid 12 – 同上,接受者也是 SMON 進(jìn)程
Tue Nov 10 06:09:45 2015
Communications reconfiguration: instance_number 1
Tue Nov 10 06:09:45 2015
IPC Send timeout detected.Sender: ospid 696 – 可見是 MMON 進(jìn)程為發(fā)送進(jìn)程
Receiver: inst 1 binc 432326879 ospid 21822 – 可見接受進(jìn)程是節(jié)點的 lmd 進(jìn)程
Tue Nov 10 06:09:48 2015
IPC Send timeout to 0.0 inc 20 for msg type 12 from opid 15 — 同上,接受者為 mmon 發(fā)送進(jìn)程
–node1
Tue Nov 10 06:09:23 2015
IPC Send timeout detected. Receiver ospid 21822 – 可見接受為 LMD 進(jìn)程
Tue Nov 10 06:09:23 2015
Errors in file /u01/app/oracle/admin/jingfa/bdump/jingfa1_lmd0_21822.trc: – 產(chǎn)生一個 LMD 的 TRACE 文件
IPC Send timeout detected. Receiver ospid 21822 – 同上
Tue Nov 10 06:09:27 2015
Errors in file /u01/app/oracle/admin/jingfa/bdump/jingfa1_lmd0_21822.trc:
由上可見 lmd 確實與全局鎖獲取相關(guān),如果 LMD 進(jìn)程出現(xiàn)故障,會導(dǎo)致 RAC2 個節(jié)點通訊出現(xiàn)問題
[oracle@jingfa2 bdump]$ ps -ef|grep 682
oracle 682 1 0 02:14 ? 00:00:01 ora_smon_jingfa2
oracle 7157 13004 0 06:15 pts/1 00:00:00 grep 682
SQL select spid,pid,program from v$process where spid=696;
SPID PID PROGRAM
———— ———- ————————————————
696 15 oracle@jingfa2 (MMON)
到此,關(guān)于“oracle rac 的 lmd 進(jìn)程怎么理解”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>