-- ORACLE Session, Processes 정보
SELECT * FROM V$RESOURCE_LIMIT;

SELECT * FROM USER_RESOURCE_LIMITS;

-- ORACLE 정책
SELECT * FROM DBA_PROFILES;


-- ALTER SESSION 권한 있는지 조회
SELECT * FROM USER_SYS_PRIVS;

-- ALTER SESSION 권한없다면 SYS, SYSTEM 계정에서 권한 부여
GRANT ALTER SESSION TO SCOTT;


-- TRACE File 경로
SELECT * FROM V$DIAG_INFO WHERE NAME = 'Default Trace File';

SELECT  SES.SID
,       SES.USERNAME
,       SES.STATUS
,       SES.MACHINE
,       SES.PROGRAM

,       PRC.SERIAL#
,       PRC.SPID
,       PRC.TRACEID
,       PRC.TRACEFILE

FROM V$SESSION SES
JOIN V$PROCESS PRC      ON  PRC.ADDR    = SES.PADDR
WHERE SES.USERNAME IS NOT NULL
--AND SES.SID = SYS_CONTEXT('USERENV', 'SID')   -- 현재 접속세션 -> USERENV('SID') 같다
;

-- 현재 세션의 Trace 활성상태 (V$PRAMETER 조회권한 있어야 한다)
SELECT * FROM V$PARAMETER WHERE NAME LIKE '%trace%';

SHOW PARAMETERS SQL_TRACE;





-- Trace 시작
ALTER SESSION SET SQL_TRACE = TRUE;

-- Trace 파일에 식별자 붙이기
ALTER SESSION SET TRACEFILE_IDENTIFIER = 'ANZINDA';
SELECT * FROM EMP WHERE EMPNO = 7900;
SELECT * FROM DUAL;

-- Trace 종료
ALTER SESSION SET SQL_TRACE = FALSE;



-- 트레이스파일 포맷팅 (sys=no -> 파싱과정에서 내부에서 수행되는 쿼리 제외)
C:\> TKPROF 트레이스파일.trc 레포트파일.prf sys=no