2012. 3. 27. 13:37

[Oracle] User 권한 보기

ORACLE에서 모든 사용자의 권한

SELECT * FROM DBA_ROLE_PRIVS

 

현재 세션에 부여된 권한

SELECT * FROM USER_SYS_PRIVS

 

DBA에 부여된 권한

SELECT * FROM DBA_SYS_PRIVS

 

특정 ROLE에 부여된 시스템 권한

SELECT * FROM ROLE_SYS_PRIVS

 

특정 테이블에 부여된 권한

SELECT * FROM ROLE_TAB_PRIVS

 

사용자에 의해 엑세스 가능한 ROLE

SELECT * FROM USER_ROLE_PRIVS

 

사용자가 부여한 객체 권한

SELECT * FROM USER_TAB_PRIVS_MADE

 

사용자가 객체의 열에 대해 부여한 객제 권한

SELECT * FROM USER_COL_PRIVS_MADE

 

특정 열에 대해 사용자가 부여한 객체권한

SELECT * FROM USER_COL_PRIVS_RECD

 

해당 유저의 LIMIT 권한

SELECT P.PROFILE, P.RESOURCE_NAME, P.LIMIT

FROM DBA_USER U, DBA_PROFILES P

WHERE P.PROFILE = U.PROFILE

AND USERNAME = 'USER_NAME'

 

'Database / Sql' 카테고리의 다른 글

[Oracle] Toad vs Oracle Product Release History  (0) 2012.06.19
[MS-SQL] AUTO COMMIT 해제 방법  (0) 2012.06.12
[Oracle] DATA DICTIONARY VIEW  (0) 2012.02.29
[Oracle] DBA_USER 확인  (0) 2012.02.23
[Oracle] SESSION 수 체크  (0) 2012.02.23
2012. 2. 29. 15:29

[Oracle] DATA DICTIONARY VIEW

DATA DICTIONARY VIEW : 현재 사용자가 가지고 있는 모든 테이블에 대한 메타정보를 보여줌


## 전체 테이블
SELECT * FROM TAB;


## 현재 사용자가 액세스 할 수 있는 관계형 테이블
SELECT * FROM ALL_TABLES;


## 사용자가 소유한 테이블을 조회
SELECT * FROM USER_TABLES;
SELECT * FROM USER_OBJECTS;
SELECT * FROM USER_CATALOG;


## 테이블 코멘트
SELECT * FROM USER_TAB_COMMENTS;


## 컬럼 코멘트
SELECT * FROM USER_COL_COMMENTS;


## DB 객체별 SEGMENT 할당 용량 조회
SELECT * FROM USER_SEGMENTS;

'Database / Sql' 카테고리의 다른 글

[MS-SQL] AUTO COMMIT 해제 방법  (0) 2012.06.12
[Oracle] User 권한 보기  (0) 2012.03.27
[Oracle] DBA_USER 확인  (0) 2012.02.23
[Oracle] SESSION 수 체크  (0) 2012.02.23
[Oracle] LOCK 해제  (0) 2012.02.23
2012. 2. 23. 10:29

[Oracle] DBA_USER 확인

SELECT *
  FROM DBA_USERS
 WHERE DEFAULT_TABLESPACE NOT IN ('SYSAUX','SYSTEM');

'Database / Sql' 카테고리의 다른 글

[Oracle] User 권한 보기  (0) 2012.03.27
[Oracle] DATA DICTIONARY VIEW  (0) 2012.02.29
[Oracle] SESSION 수 체크  (0) 2012.02.23
[Oracle] LOCK 해제  (0) 2012.02.23
[Oracle] 쿼리문 처리 과정  (0) 2012.02.16
2012. 2. 23. 10:22

[Oracle] SESSION 수 체크

SELECT COUNT(*)
  FROM V$SESSION A, V$PROCESS B
 WHERE A.PADDR=B.ADDR;


