背景

之前,我们了解了lmd进程一些概念,这儿我们学习下另一个重要RAC后台进程,LMS进程。

结论

1,如果lms出现故障,会导致dml事务无法提交,即提交或回退hang住;并且远端节点的DML操作会HANG住

2,lms进程的等待事件和lmd进程的相似,是gcs remote message

引申,即和远端节点的LMS进程进行通讯

3,lms进程出现故障,会引发ipc timeout,如果ipc timeout达到一定期限,会导致RAC节点重启

4,lms进程恢复正常后,由于远端的变更数据积压,需要在对应节点进行实例恢复,以达到数据一致性的要求

5,性能指标gcs messages sent 也是反映数据库DML或活动是否频繁的一个维度,如果其值很高,说明数据库非常繁忙

当然我们说这只是一种维度,不是绝值,毕竟数据库是非常复杂的,要由多个进程协作交互方可正常运行

但它为我们分析问题提供一种思路

6,暂未发现LMS相关的隐含参数,当然也可能是我查找方法不对或理解不深,还要继续学习

7, 10706 event可以分析跟瞎RAC全局队列锁的获取过程

其操作过程:

SQL> select program,spid,pid from v$process where addr='0000000083A62BD0';

PROGRAM                                          SPID                PID

------------------------------------------------ ------------ ----------

oracle@jingfa1 (TNS V1-V3)                       6496                 27

SQL> oradebug setospid 6496

Oracle pid: 27, Unix process pid: 6496, image: oracle@jingfa1 (TNS V1-V3)

SQL> oradebug event 10706 trace name context forever,level 12

Statement processed.

SQL> insert into t_lock values(18,18);

1 row created.

SQL> oradebug event 10706 trace name context off

Statement processed.

SQL> oradebug tracefile_name

/u01/app/oracle/admin/jingfa/udump/jingfa1_ora_6496.trc

测试

----oracle version

SQL> select * from v$version where rownum=1;

BANNER

----------------------------------------------------------------

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi

---lms含义

The LMS process maintains records of the data file statuses and each cached block by recording information in a Global Resource Directory (GRD). The LMS process also controls the flow of messages to remote instances and manages global data block access and transmits block images between the buffer caches of different instances. This processing is part of the Cache Fusion feature.

1,在RAC的GRD即全局资源目录中,维护数据文件的状况,并记录全局缓存中数据块的信息

2,控制发送到远端节点的消息

3,管理在节点间传输数据块以及缓存数据块

4,它也是RAC机制CACHE FUSION功能一部分,也就是没有LMS,CACHE FUSION无从谈起,可见其重要性

----了解lms的作用

SQL> select addr,program,username,pid,spid from v$process where username='oracle' and lower(program) like '%lms%';

ADDR             PROGRAM                                          USERNAME               PID SPID

---------------- ------------------------------------------------ --------------- ---------- ------------

0000000083A58DB0 oracle@jingfa1 (LMS0)                            oracle                   7 30504

--hang lms

SQL> oradebug setospid 30504

Oracle pid: 7, Unix process pid: 30504, image: oracle@jingfa1 (LMS0)

SQL> oradebug suspend

Statement processed

--new session

SQL> select * from t_lock;

A          B

---------- ----------

11          1

2          2

--重复多次测试

SQL> insert into t_lock values(3,3);

1 row created.

SQL> commit;

提交hang住

--resume lms

SQL> oradebug resume

Statement processed.

提交完成

SQL> commit;

Commit complete.

---再看看lms的等待事件

SQL> select sid,serial#,program,event,p1,p1text,p2,p2text,p3,p3text from v$session where paddr='0000000083A58DB0';

SID    SERIAL# PROGRAM                   EVENT                                  P1 P1TEXT                  P2 P2TEXT                  P3 P3TEXT

---------- ---------- ------------------------- ------------------------------ ---------- --------------- ---------- --------------- ---------- ---------------

165          1 oracle@jingfa1 (LMS0)     gcs remote message                     24 waittime                 0 poll                     0 event

