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 | External Table 기능을 사용해 파일 읽기 | 명품관 | 2017.04.05 | 965 |
» | DB에 생성된 ROLE의 생성 정보 확인 [2] | 명품관 | 2016.05.31 | 926 |
12 | Oracle VMSTAT을 이용한 CPU 사용량 활용법 | 에밀리오 | 2016.07.14 | 906 |
11 | OS 터미널 접속 없이 오라클 접속을 통해 OS CPU 사용율 모니터링 하기 [3] | 명품관 | 2020.12.22 | 828 |
10 | ORA-3136 inbound connection time out & JDBC Io exception: Connection reset [1] | Talros | 2023.02.24 | 729 |
9 | SQL Plan Management(SPM) - 3 Manual Plan Capture | 명품관 | 2020.06.01 | 666 |
8 | Python 을 이용해 파일 업로드 해 보기 [1] | Talros | 2023.04.19 | 617 |
7 | SQL Plan Management(SPM) - 2 DBMS_SPM.CONFIG로 필터링 | 명품관 | 2020.03.26 | 605 |
6 | default 값을 포함한 컬럼 추가시 오라클 버전별 개선 사항 [1] | 명품관 | 2023.01.17 | 583 |
5 | ORA-28014: Cannot Drop Administrative Users 에러 현상 [1] | 명품관 | 2023.03.27 | 465 |
4 | mbr(multi block read) 과 sbr(single block read) 사이에 과연 어떤 방식을 선택해야 할까요? [1] | 명품관 | 2022.09.16 | 365 |
3 | 수집된 통계가 바로 반영되지 않고 원할 때 반영하도록 하는 방식 | 명품관 | 2023.04.04 | 294 |
2 | Result Cache(oracle11g NF) [6] | ocm10gr2 | 2016.03.14 | 272 |
1 | Windows 접속 에러 ORA-12638 [1] | Talros | 2024.02.14 | 119 |