캠핑과 개발

오라클을 사용할때 

어느 순간 데이터가 삭제가 않되는 상태가 발생했다. 

일명 테이블에 락이 걸린것이다.

테이블에 락이 걸리는 이유 사용중 비정상적이 종료로 인해서 발생한다.


락을 제거하기 위해서는 SYSTEM 계정(관리자)으로 접근해서 작업을 진행해야 한다.

일반 계정으로는 불가능하다.

 

1 .락이 걸린 테이블이 유무 확인

select *
from v$locked_object
where oracle_username = 'oracle user name'
; 


2 .락이 걸려있는 테이블 갯수 확인

SELECT count(*)
FROM v$locked_object vo , dba_objects do 
WHERE vo.object_id = do.object_id

 3. 락 걸린 섹션 확인 

select a.sid, a.serial#

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'


 4.락이 걸린 테이블명을 알고 있은 경우.

SELECT A.SID, A.SERIAL# 

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='테이블명'

결과  값

SESSION_ID/SERIAL_NO/OS_USER_NAME/ORACLE_USERNAME/STATUS
24                1102            Administrator       ABCDWRK                  INACTIVE
92                4665            OPS$ABCD         OPS$ABCDUSR           INACTIVE
92.               4665            OPS$ABCD         OPS$ABCDUSR           INACTIVE


 

형식 

alter system kill session 'sid, serial#'

sid : session_id

serial# : serial_no 을 의미한다.


alter system kill session '24, 1102'; 

commit ;

 

 

출처 : http://twinstarbox.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-%ED%85%8C%EC%9D%B4%EB%B8%94-%EB%9D%BD-%EC%A3%BC%ED%9A%8C-%ED%95%B4%EC%A0%9C-%EB%B0%A9%EB%B2%95

'DEVELOPMENT > Database' 카테고리의 다른 글

ORACLE 리스너 시작 종료  (0) 2014.04.02
ORACLE 테이블 스페이스 관리 명령  (0) 2014.04.02
MySQL Table Schema 확인  (0) 2012.05.17
mysql DB 백업  (0) 2012.05.17
MySQL table 용량 확인  (0) 2012.05.17

기본적으로 Bitmap 인스턴스는, 참조하고 있는 BitmapData 객체에 setPixcel32()나 setPixel()이 호출되는 상황을 알아챈다.
비트맵의 모든 픽셀의 색상을 바꾸게 될 경우 setPixcel32()나 setPixcel()이 한프레임에서 자주 호출될때는 퍼포먼스가 떨어지게 되는데 이런경우 퍼포먼스 향상을 위해 lock()을 사용한다.

lock()을 호출하게 되면 AS는 Bitmap 객체가 setPixel32()나 setPixcel()의 실행을 알 수 없게 강제로 막는다.
그래서 연속된 setPixcel()이 호출되는 경우는 lock()을 호출하는 편이 좋다. 호출된 후 변경하려던 모든 픽셀이 변경이 완료된 경우는 unlock()을 호출해주면 Bitmap 객체가 모든 알림을 받을 수 있게 된다. 


var bitmapData:BitmapData = new BitmapData(1024, 1024, false);
var bmp:Bitmap = new Bitmap(bitmapData);
 
//퍼포먼스 향샹을 위해 lock을 걸어준다.
bitmapData.lock();    
    
for(var i:uint = 0; i < bitmapData.height; i++){
    for(var j:uint = 0; j < imgData.width; j++){
        bitmapData.setPixel(j, i, Math.floor(Math.random()*0xffffffff));
    }
}

bitmapData.unlock(); //lock 해제
 
container.addChild(bmp);