--ipc timeout过久,会引发节点重启

Wed Nov 11 04:38:23 2015

IPC Send timeout detected. Receiver ospid 30504

Wed Nov 11 04:38:24 2015

Errors in file /u01/app/oracle/admin/jingfa/bdump/jingfa1_lms0_30504.trc:

Wed Nov 11 04:38:26 2015

Trace dumping is performing id=[cdmp_20151111043845]

Wed Nov 11 04:39:27 2015

Unix process pid: 30504, image: oracle@jingfa1 (LMS0) resumed

Wed Nov 11 04:40:19 2015

Errors in file /u01/app/oracle/admin/jingfa/bdump/jingfa1_lmon_30500.trc:

ORA-29740: evicted by member 1, group incarnation 16

Wed Nov 11 04:40:19 2015

LMON: terminating instance due to error 29740

Wed Nov 11 04:40:19 2015

Errors in file /u01/app/oracle/admin/jingfa/bdump/jingfa1_lmd0_30502.trc:

ORA-29740: evicted by member , group incarnation

Wed Nov 11 04:40:19 2015

Errors in file /u01/app/oracle/admin/jingfa/bdump/jingfa1_lms0_30504.trc:

ORA-29740: evicted by member , group incarnation

Wed Nov 11 04:40:19 2015

System state dump is made for local instance

System State dumped to trace file /u01/app/oracle/admin/jingfa/bdump/jingfa1_diag_30496.trc

Wed Nov 11 04:40:19 2015

Trace dumping is performing id=[cdmp_20151111044019]

Wed Nov 11 04:40:23 2015

Instance terminated by LMON, pid = 30500

---查看下lms进程的TRC文件

[oracle@jingfa1 bdump]$ pwd

/u01/app/oracle/admin/jingfa/bdump

[oracle@jingfa1 bdump]$ ll -lht *lms*

-rw-rw---- 1 oracle oinstall 1.3K Nov 11 04:41 jingfa1_lms0_21223.trc

-rw-r----- 1 oracle oinstall  80K Nov 11 04:40 jingfa1_lms0_30504.trc

-rw-r----- 1 oracle oinstall 369K Nov 11 03:30 jingfa1_lms0_15273.trc

-rw-rw---- 1 oracle oinstall 356K Nov 10 07:28 jingfa1_lms0_21824.trc

-rw-rw---- 1 oracle oinstall 1.3K Nov 10 05:21 jingfa1_lms0_32705.trc

-rw-r----- 1 oracle oinstall 6.1K Nov 10 05:20 jingfa1_lms0_11222.trc

-rw-r----- 1 oracle oinstall 2.0K Nov 10 01:51 jingfa1_lms0_10351.trc

可见lms发送gcs message以及数据块(PI)

0 GCS shadows cancelled, 0 closed

0 GCS resources traversed, 0 cancelled

0 GCS shadows traversed, 0 replayed, 0 duplicates

lms 0 finished replaying gcs resources

0 write requests issued in 1724 GCS resources

0 PIs marked suspect, 0 flush PI msgs

0 write requests issued in 1719 GCS resources

0 PIs marked suspect, 0 flush PI msgs

0 write requests issued in 1676 GCS resources

0 PIs marked suspect, 0 flush PI msgs

0 write requests issued in 1689 GCS resources

0 PIs marked suspect, 0 flush PI msgs

0 write requests issued in 143 GCS resources

0 PIs marked suspect, 0 flush PI msgs

lms 0 finished fixing gcs write protocol

--再从性能指标方面看看

SQL> select statistic#,name,class from v$statname where lower(name) like '%gcs%' and STATISTIC#=44;

STATISTIC# NAME                                                                  CLASS

---------- ---------------------------------------------------------------- ----------

44 gcs messages sent                                                        32

SQL> select v$statname.name,v$sysstat.value from v$sysstat,v$statname where v$sysstat.statistic#=v$statname.statistic# and v$statname.statistic# in (44);

NAME                                                                  VALUE

---------------------------------------------------------------- ----------

