티스토리 뷰

database/db

[oracle] 시스템 객체

그루아트 2017. 8. 13. 01:31

※데이터 딕셔너리(DATA DICTIONARY) 이란?

사용자들이 입력및 관리하는 데이터가 아닌 

오라클 DBMS를 운영하는데 필요한 정보들을 관리하는데 사용되는 객체들을 말한다.

오라클에 대한 시스템 정보를 갖고 있기 때문에 개발자들을 포함해 오라클 사용자들은 이것을 읽기만 할수 있다.

※오라클에서 사용하는 시스템 VIEW 종류

ALL_  ~ : 전체 사용자(USER)의  모든 객체들에 대한 정보를 가지고 있는 뷰

DBA_  ~ : 데이터베이스 관리자용 뷰로 관리자 권한의 사용자만 접근 가능한 뷰

USER_ ~ : 로그인한 계정의 사용자에 대한 스키마 정보를 가진 뷰 



-.일반적으로 자주 사용하는 뷰

|===========================================================================

|            오브젝트 명              |                 설명                  |

|---------------------------------------------------------------------------

USER_OBJECTS                      |  모든 USER 오브젝트들                     

USER_TABLES(USER_TABS)            |  테이블 정보                              

USER_TAB_COLUMNS(USER_TAB_COLS)   |  테이블에 있는 컬럼들의 정보              

USER_VIEWS                        |  뷰 정보

USER_SYNONYMS                     |  시노님 정보                             

USER_SEQUENCES                    |  시퀀스 정보

USER_CONSTRAINTS                  |  각종 제약 조건                          

USER_CONS_COLUMNS                 |  제약 조건을 가진 컬럼들에 대한 정보

USER_TAB_COMMENTS                 |  테이블 주석 정보                        

USER_COL_COMMENTS                 |  컬럼 주석 정보

USER_INDEXES                      |  인덱스 정보                             

USER_IND_COLUMNS                  |  인덱스 컬럼 정보

USER_CLUSTERS                     |  클러스터 정보                            

USER_DB_LINKS                     |  데이터베이스 링크 정보

USER_TRIGGERS                     |  트리거 정보                             

USER_PROCEDURES                   |  프로시저, 함수, 패키지 정보

USER_SOURCE                       |  트리거, 함수, 프로시저, 피키지 소스 정보  

USER_TABLESPACES                  |  테이블스페이스 정보

USER_USERS                        |  사용자 정보                               

USER_TAB_PRIVS                    |  테이블 권한 정보

USER_COL_PRIVS                    |  컬럼 권한 정보                            

USER_SYS_PRIVS                    |  시스템 권한 정보

USER_TAB_PRIVS_MADE               |  내가 부여한 테이블 권한                  

USER_TAB_PRIVS_RECD               |  내가 부여받은 테이블 권한

USER_COL_PRIVS_MADE               |  내가 부여한 컬럼 권한                    

USER_COL_PRIVS_RECD               |  내가 부여받은 컬럼 권한

|===========================================================================



※ALL_ ~

1.모든 오브젝트들에 대한 개략적인 정보를 제공하는 뷰(소유주, 오브젝트 타입 ...)

SELECT * FROM ALL_OBJECTS;


2.특정 스키마에 속한 테이블 정보를 제공하는 뷰

SELECT * FROM ALL_TABLES

WHERE OWNER = 'GRUART';


3.ALL로 시작되는 뷰(오브젝트)는 어떤 것들이 있는지를 찾을때

SELECT OWNER, OBJECT_NAME, OBJECT_ID, OBJECT_TYPE 

FROM ALL_OBJECTS

WHERE OBJECT_NAME LIKE 'ALL%';


=> 여기에서 오브젝트명을 찾은뒤 

   SELECT *FROM {찾은오브젝트명} 으로 해서 원하는 정보를 확인 가능


/*-------------------------------------------------------------------------------

4. 모든 시노님, 인덱스, 프로시저를 제공하는 뷰

-------------------------------------------------------------------------------*/

SELECT *FROM ALL_INDEXES

SELECT *FROM ALL_SYNONYMS SELECT *FROM ALL_PROCEDURES


/*-------------------------------------------------------------------------------

5. 예약어로 사용되는 단어들의 정보가 들어 있는 시스템 뷰

-------------------------------------------------------------------------------*/

SELECT KEYWORD

FROM V$RESERVED_WORDS

ORDER BY KEYWORD;


/*-------------------------------------------------------------------------------

6. 파라메타 정보가 들어 있는 시스템 뷰:

파라메터는 데이터베이스의 동작이나 환경 설정에 사용

-------------------------------------------------------------------------------*/

파라메터 보는 방법-1

SELECT *

FROM SYS.V_$PARAMETER;


파라메터 보는 방법-2

sqlplus / as sysdba


SHOW PARAMETER 파라메터명;        특정 파라메터 값 확인

ALTER SYSTEM SET 파라메타명 = 값;  특정 파라메터 값 변경


/*-------------------------------------------------------------------------------

7. 시노님의 정보 확인

-------------------------------------------------------------------------------*/

SELECT *FROM DBA_SYNONYMS


/*-------------------------------------------------------------------------------

8. 사용자 정보 확인

-------------------------------------------------------------------------------*/

SELECT *FROM DBA_USERS


/*-------------------------------------------------------------------------------

9. 현재 등로되어 있는 사용자 정보 확인

-------------------------------------------------------------------------------*/

SELECT *FROM ALL_USERS



