Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

163

积分

0

好友

12

主题
1#
发表于 2014-2-27 15:53:45 | 查看: 4602| 回复: 5
本帖最后由 不了峰 于 2014-2-27 15:56 编辑

环境:os: RHEL5.6 64位, Oracle RAC 10.2.0.5 64bit (两节点)

遇到的问题:
对一张分区表进行增加分区时,遇到library cache lock ,一直hang住,无法执行成功
sql语句大致如下:
  1. ALTER TABLE CDMA_CDL_ZTE_SUM_ECIORPT_T ADD PARTITION Q20140221 VALUES LESS THAN ( '2014-02-22')...
  2. (      
  3.         subpartition  Q20140221_593  values  ('593' ) tablespace CDL_DATA_BIG,
  4. ....
复制代码
查看这个会话 v$session_wait发现他的等待事件是library cache lock .
这时desc CDMA_CDL_ZTE_SUM_ECIORPT_T 这张表,也是遇到library cache lock ,并也一直hang住。
(这个的信息可能会干扰分析: 这个表有1千多个分区,每个分区又有子分区,所以总共有7千多个子分区)

于是把这里面所有的library cache lock 的会话kill后,desc CDMA_CDL_ZTE_SUM_ECIORPT_T可以成功,但是增加分区还是无法成功

关闭其中一个节点上的实例(实例2),这时RAC只有一个实例在运行,再执行增加表分区还是无法成功。
于是对该实例做了一个system_dump ,参考了ID 122793.1,采用第一种方法做了systemdump

  1. $sqlplus '/ as sysdba'
  2. oradebug setmypid
  3. oradebug unlimit
  4. oradebug dump systemstate 266
  5. oradebug tracefile_name
复制代码
得到trace文件
cdrdb1_ora_20695.trc 见附近

注:其中PROCESS 89 这个会话就是上面执行增加表分区sql 的会话~


想问的是,这个会话在等待哪个会话 ?

用ass1038.awk得到的结果如下:

  1. 88: waiting for 'SQL*Net message from client'
  2. 89: waiting for 'library cache lock'   [LOCK: handle=301bbe080]
  3.      Cmd: Create Table
  4. ...
  5. 92: last wait for 'ksdxexeotherwait'   
  6. ..
  7. 191:last wait for 'SQL*Net message from client'[LOCK: handle=301bbe080]
  8.      Cmd: Select
  9. Blockers
  10. ~~~~~~~~

  11.                     Resource Holder State
  12.       LOCK: handle=301bbe080    ??? Blocker
  13. No blockers seen.

  14. Object Names
  15. ~~~~~~~~~~~~
  16. LOCK: handle=301bbe080                                       

  17. Summary of Wait Events Seen (count>10)
  18. ~~~~~~~~~~~~~~~~~~~~~~~~~~~
  19.   No wait events seen more than 10 times           
复制代码
用ass109.awk得到的结果如下:
..省略上面相同

  1. 89: waiting for 'library cache lock'   [LOCK: handle=301bbe080]
  2.      Cmd: Create Table
  3. 191:last wait for 'SQL*Net message from client'[LOCK: handle=301bbe080]
  4.      Cmd: Select
  5. Blockers
  6. ~~~~~~~~

  7.         Above is a list of all the processes. If they are waiting for a resource
  8.         then it will be given in square brackets. Below is a summary of the
  9.         waited upon resources, together with the holder of that resource.
  10.         Notes:
  11.         ~~~~~
  12.          o A process id of '???' implies that the holder was not found in the
  13.            systemstate.

  14.                     Resource Holder State
  15.       LOCK: handle=301bbe080    ??? Blocker

  16. Object Names
  17. ~~~~~~~~~~~~
  18. LOCK: handle=301bbe080  TABL:PLMS.CDMA_CDL_ZTE_SUM_ECIORPT_T  
复制代码
感觉通过systemdump也没有找到哪个会话是阻塞者~~

我后面是解决是,启动刚才关闭的实例2,再半闭实例1后,
增加表分区 执行成功
再打开实例1后,即现在RAC两节点都在运行
增加表分区,执行成功

想问的是,是不是真的就没有找到谁是阴塞者,难道是process 191这个会话??

谢谢!   

注:ass109.zip是ass109.log输出,ass1038.zip是ass1038.log
cdrdb1_ora_20695.zip (4.37 MB, 下载次数: 874)

ass1038.zip (1.78 KB, 下载次数: 1276)

ass109.zip (1.29 KB, 下载次数: 1310)

6#
发表于 2014-2-28 14:03:34
Maclean Liu(刘相兵 发表于 2014-2-28 13:30
1、blocker可能在其他节点
2、 如果下次仍发生可以做 systemstate dump 267
3、同时收集 http://www.askm ...

ok,谢谢   ~

回复 只看该作者 道具 举报

5#
发表于 2014-2-28 13:30:04

1、blocker可能在其他节点
2、 如果下次仍发生可以做 systemstate dump 267
3、同时收集 http://www.askmaclean.com/archiv ... on-racdiag-sql.html
4、 这个问题 也可能是PMON没有回收dead process所致

回复 只看该作者 道具 举报

4#
发表于 2014-2-28 08:40:20
Maclean Liu(刘相兵 发表于 2014-2-27 22:26
关键词
RAC + 10.2.0.5 + library cache lock+ 找不到 blocker

LCK wait for ksxr poll remote instances

当时我把另一个实例关闭了~还出现这个

回复 只看该作者 道具 举报

3#
发表于 2014-2-27 22:26:20
关键词
RAC + 10.2.0.5 + library cache lock+ 找不到 blocker

LCK wait for ksxr poll remote instances

回复 只看该作者 道具 举报

2#
发表于 2014-2-27 17:02:14
数据库两节点 一定在10-10-2012 19:18:08 这个时间点,都重启过

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-21 10:13 , Processed in 0.051952 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569