http://www.sqler.com/319831

안녕하세요?

 

일전에 제가 엑셈에 교육받으러 갔을 때 받은 자료를 기재해서 올립니다.

 

1.     Oracle

-       Lock Compatibility

Requested mode

Existing granted mode

N

SS

SX

S

SSX

X

Null (N)

Yes

Yes

Yes

Yes

Yes

No

Sub-Shared (SS)

Yes

Yes

Yes

No

No

No

Sub-Exclusive (SX)

Yes

Yes

No

No

No

No

Shared (S)

Yes

No

No

Yes

No

No

Shared Sub-Exclusive (SSX)

Yes

No

No

No

No

No

Exclusive (X)

Yes

No

No

No

No

No

 

2.     SQL Server

-       Lock Type (Lock Resource)

Lock Resource

Description

RID

Heap내의 특정 행 보호

KEY

Serializable Transaction에서 Key Range Index 행 보호

PAGE

8-kilobyte(KB) Page 보호

EXTENT

연속적인 8개의 page 보호

HOBT

Heap or B-tree 보호

TABLE

모든 데이터와 인덱스를 포함한 전체 테이블 보호

FILE

Database file 보호

APPLICATION

Application-specified resource 보호

METADATA

Metadata 보호

ALLOCATION UNIT

Allocation unit 보호

DATABASE

Database 보호

 

-       Lock Mode

Mode

Description

Exclusive Lock (X)

- INSERT, UPDATE, DELETE와 같이 데이터를 변경하는 작업에

대해 사용

Intent Lock

- Lock Escalation을 위해 Table/Page에 사용

1)     Intent Shared (IS)

2)     Intent Exclusive (IX)

3)     Shared with Intent Exclusive (SIX)

4)     Intent Update (IU)

5)     Shared Intent Update (SIU)

6)     Update Intent Exclusive (UIX)

Schema Lock

- Table Schema에 관련된 작업 수행 시에 사용

 (Schema Modification (Sch-M), Schema Stability (Sch-S))

Bulk Update Lock (BU)

- Table Bulk Copy 혹은 TABLOCK Hint 사용 시 발생

Key-Range Lock

- Serializable Transaction에 의해 읽혀진 Key 구간에 대해

다른 Transaction Insert 방지

 

-       Intent Lock Compatibility

Requested mode

Existing granted mode

IS

S

U

IX

SIX

X

Intent Shared (IS)

Yes

Yes

Yes

Yes

Yes

No

Shared (S)

Yes

Yes

Yes

No

No

No

Update (U)

Yes

Yes

No

No

No

No

Intent Exclusive (IX)

Yes

No

No

Yes

No

No

Shared with Intent Exclusive (SIX)

Yes

No

No

No

No

No

Exclusive (X)

No

No

No

No

No

No

 

 

사실상 Oracle 관련해서 들은 내용은 크게 기억이 안 나네요. -_-

oracle lock 확인 및 제거


--락걸린 테이블 확인
SELECT  do.object_name,  do.owner,  do.object_type,  do.owner,
  vo.xidusn,  vo.session_id,  vo.locked_mode
FROM
  v$locked_object vo ,  dba_objects do
WHERE   vo.object_id = do.object_id ;
  
 
--해당테이블이 락에 걸렸는지.. 
SELECT   A.SID,  A.SERIAL#,  B.TYPE,  C.OBJECT_NAME
FROM   V$SESSION A,  V$LOCK B,  DBA_OBJECTS C
WHERE   A.SID=B.SID AND  B.ID1=C.OBJECT_ID
   AND  B.TYPE='TM'  AND  C.OBJECT_NAME IN ('테이블명');
    
 
 /* 락발생 사용자와 sql, object 조회 */

SELECT   distinct x.session_id,  a.serial#,
  d.object_name,  a.machine,  a.terminal,
  a.program,  b.address,  b.piece,  b.sql_text
FROM  v$locked_object x,  v$session a,  v$sqltext b,  dba_objects d
WHERE  x.session_id = a.sid  and
  x.object_id = d.object_id  and
  a.sql_address = b.address 
order by b.address,b.piece;

 

/* 락 발생 사용자확인 */

SELECT   distinct x.session_id,  a.serial#,
  d.object_name,  a.machine,  a.terminal,  a.program,
  a.logon_time ,  'alter system kill session ''' || a.sid || ',  ' || a.serial# || ''';'
FROM   gv$locked_object x, gv$session a,  dba_objects d
WHERE   x.session_id = a.sid  and  x.object_id = d.object_id
order by logon_time; 


/* 접속 사용자 제거 */

--alter system kill session 'session_id,serial#';
alter system kill session '26,6044'; 

 

 

/* 현재 접속자의 sql 분석 */

SELECT   distinct a.sid,  a.serial#,
  a.machine,  a.terminal,  a.program,
  b.address,  b.piece,  b.sql_text
FROM   v$session a,  v$sqltext b
WHERE   a.sql_address = b.address
order by a.sid, a.serial#,b.address,b.piece;

+ Recent posts