SELECT COUNT(*)
  FROM V$SESSION A, V$PROCESS B
 WHERE A.PADDR=B.ADDR
   AND A.SCHEMANAME = 'TABLE_NAME';

'Database / Sql' 카테고리의 다른 글

[Oracle] DATA DICTIONARY VIEW  (0) 2012.02.29
[Oracle] DBA_USER 확인  (0) 2012.02.23
[Oracle] LOCK 해제  (0) 2012.02.23
[Oracle] 쿼리문 처리 과정  (0) 2012.02.16
[Oracle] USER_SOURCE  (0) 2011.12.27
2012. 2. 23. 10:16

[Oracle] LOCK 해제

##  SESSION LOCK 해제  ##

SELECT 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'
    AND C.OBJECT_NAME = 'TABLE_NAME';

▶  ALTER SYSTEM KILL SESSION 'SID, SERIAL';


##  USER ACCOUNT LOCK 해제  ##

SELECT O.OBJECT_NAME
  FROM DBA_OBJECTS O, V$LOCKED_OBJECT OB
 WHERE O.OBJECT_ID = OB.OBJECT_ID;

SELECT B.USERNAME USERNAME, C.SID SID, C.OWNER OBJECT_OWNER,
       C.OBJECT OBJECT, B.LOCKWAIT, A.SQL_TEXT SQL
  FROM V$SQLTEXT A, V$SESSION B, V$ACCESS C
 WHERE A.ADDRESS=B.SQL_ADDRESS
   AND A.HASH_VALUE=B.SQL_HASH_VALUE
   AND B.SID = C.SID AND C.OWNER != 'SYS';

SELECT SUBSTR(S.USERNAME,1,11) "ORACLE USER", P.PID "PROCESS ID",
       S.SID "SESSION ID", S.SERIAL#, OSUSER "OS USER",
       P.SPID "PROC SPID",S.PROCESS "SESS SPID", S.LOCKWAIT "LOCK WAIT"
  FROM V$PROCESS P, V$SESSION S, V$ACCESS A
 WHERE A.SID=S.SID0
   AND P.ADDR=S.PADDR
   AND S.USERNAME != 'SYS'
   AND S.LOCKWAIT IS NOT NULL;

▶  ALTER USER USER_NAME ACCOUNT UNLOCK;

'Database / Sql' 카테고리의 다른 글

[Oracle] DBA_USER 확인  (0) 2012.02.23
[Oracle] SESSION 수 체크  (0) 2012.02.23
[Oracle] 쿼리문 처리 과정  (0) 2012.02.16
[Oracle] USER_SOURCE  (0) 2011.12.27
[MS-SQL] CONVERT를 이용한 날짜 형식 변경  (1) 2011.12.14
2012. 2. 16. 17:06

[Oracle] 쿼리문 처리 과정

SQL  →  User Process  →  Sever Process  →  Parse (구문분석, 실행계획)  →  Execute (실행)  →  Fetch (인출) 


1. Parse
1)
검사
-
문법검사 : keyword 검사 (오라클에서 만들어놓은 selece, from, where...
)
-
권한검사 : 접속한사용자의 권한에 관한 검사 (사용가능한 범위에 관한 권한여부 조사
)
- 의미검사 : *, emp 등의 컬럼명이나 테이블명 등 사용자가 만든것들에 대한 검사

2)실행계획 - 딕셔너리와 인덱스를 바탕으로 '옵티마이져'가 담당한다.
완벽한인덱스가 있다면 최선의 실행계획을 도출해 낼것이다
.

검사단계에서 실행계획단계로 오면 먼저 Library Cache에서 기존에 만들어놓은 동일한 쿼리문에 대한 실행계획이 있는지 먼저 찾아보고 없다면, 옵티마이저가 실행계획을 만드는 작업을하고 결과물은 Library Cache에 기록해 놓는다. 만약 기존에 만들어놓은 실행계획이 있다면 바로 다음단계로 넘어가게된다. 여기서 Soft Parse, Hard Parse 라는 개념이 나오게 되는데


