본문 바로가기

DB/Oracle

현재 진행중인 쿼리확인 (dba)

반응형

웹에서 DB에 데이터 대해서 변경이나 조회를 할 때  여러가지 이유로 멈추는 경우가 종종 있다.(쿼리의 구조문제, LOCK 등등)

이때 쿼리가 무한 WAIT에 걸린 경우 강제로 죽여야하는 경우가 생기는데 이때 사용하는 명령어다.

해당 명령어는 직접 DB시스템에 접근하므로 DBA 권한으로 가능하다.

 

우선 진행중인 쿼리 확인용 쿼리다.

SELECT s.username, s.osuser, s.program, sql.sql_text 
FROM v$session s, v$sql sql 
WHERE s.sql_address = sql.address AND s.sql_hash_value = sql.hash_value AND s.status = 'ACTIVE';

현재 활성화 되어있는 쿼리가 출력된다.

 

두번째는 실질적으로 쿼리를 죽이기위해 SID와 SERIAL 넘버를 조회하는 쿼리다.

-- 쿼리에 MERGE가 들어간 쿼리 조회
SELECT A.STATUS, A.USERNAME, A.SID, A.SERIAL#, B.SQL_TEXT 
FROM V$SESSION A, V$SQLAREA B 
WHERE A.SQL_HASH_VALUE = B.HASH_VALUE AND A.SQL_ADDRESS = B.ADDRESS and B.SQL_TEXT LIKE '%MERGE%';

 

마지막으로는 출력한 SID와 SEIRAL 넘버로 KILL 하는 쿼리이다

ALTER SYSTEM KILL SESSION 'SID,SEIRAL넘버';

 

 

추가로 밑에는 DB 테이블 스페이스 남은 용량 확인 쿼리다.

-- 전체 용량
SELECT tablespace_name, 
       ROUND(SUM(bytes) / 1024 / 1024 / 1024, 2) AS "Total Size (GB)"
FROM dba_data_files
GROUP BY tablespace_name
ORDER BY tablespace_name;

-- 남은 용량
SELECT tablespace_name, 
       ROUND(SUM(bytes)/1024/1024/1024, 2) AS "Free Space (GB)"
FROM dba_free_space
GROUP BY tablespace_name
ORDER BY tablespace_name;
반응형

'DB > Oracle' 카테고리의 다른 글

pivot (오라클11g)  (0) 2025.03.14
오라클 bulk insert 속도개선  (0) 2024.10.17
오라클 구분자를 사용한 문자열을 행으로 변환(regexp, connect by level)  (0) 2024.10.17
drop 테이블 복구  (0) 2024.08.07
오라클 DB링크  (0) 2024.07.05