gcs messages sent                                                      2840

可见发生重级别DML时,性能指标暴增

SQL> select * from t_lock;

A          B

---------- ----------

11          1

2          2

3          3

3          3

4          4

1          1

2          2

3          3

4          4

5          5

6          6

A          B

---------- ----------

7          7

8          8

9          9

10         10

15 rows selected.

SQL> insert into t_lock select level,level from dual connect by level<=1000000;

1000000 rows created.

SQL> select v$statname.name,v$sysstat.value from v$sysstat,v$statname where v$sysstat.statistic#=v$statname.statistic# and v$statname.statistic# in (44);

NAME                                                                  VALUE

---------------------------------------------------------------- ----------

gcs messages sent                                                      4039

--hang lms

SQL> oradebug setospid 21223

Oracle pid: 7, Unix process pid: 21223, image: oracle@jingfa1 (LMS0)

SQL> oradebug suspend

Statement processed.

SQL> select v$statname.name,v$sysstat.value from v$sysstat,v$statname where v$sysstat.statistic#=v$statname.statistic# and v$statname.statistic# in (44);

NAME                                                                  VALUE

---------------------------------------------------------------- ----------

gcs messages sent                                                      4041

可见发生重量级DML,性能指标只会微量增高

SQL> insert into t_lock select level,level from dual connect by level<=1000000;

--dml hang

SQL> select v$statname.name,v$sysstat.value from v$sysstat,v$statname where v$sysstat.statistic#=v$statname.statistic# and v$statname.statistic# in (44);

NAME                                                                  VALUE

---------------------------------------------------------------- ----------

gcs messages sent                                                      4060

恢复lms,性能指标才会恢复正常,暴增起来

SQL> oradebug resume

Statement processed.

SQL> insert into t_lock select level,level from dual connect by level<=1000000;

1000000 rows created.

SQL> select v$statname.name,v$sysstat.value from v$sysstat,v$statname where v$sysstat.statistic#=v$statname.statistic# and v$statname.statistic# in (44);

NAME                                                                  VALUE

---------------------------------------------------------------- ----------

gcs messages sent                                                      5166

--再通过10706 EVENT分析下全局队列锁的操作

SQL> select program,spid,pid from v$process where addr='0000000083A62BD0';

PROGRAM                                          SPID                PID

------------------------------------------------ ------------ ----------

oracle@jingfa1 (TNS V1-V3)                       6496                 27

SQL> oradebug setospid 6496

Oracle pid: 27, Unix process pid: 6496, image: oracle@jingfa1 (TNS V1-V3)

SQL> oradebug event 10706 trace name context forever,level 12

Statement processed.

SQL> insert into t_lock values(18,18);

1 row created.

SQL> oradebug event 10706 trace name context off

Statement processed.

SQL> oradebug tracefile_name

/u01/app/oracle/admin/jingfa/udump/jingfa1_ora_6496.trc

ksipget: LB,cd381e0a,b3a45175 opt=0x10020 mode=3 timeout=0   ---LB,cd381e0a,b3a45175是什么,opt=0x10020又是什么,说白了表t_lock加3级锁(分析见下)

ksipget: lid=0x82f51e90 res=0 time=62

*** 2015-11-11 05:21:19.228

ksiprls: lid=0x82f51e90 opt=0x0

*** 2015-11-11 05:21:30.797

ksipget: LB,cd381e0a,b3a45175 opt=0x10020 mode=3 timeout=0

ksipget: lid=0x82f51e90 res=0 time=80

*** 2015-11-11 05:21:30.799

ksiprls: lid=0x82f51e90 opt=0x0

*** 2015-11-11 05:21:30.799

ksipget: TM,2860,0 opt=0x10021 mode=2 timeout=0

ksipget: lid=0x82f51e90 res=0 time=29

SQL> oradebug setmypid

Statement processed.

SQL> oradebug dump library_cache 12

Statement processed.

SQL> oradebug tracefile_name

/u01/app/oracle/admin/jingfa/udump/jingfa1_ora_26571.trc

