형태
오라클 계정 -> 5분 단위로 해서 -> 아래의 테이블 생성후 -> Crontab 으로 조회하여 입력하는 형태
자세한 것은 Shell, Crontab 정보를 찾으면서 하면됨
-- 임의로 실행하는 쿼리목록 조회하기
select to_char(sysdate,'yyyymmdd'),
to_char(sysdate, 'HH24'),
to_char(sysdate, 'MI'),
A.inst_id,
A.SID,
A.SERIAL#,
A.USERNAME,
A.TYPE,
A.STATUS,
A.STATE,
A.EVENT,
A.OSUSER,
A.PROGRAM,
A.MACHINE,
A.SQL_ADDRESS,
B.SQL_ID,
B.sharable_mem,
B.persistent_mem,
B.runtime_mem,
B.first_load_time,
B.OPTIMIZER_MODE,
B.OPTIMIZER_COST,
B.MODULE,
B.SQL_FULLTEXT
from GV$SESSION a, GV$SQL B
WHERE A.STATUS = 'ACTIVE' -- 현재 활성화된
AND B.ADDRESS=A.SQL_ADDRESS -- FULL SQL TEXT 를 얻기 위해
AND A.MACHINE NOT IN ('NewWas1','NewWas2') -- 접속 Machine 이름이 NewWas1, NewWas2 는 아님
AND UPPER(B.SQL_FULLTEXT) NOT LIKE '%V$%'; -- V$ 로 시작하는 뷰를 보는 경우는 제외
CREATE TABLE MStorage.USER_SQL_LOG
(
VIEW_YMD VARCHAR2(8) DEFAULT to_char(sysdate,'yyyymmdd'),
VIEW_HH VARCHAR2(2) DEFAULT to_char(sysdate, 'HH24'),
VIEW_MI VARCHAR2(2) DEFAULT to_char(sysdate, 'MI'),
INST_ID NUMBER,
SID NUMBER,
SERIAL# NUMBER,
USERNAME VARCHAR2(30),
TYPE VARCHAR2(10),
STATUS VARCHAR2(8),
STATE VARCHAR2(19),
EVENT VARCHAR2(64),
OSUSER VARCHAR2(30),
PROGRAM VARCHAR2(48),
MACHINE VARCHAR2(64),
SQL_ADDRESS RAW(8),
SQL_ID VARCHAR2(13),
SHARABLE_MEM NUMBER,
PERSISTENT_MEM NUMBER,
RUNTIME_MEM NUMBER,
FIRST_LOAD_TIME VARCHAR2(38),
OPTIMIZER_MODE VARCHAR2(10),
OPTIMIZER_COST NUMBER,
MODULE VARCHAR2(64),
SQL_FULLTEXT CLOB
) TABLESPACE MStorage;
COMMENT ON TABLE MStorage.USER_SQL_LOG IS '로그 모니터링 테이블(GV$SESSION) 참조';
-- 인덱스 생성
CREATE INDEX MStorage.IX_USER_SQL_LOG_01 ON MStorage.USER_SQL_LOG
(
VIEW_YMD,VIEW_HH, VIEW_MI
)
TABLESPACE MStorage;
-- 실제 입력 구문
INSERT INTO MStorage.USER_SQL_LOG
(
inst_id,
SID,
SERIAL#,
USERNAME,
TYPE,
STATUS,
STATE,
EVENT,
OSUSER,
PROGRAM,
MACHINE,
SQL_ADDRESS,
SQL_ID,
sharable_mem,
persistent_mem,
runtime_mem,
first_load_time,
OPTIMIZER_MODE,
OPTIMIZER_COST,
MODULE,
SQL_FULLTEXT
)
select A.inst_id,
A.SID,
A.SERIAL#,
A.USERNAME,
A.TYPE,
A.STATUS,
A.STATE,
A.EVENT,
A.OSUSER,
A.PROGRAM,
A.MACHINE,
A.SQL_ADDRESS,
B.SQL_ID,
B.sharable_mem,
B.persistent_mem,
B.runtime_mem,
B.first_load_time,
B.OPTIMIZER_MODE,
B.OPTIMIZER_COST,
B.MODULE,
B.SQL_FULLTEXT
from GV$SESSION a, GV$SQL B
WHERE 1=1-- A.STATUS = 'ACTIVE' -- 현재 활성화된
AND B.ADDRESS=A.SQL_ADDRESS -- FULL SQL TEXT 를 얻기 위해
AND A.MACHINE NOT IN ('NewWas1','NewWas2') -- 접속 Machine 이름이 NewWas1, NewWas2 는 아님
AND UPPER(B.SQL_FULLTEXT) NOT LIKE '%V$%'; -- V$ 로 시작하는 뷰를 보는 경우는 제외
'Database > ORACLE' 카테고리의 다른 글
10G OCP 자격증 관련 (2) | 2012.07.08 |
---|---|
오라클 패키지 CURSOR(커서) 출력 값 조회 (0) | 2012.02.23 |
오라클 병렬 인덱스 조회 및 수정하기 (0) | 2012.01.27 |
AWR Report 정리본 (0) | 2011.09.28 |
Table Index 생성시 진행율 또는 종료예상시간 확인 하는 법 있나요? (0) | 2011.08.22 |