DB에 생성된 ROLE의 생성 정보 확인
가끔 ROLE의 생성 시기를 확인해야할 때가 있다.
하지만 DBA_ROLES에는 Role에 대한 생성 시간이 나오지 않는다.
이는 DBA_ROLE 뷰에 대해서 파헤쳐 보면 내용에 대해서 확인해 볼 수 있다.
먼저 DBA_ROLES을 조회하면 어떤 결과가 나올까?
SELECT * FROM DBA_ROLES; ROLE PASSWORD AUTHENTICAT COM O ---------------------------------------- -------- ----------- --- - CONNECT NO NONE YES Y RESOURCE NO NONE YES Y DBA NO NONE YES Y AUDIT_ADMIN NO NONE YES Y AUDIT_VIEWER NO NONE YES Y SELECT_CATALOG_ROLE NO NONE YES Y EXECUTE_CATALOG_ROLE NO NONE YES Y . . .
위와 같은 결과가 나온다.
그러나 생성일자와 시간에 대한 정보는 보이질 않는다.
그럼 DBA_ROLES 뷰에 대한 정의를 확인해 보자.
정의는 아래와 같다.
CREATE OR REPLACE FORCE VIEW SYS.DBA_ROLES ( ROLE ,PASSWORD_REQUIRED ,AUTHENTICATION_TYPE ) AS SELECT NAME , DECODE(PASSWORD, NULL, 'NO', 'EXTERNAL', 'EXTERNAL', 'GLOBAL', 'GLOBAL', 'YES') , DECODE(PASSWORD, NULL, 'NONE', 'EXTERNAL', 'EXTERNAL', 'GLOBAL', 'GLOBAL', 'APPLICATION', 'APPLICATION', 'PASSWORD') FROM USER$ WHERE TYPE# = 0 AND NAME NOT IN ('PUBLIC', '_NEXT_USER');
데이터를 확인해 보면 TYPE#=1 인 값은 User에 대한 정보이다.
TYPE#=0 인 데이터가 Role 인 것이다.
그럼 USER$에 대한 컬럼 정보를 확인해 보자.
sys@testdb> desc sys.user$ Name Null? Type --------------- -------- ------------------- USER# NOT NULL NUMBER NAME NOT NULL VARCHAR2(128) TYPE# NOT NULL NUMBER PASSWORD VARCHAR2(4000) DATATS# NOT NULL NUMBER TEMPTS# NOT NULL NUMBER CTIME NOT NULL DATE PTIME DATE EXPTIME DATE LTIME DATE RESOURCE$ NOT NULL NUMBER AUDIT$ VARCHAR2(38) DEFROLE NOT NULL NUMBER DEFGRP# NUMBER DEFGRP_SEQ# NUMBER ASTATUS NOT NULL NUMBER LCOUNT NOT NULL NUMBER DEFSCHCLASS VARCHAR2(128) EXT_USERNAME VARCHAR2(4000) SPARE1 NUMBER SPARE2 NUMBER SPARE3 NUMBER SPARE4 VARCHAR2(1000) SPARE5 VARCHAR2(1000) SPARE6 DATE SPARE7 VARCHAR2(4000) SPARE8 VARCHAR2(4000) SPARE9 NUMBER SPARE10 NUMBER SPARE11 TIMESTAMP(6)
컬럼 정보에 CTIME이 존재한다.
바로 CTIME 정보가 생성시간 정보에 해당한다.
즉, 아래의 SQL로 확인할 수 있다.
SELECT NAME , CTIME , DECODE(PASSWORD, NULL, 'NO', 'EXTERNAL', 'EXTERNAL', 'GLOBAL', 'GLOBAL', 'YES') PASSWORD_REQUIRED , DECODE(PASSWORD, NULL, 'NONE', 'EXTERNAL', 'EXTERNAL', 'GLOBAL', 'GLOBAL', 'APPLICATION', 'APPLICATION', 'PASSWORD') AUTHENTICATION_TYPE FROM USER$ WHERE TYPE# = 0 AND NAME NOT IN ('PUBLIC', '_NEXT_USER'); NAME CTIME PASSWORD AUTHENTICAT ---------------------------------------- ----------------- -------- ----------- CONNECT 20160204 14:43:14 NO NONE RESOURCE 20160204 14:43:14 NO NONE DBA 20160204 14:43:14 NO NONE AUDIT_ADMIN 20160204 14:43:14 NO NONE AUDIT_VIEWER 20160204 14:43:14 NO NONE SELECT_CATALOG_ROLE 20160204 14:43:14 NO NONE EXECUTE_CATALOG_ROLE 20160204 14:43:14 NO NONE . .
간혹 DBA 뷰에 대해 내부 정의를 확인해 볼 필요가 있다.
실제로는 보이지 않는 다른 정보들이 보이기 때문에 이런 부분에 대해서 알아 두는 것이 도움이 될 때가 있다.
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
14 | Schema Password 복사 하기 | Talros | 2016.10.05 | 3473 |
13 | Block Cleanout(블럭 클린아웃) | 명품관 | 2016.09.23 | 1764 |
12 | Fixed Table에 대한 권한은 직접적으로 부여되지 않는다. | 명품관 | 2016.08.26 | 2913 |
11 | Oracle Archive log 사용량 확인(GV$ARCHIVED_LOG) [1] | 에밀리오 | 2016.08.04 | 11817 |
10 | Oracle Resource Limit를 이용한 간단한 Parameter Check (GV$RESOURCE_LIMIT) | 에밀리오 | 2016.07.15 | 2449 |
9 | Oracle VMSTAT을 이용한 CPU 사용량 활용법 | 에밀리오 | 2016.07.14 | 1089 |
8 | Kill Session Script (GV$SESSION) | 에밀리오 | 2016.07.12 | 2325 |
7 | Active Session History를 이용한 TOP SQL 분석 (GV$ACTIVE_SESSION_HISTORY) | 에밀리오 | 2016.07.12 | 1396 |
» | DB에 생성된 ROLE의 생성 정보 확인 [2] | 명품관 | 2016.05.31 | 1949 |
5 | 내가 돌린 SQL ID 찾기 [1] | Talros | 2016.05.12 | 9004 |
4 | 테이블 컬럼의 Default 값에 대한 흔적은 Dictionary에 계속 남게 된다. | 명품관 | 2016.04.05 | 1717 |
3 | Result Cache(oracle11g NF) [6] | ocm10gr2 | 2016.03.14 | 372 |
2 | Alert Log를 SQL 사용하여 보기 (X$DBGALERTEXT) [1] | 에밀리오 | 2016.01.28 | 2259 |
1 | Partition 추가의 계절 - Range Partition 추가시 알아 두어야할 부분 [1] | 명품관 | 2015.12.03 | 2520 |