[oracle@jingfa1 bdump]$ more /u01/app/oracle/admin/jingfa/udump/jingfa1_ora_26571.trc|grep -i --color cd381e0a

hash=cd381e0ab3a451752d5c0ad44df74f5e timestamp=11-09-2015 21:49:32

LOCK INSTANCE LOCK: id=LBcd381e0ab3a45175

PIN INSTANCE LOCK: id=NBcd381e0ab3a45175 mode=S release=F flags=[00]

[oracle@jingfa1 bdump]$ more /u01/app/oracle/admin/jingfa/udump/jingfa1_ora_26571.trc|grep -i --color b3a45175

hash=cd381e0ab3a451752d5c0ad44df74f5e timestamp=11-09-2015 21:49:32

LOCK INSTANCE LOCK: id=LBcd381e0ab3a45175

PIN INSTANCE LOCK: id=NBcd381e0ab3a45175 mode=S release=F flags=[00]

[oracle@jingfa1 bdump]$

由上述的内容再上向推导,可知是library object handle,而它又属于bucket 85854,这个对应表t_lock

BUCKET 85854:

LIBRARY OBJECT HANDLE: handle=6fe77340 mutex=0x6fe77470(0)

name=TBS_ZXY.T_LOCK

hash=cd381e0ab3a451752d5c0ad44df74f5e timestamp=11-09-2015 21:49:32

namespace=TABL flags=KGHP/TIM/XLR/[00000020]

kkkk-dddd-llll=0000-0709-0709 lock=N pin=0 latch#=1 hpc=0002 hlc=0002

lwt=0x6fe773e8[0x6fe773e8,0x6fe773e8] ltm=0x6fe773f8[0x6fe773f8,0x6fe773f8]

pwt=0x6fe773b0[0x6fe773b0,0x6fe773b0] ptm=0x6fe773c0[0x6fe773c0,0x6fe773c0]

ref=0x6fe77418[0x6fe77418,0x6fe77418] lnd=0x6fe77430[0x6fe736f8,0x6fe77c60]

LOCK INSTANCE LOCK: id=LBcd381e0ab3a45175 ---1个锁

PIN INSTANCE LOCK: id=NBcd381e0ab3a45175 mode=S release=F flags=[00]  --可见加了2个锁

INVALIDATION INSTANCE LOCK: id=IV0000286009163221 mode=S

LIBRARY OBJECT: object=7e36b610

type=TABL flags=EXS/LOC[0005] pflags=[0000] status=VALD load=0

DATA BLOCKS:

data#     heap  pointer    status pins change whr

----- -------- -------- --------- ---- ------ ---

0 6fe77280 7e36b728 I/-/A/-/-    0 NONE   00

3 7e36aed8 7e367940 I/-/A/-/-    0 NONE   00

8 7e36b910 7e36b3a0 I/-/A/-/-    0 NONE   00

9 7e36ad88 7e36abd0 I/-/A/-/-    0 NONE   00

10 7e36ae10 7e36a7e8 I/-/A/-/-    0 NONE   00

BUCKET 85854 total object count=1

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-1830192/,如需转载,请注明出处,否则将追究法律责任。