검사단계+실행계획단계 Library Cache 검색 후 기존 '실행계획' 찾아서 다음단계로 -> Soft Parse
검사단계+실행계획단계 Library Cache 검색 후 옵티마이저가 실행계획 작성하고 다음단계로 -> Hard Parse

Hard Parse
단계에서 옵티마이저가 만든 실행계획은 Library Cache에 저장되고 만약 다음에 동일한 쿼리문이 실행된다면 그때는 Soft Parse 로 진행이 될것이다.

2. Excute

인덱스의 데이터 위치정보를 기반으로 DATABASE에서 데이터가 들어있는 블락을 통채로 Instance 끌어올리는 과정이다.

3. Fetch
Instance에서 통채로 끌어올려진 블락에 들어있는 데이터들을
분석해서 원하는 데이터만 골라내어 sql문의 결과를 도출해 내는 과정이다.

'Database / Sql' 카테고리의 다른 글

[Oracle] SESSION 수 체크  (0) 2012.02.23
[Oracle] LOCK 해제  (0) 2012.02.23
[Oracle] USER_SOURCE  (0) 2011.12.27
[MS-SQL] CONVERT를 이용한 날짜 형식 변경  (1) 2011.12.14
[Oracle] 오라클 버전 확인  (0) 2011.11.16
2011. 12. 27. 15:57

[Oracle] USER_SOURCE

오라클 DB의 USER_SOURCE 테이블을 통해 간단히 OBJECT(Function, Procedure, Package...)의 코드를 확인할 수 있다.

SELECT * FROM USER_SOURCE
 WHERE NAME LIKE '% %'     -- OBJECT 명
 ORDER BY TYPE, NAME, LINE;


DB에 테이블 명을 확인할 수 있다.

SELECT * FROM TAB
 WHERE TNAME LIKE '% %'     -- 테이블 명
 ORDER BY TABTYPE, TNAME;

'Database / Sql' 카테고리의 다른 글

[Oracle] LOCK 해제  (0) 2012.02.23
[Oracle] 쿼리문 처리 과정  (0) 2012.02.16
[MS-SQL] CONVERT를 이용한 날짜 형식 변경  (1) 2011.12.14
[Oracle] 오라클 버전 확인  (0) 2011.11.16
[Oracle] ORA-01476 : 제수가 0  (0) 2011.11.16
2011. 12. 14. 11:16

[MS-SQL] CONVERT를 이용한 날짜 형식 변경

기준시간 : 2011-12-14 13:07:49


