반응형

오라클 유용한 쿼리에 대해서 알아보도록 하자.

 

(1) DATABASE 관련 Query

 -- 현재 DATABASE의 상태정보를 조회한다.

 SELECT * FROM v$database

 

(2) TABLE SPACE 관련 Query

 

 -- 현재 TABLESPACE 의 상태 조회

 SELECT * FROM DBA_TABLESPACES;

 

 -- 특정 TABLESPACE 삭제

 a) DROP TABLESPACE :TABLESPACE_NAME INCLUDING CONTENTS CASCADE CONSTRAINTS

 b) 해당 물리 파일을 삭제한다.

 

 -- 해당 유저의 DEFAULT TABLESPACE 조회 명령어

 SELECT *   FROM user_users;

 

 -- 해당 유저의 DEFAULT TABLESPACE 변경(SYSDBA권한)

ALTER USER :USER_NAME DEFAULT TABLESPACE :TO_TABLESPACE

 

 -- 각 SEGMENT 별 TABLESPACE 정보 조회(SYSDBA권한)

SELECT OWNER,
 SEGMENT_NAME,
 SEGMENT_TYPE,
 TABLESPACE_NAME,
 BYTES
from  dba_segments
WHERE TABLESPACE_NAME IN (':TABLESPACENAME')

 

 -- TABLESPACE DATAFILE 추가(SYSDBA 권한)

ALTER TABLESPACE :TABLESPACE_NAME ADD DATAFILE 'F:\app\sungrangkong\oradata\orcl\IMS_DATA02.DBF' SIZE 30G AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED; 

 

 

(3) USER 관련 Query

 

 -- 특정사용자에게 부여된 권한 조회(SYSDBA권한)

SELECT * FROM DBA_SYS_PRIVS WHERE grantee = :USER_ID ORDER BY PRIVILEGE ASC

 

 -- 특정 사용자에게 권한 부여

GRANT :권한명  TO :USER_ID

 

 -- 권한 삭제

REVOKE :권한들(,단위구분) FROM :USER_ID

 

 

(4) 모니터링 Query

 

-- Table Space 사용중인 용량 조회

SELECT a.tablespace_name,
    a.total_gb || ' G' "Total(Gb)", 
       a.total || ' M' "Total(Mb)",
       (a.total - b.free) || ' M' "Used(Mb)",
       (nvl(b.free,0)) || ' M' "Free(Mb)",
       (round((a.total - nvl(b.free,0))*100/total,0)) || ' %' "Used(%)"
  FROM
       (SELECT tablespace_name,
           round((sum(bytes)/1024/1024/1024),0) AS total_gb ,
              round((sum(bytes)/1024/1024),0) AS total
         FROM dba_data_files
        GROUP BY tablespace_name
       ) a,
       (SELECT tablespace_name,
              round((sum(bytes)/1024/1024),0) AS free
         FROM dba_free_space
        GROUP BY tablespace_name
       ) b
 WHERE a.tablespace_name = b.tablespace_name(+)
ORDER BY a.tablespace_name;

 

     (실행결과)

     

 

 

 

-- 현재 실행중인 쿼리문과 프로세스아이디,시리얼번호,머신 알아내기

SELECT c.sql_text ,
       b.SID ,
       b.SERIAL# ,
       b.machine ,
       b.OSUSER ,
       a.spid,
       b.logon_time
  FROM v$process a,
       v$session b,
       v$sqltext c
 WHERE a.addr = b.paddr
       AND b.sql_hash_value = c.hash_value
ORDER BY c.PIECE

 

  (실행결과)

 

 

 

-- LOCK 걸린 Table 조회

 

SELECT s.username,
       s.sid,
       s.serial#,
       s.logon_time,
       DECODE(l.type, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NULL) "LOCK LEVEL",
       o.owner,
       o.object_name,
       o.object_type
  FROM v$session s,
       v$lock l,
       dba_objects o
 WHERE s.sid = l.sid
       AND o.object_id = l.id1
       AND s.username IS NOT NULL

 

(실행결과)

 

 

 

 

 

 

 

 

- 2013.06.14 랑이씀 -

반응형

+ Recent posts