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

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

3

积分

0

好友

6

主题
1#
发表于 2013-1-11 13:39:03 | 查看: 4361| 回复: 6
问题:对于一个ddl操作在0.01秒能就完成了,但是想了解 他过程中acuqire了什么lock怎么做? 注意不是只要看到 TM和TX锁, 要知道这个过程中所有的ENQUEUE LOCK?;
我的回答(第二次的):大师, 您好!  上午你问的那个问题, 我确实不会, 后经了解, 需利用10704事件对其锁进行分析。 我的测试过程是这样的: 开始事件分析:alter session set events '10704 trace name context forever ,level 12';  然后执行一个CREATE 的DDL语句:SQL> create table t22(id int);

Table created.
。 再对其进行关闭: alter session set events '10704 trace name context off';  但当我把创建的对象OBJECT_ID查出来后换成十六进制, 但却到相应的TRACE里文件找不到这个OBJECT_ID所对应的十六进制。
我的版本是:11.2.0.3

求大师解释下, 我为何找不到相应的OBJECT_ID?

ora11g3_ora_9598.trc.txt

200.13 KB, 下载次数: 990

2#
发表于 2013-1-11 14:28:16
oracle@localhost:~$ grep "ksqgtl \*\*\*" ora11g3_ora_9598.trc.txt|grep -v CU
ksqgtl *** TX-000a000c-0000079f mode=6 flags=0x401 timeout=0 ***
ksqgtl *** TM-00000012-00000000 mode=3 flags=0x401 timeout=21474836 ***
ksqgtl *** MR-00000001-00000002 mode=4 flags=0x10000 timeout=21474836 ***
ksqgtl *** TM-00000084-00000000 mode=3 flags=0x401 timeout=21474836 ***
ksqgtl *** TM-00000004-00000000 mode=3 flags=0x401 timeout=21474836 ***
ksqgtl *** TX-000a0013-0000079e mode=6 flags=0x401 timeout=0 ***
ksqgtl *** TM-00000015-00000000 mode=3 flags=0x401 timeout=21474836 ***



ksqgtl *** TM-00000012-00000000 mode=3 flags=0x401 timeout=21474836 ***
ksqgtl *** TM-00000084-00000000 mode=3 flags=0x401 timeout=21474836 ***
ksqgtl *** TM-00000004-00000000 mode=3 flags=0x401 timeout=21474836 ***
ksqgtl *** TM-00000015-00000000 mode=3 flags=0x401 timeout=21474836 ***


0x12=> 18
0x84=>132
0x04=>4
0x15=>21

  1* select object_name,object_id from dba_objects where object_id in (18,132,4,21)
SQL> /

OBJECT_NAME           OBJECT_ID
-------------------- ----------
TAB$                          4
OBJ$                         18
COL$                         21
MIGRATE$                    132

显然create table操作要对TAB$、OBJ$等字典基表做修改


换个浅显易懂的试试

lock table ABC in exclusive mode;

回复 只看该作者 道具 举报

3#
发表于 2013-1-11 14:29:27
后用ALTER语句测试, 可以找到对应的ID,*** 2013-01-11 14:21:13.426
ksqgtl *** TM-00012ec1-00000000 mode=6 flags=0x401 timeout=0 ***
ksqgtl: xcb=0x8fa64d80, ktcdix=2147483647, topxcb=0x8fa64d80
        ktcipt(topxcb)=0x0
然后释放锁:
** 2013-01-11 14:21:13.497
ksqrcl: TM,12ec1,0
ksqrcl: returns 0
除了排它锁以外并没有查看到别的锁。

回复 只看该作者 道具 举报

4#
发表于 2013-1-11 15:03:17
Maclean Liu(刘相兵 发表于 2013-1-11 14:28
oracle@localhost:~$ grep "ksqgtl \*\*\*" ora11g3_ora_9598.trc.txt|grep -v CU
ksqgtl *** TX-000a000c- ...

ksqgtl *** TM-00012ec1-00000000 mode=6 flags=0x401 timeout=21474836 ***
ksqgtl: xcb=0x8fa64d80, ktcdix=2147483647, topxcb=0x8fa64d80
        ktcipt(topxcb)=0x0
这个能查到对象ID: 12EC1, 而明显。 嘿嘿。   学习了!  今天收获真多, 多谢大师指教。 而且,10704事件可以配合10046事件一起诊断异常的队列锁问题。(不过也是在大师的BLOG里看的)

回复 只看该作者 道具 举报

5#
发表于 2013-1-14 08:33:37
哇,刘大上次也问我这个问题,我想了几分钟才想出来。

回复 只看该作者 道具 举报

6#
发表于 2013-1-15 22:06:45
学习学习

回复 只看该作者 道具 举报

7#
发表于 2013-1-15 23:34:31
又复习了一次,真好。

顺便把我那个事件列别载了,学习一下其他事件。

一起进步。

回复 只看该作者 道具 举报

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

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

GMT+8, 2024-11-16 04:37 , Processed in 0.053518 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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