SELECT CONVERT(VARCHAR, GETDATE(),   1) '  1'  ->  12/14/11
SELECT CONVERT(VARCHAR, GETDATE(),   2) '  2'  ->  11.12.14
SELECT CONVERT(VARCHAR, GETDATE(),   3) '  3'  ->  14/12/11
SELECT CONVERT(VARCHAR, GETDATE(),   4) '  4'  ->  14.12.11
SELECT CONVERT(VARCHAR, GETDATE(),   5) '  5'  ->  14-12-11
SELECT CONVERT(VARCHAR, GETDATE(),   8) '  8'  ->  13:07:49
SELECT CONVERT(VARCHAR, GETDATE(),   9) '  9'  ->  12 14 2011  1:07:49:520PM
SELECT CONVERT(VARCHAR, GETDATE(),  13) ' 13'  ->  14 12 2011 13:07:49:520
SELECT CONVERT(VARCHAR, GETDATE(),  14) ' 14'  ->  13:07:49:520
SELECT CONVERT(VARCHAR, GETDATE(),  20) ' 20'  ->  2011-12-14 13:07:49
SELECT CONVERT(VARCHAR, GETDATE(),  21) ' 21'  ->  2011-12-14 13:07:49.520
SELECT CONVERT(VARCHAR, GETDATE(),  22) ' 22'  ->  12/14/11  1:07:49 PM
SELECT CONVERT(VARCHAR, GETDATE(),  23) ' 23'  ->  2011-12-14
SELECT CONVERT(VARCHAR, GETDATE(),  25) ' 25'  ->  2011-12-14 13:07:49.520
SELECT CONVERT(VARCHAR, GETDATE(), 101) '101'  ->  12/14/2011
SELECT CONVERT(VARCHAR, GETDATE(), 102) '102'  ->  2011.12.14
SELECT CONVERT(VARCHAR, GETDATE(), 103) '103'  ->  14/12/2011
SELECT CONVERT(VARCHAR, GETDATE(), 104) '104'  ->  14.12.2011
SELECT CONVERT(VARCHAR, GETDATE(), 105) '105'  ->  14-12-2011
SELECT CONVERT(VARCHAR, GETDATE(), 111) '111'  ->  2011/12/14
SELECT CONVERT(VARCHAR, GETDATE(), 112) '112'  ->  20111214
SELECT CONVERT(VARCHAR, GETDATE(), 120) '120'  ->  2011-12-14 13:07:49
SELECT CONVERT(VARCHAR, GETDATE(), 121) '121'  ->  2011-12-14 13:07:49.520

'Database / Sql' 카테고리의 다른 글

[Oracle] 쿼리문 처리 과정  (0) 2012.02.16
[Oracle] USER_SOURCE  (0) 2011.12.27
[Oracle] 오라클 버전 확인  (0) 2011.11.16
[Oracle] ORA-01476 : 제수가 0  (0) 2011.11.16
[Oracle] RANK() 함수 Sample  (0) 2011.11.15
2011. 11. 16. 09:43

[Oracle] 오라클 버전 확인

SELECT * FROM V$VERSION
  WHERE BANNER LIKE 'Oracle%';

BANNER                                                         
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bi


SELECT * FROM V$VERSION;

BANNER                                                         
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bi
PL/SQL Release 10.2.0.2.0 - Production                         
CORE 10.2.0.2.0 Production                                     
TNS for IBM/AIX RISC System/6000: Version 10.2.0.2.0 - Productio
NLSRTL Version 10.2.0.2.0 - Production 

'Database / Sql' 카테고리의 다른 글

[Oracle] USER_SOURCE  (0) 2011.12.27
[MS-SQL] CONVERT를 이용한 날짜 형식 변경  (1) 2011.12.14
[Oracle] ORA-01476 : 제수가 0  (0) 2011.11.16
[Oracle] RANK() 함수 Sample  (0) 2011.11.15
[Oracle] PL/SQL PROCEDURE Sample  (0) 2011.11.14
2011. 11. 16. 09:42

[Oracle] ORA-01476 : 제수가 0

나누기 연산 하는 경우거나 평균값을 구하는 경우에 분모 값이 0 인 상태에서 연산을 하면 에러(ORA-01476)가 발생한다. 분자의 값은 0 이여도 상관이 없다.

SELECT A / B FROM DUAL;

A = 0, B = 0  ->  ERROR (ORA-01476)
A = 1, B = 0  ->  ERROR (ORA-01476)
A = 0, B = 1  ->  0


>>

SELECT DECODE(B, 0, 0, NULL, 0, A / B) RESULT
   FROM ( SELECT 100 A, 0 B FROM DUAL );

RESULT = 0;

'Database / Sql' 카테고리의 다른 글

[MS-SQL] CONVERT를 이용한 날짜 형식 변경  (1) 2011.12.14
[Oracle] 오라클 버전 확인  (0) 2011.11.16
[Oracle] RANK() 함수 Sample  (0) 2011.11.15
[Oracle] PL/SQL PROCEDURE Sample  (0) 2011.11.14
[Oracle] PL/SQL FUNCTION Sample  (0) 2011.11.14