* Oracle Multi In MSSQL 처리하기.

 

# Oracle

SELECT A, B, C, D

FROM TABLE_A

WHERE (A, B) IN

(

       SELECT BB.A, CC.B

       FROM TABLE_B BB, TABLE_C CC

       WHERE BB.A = CC.A

)

 

 

# SQL Server

SELECT A, B, C, D

FROM TABLE_A AA JOIN

(

       SELECT BB.A, CC.B

       FROM TABLE_B BB JOIN TABLE_C CC ON BB.A = CC.A

)

AAA ON  AA.A = AAA.A AND AA.B = AAA.B

 


[Oracle] 자기 권한 보기 사용자가 자신이 가진 권한이 뭔지 알고 싶을때..

SQL> select * from user_role_privs

[롤 관련 데이터 사전]

[Dictionary View]                          [Table]
------------------------               -------------------------------------------------------
ROLE_SYS_PRIVS                         ROLE에 부여된 시스템 권한
ROLE_TAB_PRIVS                         ROLE에 부여된 테이블 권한
USER_ROLE_PRIVS                       현재 사용자가 ACCESS할 수 있는 ROLE
USER_TAB_PRIVS_MADE               현재 사용자의 객체에 부여한 객체 권한
USER_TAB_PRIVS_RECD               현재 사용자의 객체에 부여된 객체 권한
USER_COL_PRIVS_MADE              현재 사용자 객체의 특정 컬럼에 부여한 객체 권한
USER_COL_PRIVS_RECD               현재 사용자 객체의 특정 컬럼에 부여된 객체 권한

출처 : http://www.ezslookingaround.com/blog/tech/?no=1142

 

Select * From dba_tables -- 테이블 정보 보여주기

/

Select * From dba_objects -- 오브젝트 정보 보여주기

 

물론 지금 로그인한 사용자가 권한이 있어야 한다는. ㅋ.

oracle lock 확인 및 제거


--락걸린 테이블 확인
SELECT  do.object_name,  do.owner,  do.object_type,  do.owner,
  vo.xidusn,  vo.session_id,  vo.locked_mode
FROM
  v$locked_object vo ,  dba_objects do
WHERE   vo.object_id = do.object_id ;
  
 
--해당테이블이 락에 걸렸는지.. 
SELECT   A.SID,  A.SERIAL#,  B.TYPE,  C.OBJECT_NAME
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 IN ('테이블명');
    
 
 /* 락발생 사용자와 sql, object 조회 */

SELECT   distinct x.session_id,  a.serial#,
  d.object_name,  a.machine,  a.terminal,
  a.program,  b.address,  b.piece,  b.sql_text
FROM  v$locked_object x,  v$session a,  v$sqltext b,  dba_objects d
WHERE  x.session_id = a.sid  and
  x.object_id = d.object_id  and
  a.sql_address = b.address 
order by b.address,b.piece;

 

/* 락 발생 사용자확인 */

SELECT   distinct x.session_id,  a.serial#,
  d.object_name,  a.machine,  a.terminal,  a.program,
  a.logon_time ,  'alter system kill session ''' || a.sid || ',  ' || a.serial# || ''';'
FROM   gv$locked_object x, gv$session a,  dba_objects d
WHERE   x.session_id = a.sid  and  x.object_id = d.object_id
order by logon_time; 


/* 접속 사용자 제거 */

--alter system kill session 'session_id,serial#';
alter system kill session '26,6044'; 

 

 

/* 현재 접속자의 sql 분석 */

SELECT   distinct a.sid,  a.serial#,
  a.machine,  a.terminal,  a.program,
  b.address,  b.piece,  b.sql_text
FROM   v$session a,  v$sqltext b
WHERE   a.sql_address = b.address
order by a.sid, a.serial#,b.address,b.piece;

 

CHAR

고정길이의 문자 DATA를 4000 Byte 저장할 수 있다.

 Ex) CHAR(8)

ABCDE

 →

A

B

C

D

E

 

 

 

 

VARCHAR2

가변길이의 문자 DATA를 4000 Byte 저장할 수 있다.

 Ex) VARCHAR2(8)

ABCDE

 →

A

B

C

D

E

 

NUMBER

 숫자값을 -38 자리수 ~ +38 자리수를 저장할 수 있다.

 Ex) NUMBER(8)

12345

 →

1

2

3

4

5

 

NUMBER(P, s)

P는 전체 자리수 , S는 소수점 이하 자리수

 Ex) NUMBER(8.2)

123456.12

 →

1

2

3

4

5

6.

1

2

 

BLOB(LONG RAW)

Binary 데이터를 4 GB 저장할 수 있다

 

CLOB(LONG)

Text 데이터를 4 GB 저장할 수 있다.

 

DATE

날짜값을 저장할 수 있다. 초단위까지 저장가능.

2008-Feb-07

 →

2008-Feb-07

 

TIMESTAMP

년,월,일,시,분,초, Mili-Second까지 보여준다.

2008-Feb-07

 →

2008-Feb-07 7.20.10.0000001 AM

 

TIMESTAMP WITH TIME ZONE

지역시간과 세계표준시의 차이난 시간정보를 보여줌, +9:00는 그리니치 시간보다 9시간 빠르다는 의미.

2008-Feb-07

 → 

2008-Feb-07 7:20:10 +9:00

 

TIMESTAMP WITH LOCAL ZONE

지역시간으로 변환하여 저장해 줍니다.

2008-Feb-07

 →

2008-Feb-07 7:20:10 AM

 

INTERVAL YEAR TO MONTH

정의된 시간대로 날자를 계산하여 저장 해준다.

INTERVAL '312-2' YEAR(3) TO MONTH

 →

2008-Feb-07

 


+ Recent posts