-- Lock 확인
SELECT SUBSTR(C.OBJECT_NAME,1,20),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';
   
-- Lock 해제   
ALTER SYSTEM KILL SESSION 'SID, SERIAL#';

-- 전체검색해서 KILL STATEMENT 생성
SELECT C.OBJECT_NAME, 'ALTER SYSTEM KILL SESSION ''' || 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';

Posted by 좀모씨

컬럼명 검색
select table_name, column_name from all_tab_columns where column_name like '%컬럼명%';

Update for Select
- A 테이블의 chg_id 값이 주민번호로 들어가야 하는데 로직상 실수로 인해 Email 주소의 ID 부분으로 입력되었다.
- 이럴때 사용자 정보 B테이블을 읽어서 주민번호로 A테이블을 update 하고자 한다.

Update A set chg_id =
    (Select jumin from B where substr(email, 1, instr(email, '@', 1) -1) = A.chg_id);

순위매기기
1.RANK
    RANK() OVER (
    [PARTITION BY <value expression1> [, ...]]
    ORDER BY <value expression2> [collate clause] [ASC|DESC]
    [NULLS FIRST|NULLS LAST] [, ...] )
    *동순위일때 건너뜀(1,1,1,3,3,5)

2.DENSE_RANK
    DENSE_RANK() OVER (
    [PARTITION BY <value expression1> [, ...]]
    ORDER BY <value expression2> [collate clause] [ASC|DESC]
    [NULLS FIRST|NULLS LAST] [, ...] )
    *동순위일때 연속됨(1,1,1,2,2,3)

DATA : A,A,A,B,B,C


테이블 LOCK 확인 및 해제

SELECT A.SID
     , A.SERIAL#
     , A.USERNAME
     , A.PROCESS
     , B.OBJECT_NAME
     , DECODE (C.LMODE, 2, 'RS', 3, 'RX', 4, 'S', 5, 'SRX', 8, 'X', 'NO') TABLE_LOCK
     , DECODE (A.COMMAND, 2, 'INSERT', 3, 'SELECT', 6, 'UPDATE', 7, 'DELETE', 12, 'DROP', 6, 'LOCK', 'UNKNOWN') SQL
     , DECODE (A.LOCKWAIT, NULL, 'NO WAIT', 'WAIT') STATUS
FROM   V$SESSION A, DBA_OBJECTS B, V$LOCK C
WHERE  A.SID = C.SID
AND    B.OBJECT_ID = C.ID1
AND    C.TYPE = 'TM'
AND    A.USERNAME = 'USER_NAME';


SELECT SUBSTR(C.OBJECT_NAME,1,20),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';
    
    
ALTER SYSTEM KILL SESSION 'SID, SERIAL';

* 업무용으로 간혹 사용하게 되는 것들 중 외우고 다니기 귀찮은 거 나중에 또 검색하기 싫어서 지속적으로 업데이트할 예정임.

Posted by 좀모씨

지금 개발하고 있는 DB 세션 유지 시간이 너무 짧아서 코딩하다가 쿼리 한 번 날리려면 다시 로그인 하는 완전히 귀찮은 상황이었는데, 또 우리의 구글신께서 알려주셨습니다.



사용하고 있는 버전은 9.7.2.5 입니다.
Session Browser를 열면 아래와 같이 Refresh Time을 설정할 수 있습니다. 



이제 Session Browser를 닫지 않고 Editor에서 쿼리 날리면 됩니다. 지긋지긋한 Session 끊김 문제가 이렇게 해결되었습니다. 

\(^o^)/


단, 다른 버전에서는 Session Browser가 DBA메뉴 아래에 있을 수도 있습니다.





Posted by 좀모씨

Oracle Database 10g에 추가된 새로운 기능을 이용하여 문자 데이터의 검색, 처리 능력을 극적으로 개선할 수 있습니다. 정규 표현식(regular expression)이라 불리는 이 기능은, 텍스트 패턴을 기술하기 위한 일종의 표기법으로, 이미 오래 전부터 다양한 프로그래밍 언어와 UNIX 유틸리티를 통해 지원되어 왔습니다.

....(후략)

Posted by 좀모씨

테이블이 FK로 묶여있을 때 상위테이블에서 데이터를 삭제하려고 하면 볼 수 있는 에러.
매칭된 컬럼을 보고 싶다면 아래의 쿼리를 날려주자.

SELECT PARENTCOLS.OWNER || '.' || PARENT.TABLE_NAME || '.' || PARENTCOLS.COLUMN_NAME || ' matches to ' || CHILDCOLS.OWNER || '.' || CHILD.TABLE_NAME || '.' || CHILDCOLS.COLUMN_NAME
  FROM ALL_CONS_COLUMNS CHILDCOLS, ALL_CONS_COLUMNS PARENTCOLS, ALL_CONSTRAINTS CHILD, ALL_CONSTRAINTS PARENT
 WHERE CHILDCOLS.OWNER = 'OWNER'
   AND CHILDCOLS.CONSTRAINT_NAME = 'SYS_CODE'
   AND CHILDCOLS.OWNER = CHILD.OWNER
   AND CHILDCOLS.CONSTRAINT_NAME = CHILD.CONSTRAINT_NAME
   AND CHILD.R_OWNER = PARENT.OWNER
   AND CHILD.R_CONSTRAINT_NAME = PARENT.CONSTRAINT_NAME
   AND PARENT.OWNER = PARENTCOLS.OWNER
   AND PARENT.CONSTRAINT_NAME = PARENTCOLS.CONSTRAINT_NAME
   AND CHILDCOLS.POSITION = PARENTCOLS.POSITION
ORDER BY CHILDCOLS.POSITION;



Posted by 좀모씨
이전버튼 1 이전버튼

블로그 이미지
Under Construction
좀모씨
Yesterday
Today
Total

달력

 « |  » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함