※DBA_ ~

SYS, SYSTEM 등의 데이터베이스 관리자를 위한 정보를 제공한다.


/*-------------------------------------------------------------------------------

1. 모든 오브젝트들에 대한 개략적인 정보를 제공하는 뷰(소유주, 오브겢트 타입 ...)

-------------------------------------------------------------------------------*/

SELECT * FROM ALL_OBJECTS;


/*-------------------------------------------------------------------------------

2. 특정 오브젝트에 대해 어떤 권한이 할당되어 있는지를 조회하는 뷰

-------------------------------------------------------------------------------*/

SELECT ROLE, OWNER, TABLE_NAME, PRIVILEGE

FROM ROLE_TAB_PRIVS

WHERE TABLE_NAME = 'DBA_OBJECTS'


/*-------------------------------------------------------------------------------

3. 롤을 다른 롤에 할당한 내역의 정보를 제공하는 뷰

-------------------------------------------------------------------------------*/

SELECT ROLE, GRANTED_ROLE, ADMIN_OPTION

FROM ROLE_ROLE_PRIVS

WHERE GRANTED_ROLE = 'SELECT_CATALOG_ROLE'


=> 위의 해당 ROW 중에서 ADMIN_OPTION이 YES인것은 
   ROLE 컬럼값이 DBA이며 GRANTED_ROLE 컬럼값이 SELECT_CATALOG_ROLE인 것이다.
==========================================================================
ROLE          |          GRANTED_ROLE         |        ADMIN_OPTION
--------------------------------------------------------------------------
DBA                   SELECT_CATALOG_ROLE                  YES
==========================================================================

ADMIN_OPTION 컬럼이 무엇을 말하는 것인지는 ALL_COL_COMMENTS 뷰에서 확인 가능하며
참고로 ALL_COL_COMMENTS 뷰는 모든 테이블의 컬럼에 대한 주석정보를 갖고 있다.

SELECT *
FROM ALL_COL_COMMENTS
WHERE TABLE_NAME = 'ROLE_ROLE_PRIVS'

ADMIN_OPTION 컬럼은 ADMIN 옵션으로 권한을 준 것임을 알수 있다.

ADMIN옵션이란 
해당 객체의 소유자가 ADMIN 옵션을 주어 권한을 할당하면, 
그 권한을 할당받은 사용자는 자기 자신이 해당 객체의 소유자가 아님에도 불구하고 
다른 사용자나 롤에 그 권한을 할당할 수 있음을 의미한다.

따라서 DBA 권한의 경우 
DBA 권한을 받은 사용자는 다른 사용자에게 DBA 권한을 줄수 있음을 의미한다.

결국 DBA_OBJECTS 뷰를 조회하기 위해서는 
SELECT_CATALOG_ROLE 이나 DBA 권한이 있어야 함을 알수 있다.



※ USER_ ~

USER로 시작되는 뷰들은 데이터 딕셔너리 중 가장 많이 참조되는 뷰들이다.

USER로 시작되는 뷰의 경우는 로그인한 사용자가 소유자가 되는 스키마 정보들을 갖고 있다.


/*-------------------------------------------------------------------------------

1.로그인한 사용자의 스키마에 해당하는 테이블의 컬럼 정보를 가지고 있는 뷰

-------------------------------------------------------------------------------*/

SELECT * FROM USER_TAB_COLS


/*-------------------------------------------------------------------------------

2.로그인한 사용자의 스키마에 해당하는 테이블, 컬럼에 대한 주석 정보를 가지고 있는 뷰

-------------------------------------------------------------------------------*/

SELECT * FROM USER_TAB_COMMENTS

SELECT * FROM USER_COL_COMMENTS


/*-------------------------------------------------------------------------------

3.오라클 버전 확인

-------------------------------------------------------------------------------*/

SELECT *FROM V$VERSION;


/*-------------------------------------------------------------------------------

4.제약조건에 대한 정보 확인

-------------------------------------------------------------------------------*/

SELECT *FROM USER_CONSTRAINTS


/*-------------------------------------------------------------------------------

5.사용자가 생성한 테이블 정보 확인

-------------------------------------------------------------------------------*/

SELECT *FROM USER_TABLES


/*-------------------------------------------------------------------------------

6.사용자가 생성한 인덱스 정보 확인

-------------------------------------------------------------------------------*/

SELECT *FROM USER_INDEXES


/*-------------------------------------------------------------------------------

7.사용자가 생성한 모든 오브젝트들의 정보 확인

-------------------------------------------------------------------------------*/

SELECT *FROM USER_OBJECTS


/*-------------------------------------------------------------------------------

8.특정한 컬럼들이 INSERT/UPDATE/DELETE 가능한지 확인

-------------------------------------------------------------------------------*/

SELECT *FROM USER_UPDATABLE_COLUMNS

WHERE TABLE_NAME = '뷰_이름'


/*-------------------------------------------------------------------------------

9.테이블의 컬럼과 그 데이터 타입을 조회하는 명령어

-------------------------------------------------------------------------------*/

DESC 테이블명

'database > db' 카테고리의 다른 글

[oracle] 오라클 오브젝트 CRUD  (0) 2020.03.20
[oracle] 2.데이터 타입(Data Type)  (0) 2020.03.08
[oracle] 파라미터  (0) 2020.03.08
[oracle] 1.사용자 계정, 권한설정  (0) 2020.03.07
[oracle] 무결성 제약조건  (0) 2017.04.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함