现在的位置: 首页 > 综合 > 正文

日常维护命令上的锁

2012年12月22日 ⁄ 综合 ⁄ 共 3763字 ⁄ 字号 评论关闭
--日常维护命令对性能的影响已经上锁的注意事项


--1 create index  是4级锁  
SQL>Create Index  index_CONTACT_NAME  On  t_to_order_info(CONTACT_NAME) 


SQL>Select * From V$LOCK Where Type='TM' 
ADDR               KADDR              SID   TYPE   ID1      ID2   LMODE   REQUEST   CTIME   BLOCK
00000000D941FAB0   00000000D941FAD8   114   TM     112775   0     4       0         11      0
00000000D941FBB0   00000000D941FBD8	  114	  TM	   18	      0	   3	     0	      11	     0

SQL>Select  aa.OBJECT_NAME,aa.OBJECT_ID,aa.OWNER  From  dba_objects aa Where aa.OBJECT_ID In (112775,18) 
OBJECT_NAME	      OBJECT_ID	OWNER
------------      ---------   ------
OBJ$	            18	         SYS
T_TO_ORDER_INFO	112775	   GCBB




--2 create index online 是2级锁
SQL>Create Index  index_CONTACT_NAME  On  t_to_order_info(CONTACT_NAME) Online 

SQL> Select * From V$LOCK Where Type='TM' ;
 
ADDR             KADDR                   SID TYPE        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK
---------------- ---------------- ---------- ---- ---------- ---------- ---------- ---------- ---------- ----------
00000000D941FAB0 00000000D941FAD8        155 TM           68          0          3          0         60          0
00000000D941FBB0 00000000D941FBD8         60 TM          237          0          3          0         60          0
00000000D941FCB0 00000000D941FCD8        114 TM       112775          0          2          0         40          0
00000000D941FDB0 00000000D941FDD8        114 TM           18          0          3          0         40          0
00000000D941FEB0 00000000D941FED8        160 TM         8779          0          3          0         28          0
 
SQL> Select  aa.OBJECT_NAME,aa.OBJECT_ID,aa.OWNER  From  dba_objects aa Where aa.OBJECT_ID In (68,237,112775,18,8779);
 
OBJECT_NAME                                                                       OBJECT_ID OWNER
-------------------------------------------------------------------------------- ---------- ------------------------------
WRI$_ALERT_OUTSTANDING                                                                 8779 SYS
JOB$                                                                                    237 SYS
SEQ$                                                                                     68 SYS
OBJ$                                                                                     18 SYS
T_TO_ORDER_INFO                                                                      112775 GCBB



 
--3 rebuild index  是4级锁
SQL>Alter Index IDX_T_TO_ORDER_1 Rebuild

SQL> Select * From V$LOCK Where Type='TM'; 
 
ADDR             KADDR                   SID TYPE        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK
---------------- ---------------- ---------- ---- ---------- ---------- ---------- ---------- ---------- ----------
00000000D941FAB0 00000000D941FAD8        155 TM           68          0          3          0          0          0
00000000D941FBB0 00000000D941FBD8        114 TM       112775          0          4          0         18          0
 
--4 rebuild index online  是2级锁
SQL> Alter Index TICKETORDER_MEMBERINFO_FK Rebuild Online 
SQL> Select * From V$LOCK Where Type='TM';
 
ADDR             KADDR                   SID TYPE        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK
---------------- ---------------- ---------- ---- ---------- ---------- ---------- ---------- ---------- ----------
00000000D941FAB0 00000000D941FAD8        114 TM       116055          0          4          0         11          0
00000000D941FBB0 00000000D941FBD8        114 TM       112775          0          2          0         11          0
00000000D941FCB0 00000000D941FCD8        155 TM           68          0          3          0          0          0
 

Online的时候会多出一个临时的对象,在v$lock里面能看见

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

--5 shrink Space Compact  是3级锁
SQL>Alter t_to_order_info shrink Space Compact 
SQL> Select * From V$LOCK Where Type='TM' ;
 
ADDR             KADDR                   SID TYPE        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK
---------------- ---------------- ---------- ---- ---------- ---------- ---------- ---------- ---------- ----------
00000000D941FAB0 00000000D941FAD8        114 TM       106582          0          3          0         27          0
 
SQL> Select  aa.OBJECT_NAME,aa.OBJECT_ID,aa.OWNER  From  dba_objects aa Where aa.OBJECT_ID In (106582);
 
OBJECT_NAME                                                                       OBJECT_ID OWNER
-------------------------------------------------------------------------------- ---------- ------------------------------
T_TO_ORDER_INFO                                                                      106582 GCAA


--6  shrink Space开始的时候还是3级锁,在第二部调整HWM位置的时候上6级锁
SQL> Alter table t_to_order_info shrink Space;
SQL> Select * From V$LOCK Where Type='TM' ;
 
ADDR             KADDR                   SID TYPE        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK
---------------- ---------------- ---------- ---- ---------- ---------- ---------- ---------- ---------- ----------
00000000D941FAB0 00000000D941FAD8        114 TM       106582          0          3          0         15          0
 

--7 exec dbms_stats.gather_table_stats 这个命令不会上锁,只是非常消耗i/o资源
Sql> exec dbms_stats.gather_table_stats('gcaa','t_to_order_info'); 
SQL> Select * From V$LOCK Where Type='TM' ;
 
ADDR             KADDR                   SID TYPE        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK
---------------- ---------------- ---------- ---- ---------- ---------- ---------- ---------- ---------- ----------


备注:
segment shrink分为两个阶段: 
1、数据重组(compact):通过一系列insert、delete操作,将数据尽量排列在段的前面。
在这个过程中需要在表上加RX锁,即只在需要移动的行上加锁。由于涉及到rowid的改
变,需要enable row movement.同时要disable基于rowid的trigger.这一过程对业务影
响比较小。 
 
2、HWM调整:第二阶段是调整HWM位置,释放空闲数据块。此过程需要在表上加X锁,
会造成表上的所有DML语句阻塞。在业务特别繁忙的系统上可能造成比较大的影响。 
 
shrink space compact只执行第一个阶段。        --这是3级锁
shrink space语句两个阶段都执行。              --这是6级锁
 
如果系统业务比较繁忙,可以先执行shrink space compact重组数据,然后在业务不忙
的时候再执行shrink space降低HWM释放空闲数据块。 
作用:压缩释放空闲空间,加快全表扫描的速度



【上篇】
【下篇】

抱歉!评论已关闭.