행위

ORACLE 뷰

DB CAFE

1

2 뷰 구성 컬럼 정보

select col.owner as schema_name,
       col.table_name,
       '' logi_name,
       col.column_id, 
       col.column_name, 
       '' column_attr, 
       col.data_type, 
       col.data_length data_conv_length, 
       col.data_length, 
       col.data_precision, 
       col.data_scale, 
       col.nullable
from sys.all_tab_columns col
inner join sys.all_views v on col.owner = v.owner 
                          and col.table_name = v.view_name
 where col.owner = 'SCOTT'                          
order by col.owner, col.table_name, col.column_id;

2.1 VIEW 정의내역 정보

SET LONG 100000

SELECT TEXT 
  FROM USER_VIEWS 
 WHERE VIEW_NAME 
 LIKE UPPER('&뷰_이름');

2.2 뷰(VIEW) 권한

뷰안에 포함된 다른 사용자의 테이블/뷰에 대한 권한 부여 방법

1) A사용자.뷰를 B사용자에게 줄때 권한 에러 발생시

  A사용자.뷰안에 포함된 A사용자가 소유한 오브젝트를 제외한 타유저의 오브젝트에 권한을 상속받아서 권한가 발생하지 않음.


예시 ) SCOTT유저가 LEE 유저에게 뷰 조회 권한을 주고자한다. SCOTT유저가 만든 V1은 KIM유저의 V0(뷰/테이블) 이 조인되어 있다.


1) SCOTT자신이 만든 뷰(A.V1) 안에 다른 유저의 뷰를 사용 할경우

CREATE VIEW V1 
     AS
SELECT A.xxx
     , V0.컬럼 
  FROM EMP A
     , KIMCHI.V0 
 WHERE A.EMP_NO = B.EMP_NO
;

2) 다른유저에게 뷰1 조회 권한을 줄때 권한 에러 발생시

GRANT SELECT ON KIM.V0 TO SCOTT '''WITH GRANT OPTION''';

V0에 with grant option을 줘야함.

뷰0 내부의 다른유저테이블에도 WITH GRANT OPTION 필요함.