카테고리 보관물: ORACLE

Oracle Lock Table 처리방법

Lock Table 찾기

SELECT T1.OBJECT_NAME, 
	   DECODE(T2.LOCKED_MODE,2,'ROW SHARE',3,'ROW EXCLUSIVE',4,'SHARE',5,'SHARE ROW EXCLUSIVE','OTHERS') AS LOCK_MODE
FROM DBA_OBJECTS T1, V$LOCKED_OBJECT T2
WHERE T1.OBJECT_ID = T2.OBJECT_ID;

Lock Table을 발생시킨 세션 ID 찾기

SELECT A.SESSION_ID AS SESSION_ID, 
	   B.SERIAL# AS SERIAL_NO,
       A.OS_USER_NAME AS OS_USER_NAME,
       A.ORACLE_USERNAME AS ORACEL_USERNAME,
       B.STATUS AS STATUS
FROM V$LOCKED_OBJECT A, V$SESSION B
WHERE A.SESSION_ID = B.SID;

해당되는 세션 죽이기

ALTER SYSTEM KILL SESSION 'SESSION_ID,SERIAL_NO';

TO_CHAR 공백 제거하기

오라클로 문자열 합치기를 하는데 포맷을 위해서 TO_CHAR을 사용하니 공백이 포함되어서 문자열이 합쳐진다.
난 절대로 공백을 넣고 싶지 않은데 말이다…

TO_CHAR을 사용하여 문자열 합치기를 할 때 공백을 제거하는 방법

  • 문자열에 합쳐진 공백은 숫자를 표현할 때 양수/음수를 위한 예비된 자리
  • 양수일때는 공백이 나오며 음수일때는 -가 나옴
  • 해결방법은 TO_CHAR의 포맷형식 앞에 FM을 붙여주면 된다.
    1. 공백이 포함된 문자열
      SELECT 'TO_CHAR' || TO_CHAR('12345', '0000009') AS "RESULT"
      FROM DUAL;
      
      -- 결과 : TO_CHAR 0012345
    2. 공백이 제거된 문자열
      SELECT 'TO_CHAR' || TO_CHAR('12345', 'FM0000009') AS 'RESULT'
      FROM DUAL;
      
      -- 결과 : TO_CHAR0012345