oracle lms进程 内存,基于oracle 10.2.0.1 rac学习lms进程系列四相关推荐

  1. oracle lmd0,oracle 10.2.0.1 rac的lmd进程的含义之一

    结论 1,测试环境为oracle 10.2.0.1 rac 2,lmd进程如果异常中断,会导致所属RAC实例重启,并且在关库前会生成一个SYSTEMSTATE DUMP文件 3,lmon进程是监控lm ...

  2. ORACLE 10.2.0.4 rac for aix query gv$instance with ORA-12850

    一.问题现象 oracle 10.2.0.4 rac for aix开启数据库审计后,发现应用连接不上数据库,登陆节点2数据库查询gv$instance视图时提示报错ORA-12850,如下图所示. ...

  3. 在AIX 5.3+HACMP 5.4以上环境安装10gR2 10.2.0.1 RAC CRS Clusterware必须先运行Patch 6718715中的rootpre.sh...

    在AIX 5.3+HACMP 5.4以上环境安装10gR2 10.2.0.1 RAC CRS Clusterware必须先运行Patch 6718715中的rootpre.sh,若不运行该rootpr ...

  4. oracle lmd0,用strace跟踪分析oracle 10.2.0.1 rac lmd进程系列二

    结论: 1,strace -p跟踪lmd进程,是和fd为9及17的2个socket进行通讯 2,这2个socket为 9为socket:[1361566],而17为socket:[1361581] 3 ...

  5. oracle的共享内存段,oracle共享内存段手工清理

    当Oracle数据库意外当机,操作系统内存共享段未释放,便无法重启数据库至nomount状态,此时需要手工清理. 现象: 1.可以看到有2个smon进程 $ ps -ef|grep smon orac ...

  6. oracle 10.2.0.4 rac emca,ORACLE 10G RAC升级10.2.0.4报错

    升级ORACLE CLUSTERWARE执行root102.sh时报如下错误: /usr/lib/hpux64/dld.so: Unable to find library 'libclntsh.so ...

  7. 基于oracle设计与实现,基于Oracle的高校研究生招生系统设计与实现.doc

    基于Oracle的高校研究生招生系统设计与实现 第 6 卷第 7 期 (2010 年 3 月) Computer Knowledge and Technology 电脑知识与技术 E-mail: HY ...

  8. oracle apex 发布应用,基于Oracle APEX的快速Web应用开发

    随着软件技术的飞速发展和Oracle数据库的广泛应用,许多基于Oracle数据库的Web开发工具应运而生,这些工具给开发人员更加快速.高效.便捷地进行Web应用开发提供了莫大的帮助[1].其中,Ora ...

  9. oracle里面的锁,基于oracle中锁的深入理解

    ORACLE里锁有以下几种模式:0:none 1:null 空 2:Row-S 行共享(RS):共享表锁 3:Row-X 行专用(RX):用于行的修改 4:Share 共享锁(S):阻止其他DML操作 ...

最新文章

  1. Devops (1)
  2. 程序员面试之MySQL数据库表的设计
  3. ufs2.0测试软件,【玩机组教程】让你的一加3/3T的ufs2.0闪存速度焕发新生
  4. java xml数据解析_java xml解析,数据读取
  5. C++ - C++ signal的使用
  6. Oracle -----视图
  7. hadoop配置文件_Hadoop分布式集群
  8. Oracle教程之管理UNDO(九)--如何解决Oracle ORA-01555错误
  9. sonar mysql 配置_Sonar配置与使用
  10. 东大oj1155 等凹函数
  11. python中的search的group(0),group(1).........的方法
  12. linux切换桌面的快捷键,SUSE Linux Gnome桌面快捷键整理
  13. 三年级江苏凤凰出版社计算机,苏教版小学信息技术三年级下册教案全集
  14. php如何与微信公众平台连接失败,微信公众平台接入问题,配置失败不知道是哪的原因?...
  15. Lesson28_网络编程
  16. 「学点C语言系列」02 判断年份是否为闰年
  17. 【简单易上手】昇思MindSpore邀你定制专属Diffusion模型
  18. 手机手写签名 php,基于canvas实现手写签名(vue)
  19. [附源码]Nodejs计算机毕业设计木棉堂水果电商平台Express(程序+LW)
  20. 厚物科技《什么是PXI》

热门文章

  1. 从分歧走向融合:图神经网络历经了怎样的演化之路?
  2. 【Proteus仿真】| 51单片机——MAX7219 驱动数码管
  3. Visual Studio Code的下载和安装
  4. 使用ffmpeg进行简单的视频编辑
  5. Unicode编码的理解
  6. html日期格式化引用fmt报错
  7. 为什么亚马逊比淘宝火?淘宝转战亚马逊如何做到月销售额20万美金?
  8. 爬虫--西安二手房房价
  9. 程序员一直在找的日程安排工具
  10. Linux/redhat 有线网络配置