본문 바로가기

카테고리 없음

ORACLE 9i dba_users view v1.0

user를 검색하는데 자주사용되는 view로 dba_users user_users all_users 가 있다.

dba_users 테이블을 조회하면

SQL> desc dba_users
 Name                                      Null?    Type
 ----------------------------------------- -------- ---------------------------
 USERNAME                                  NOT NULL VARCHAR2(30)
 USER_ID                                   NOT NULL NUMBER
 PASSWORD                                           VARCHAR2(30)
 ACCOUNT_STATUS                            NOT NULL VARCHAR2(32)
 LOCK_DATE                                          DATE
 EXPIRY_DATE                                        DATE
 DEFAULT_TABLESPACE                        NOT NULL VARCHAR2(30)
 TEMPORARY_TABLESPACE                      NOT NULL VARCHAR2(30)
 CREATED                                   NOT NULL DATE
 PROFILE                                   NOT NULL VARCHAR2(30)
 INITIAL_RSRC_CONSUMER_GROUP                        VARCHAR2(30)
 EXTERNAL_NAME                                      VARCHAR2(4000)

위와 같은 정보가 출력된다.

위에서 주로 사용되는 정보는
USERNAME 이다. (말해놓고보니 다른 컬럼들은 다들 옵션 느낌이...)

USERNAME 은 USER ID (ORACLE LOGON 시 사용하는) 이다.

USER_ID 는 USER를 숫자 정보로 가진다.
사용자 생성시마다 최대넘버에서 하나씩 증가된 값을 할당 받는다
다만 view에서 조회했을때 보이는 최대값+1 값이 할당 받는 것은 아니다.
전에 생성했다 drop한 user도 고려되는 듯 하다.
간단히 말해 sequence의 경우를 생각하면 될듯

password는 물론 password 값을 조회한다.
but 사용자가 알수 없는 값으로 변환된 값이다.
자신이 sysdba로도 본래 값을 볼 수 없다.
alter user로 패스워드 재할당 하는편이 속편하다.

account_status는 해당계정이 사용가능한지 확인한다.
계정이 잠겨있으면 locked 가 나오고 반대의 경우는 open 상태이다.

LOCK_DATE는 계정이 잠긴 날짜를 표시한다.

EXPIRY_DATE는 계정이 EXPIRED 상태가 된 날짜를 출력한다.

아래에스는 user를 expire 시킨후 expired된 user가 접근했을 때 모습이다.

SQL> ALTER USER HR PASSWORD
  2  EXPIRE;

User altered.

SQL> select username,expiry_date from dba_users;

USERNAME                       EXPIRY_DA
------------------------------ ---------
SYS
SYSTEM
DBSNMP
OUTLN
SCOTT
SH
HR                             01-NOV-08

7 rows selected.

SQL> conn hr/hr
ERROR:
ORA-28001: the password has expired


Changing password for hr
New password:
Retype new password:

Password changed
Connected.

위와 같이 연결을 열었을때 새로운 패스워드를 만들게 된다.

default_tablespace는 테이블이 기본적으로 사용하는 tablespace를 조회한다.
tablespace 생성시 아무옵션 주지 않으면 system tablespace를 차지하는 비극이 일어난다.
내가 사용하는 일반 유저도 몇몇이 위 상태라는 ...;;

/*+ 테이블스페이스 간의 세그먼트 이동에 대해서는 나중에 이야기 하도록 하겠다 */

created 는 생성된 날짜를 의미한다.

profile 은 부여된 profile (사용자 관리 정책) 을 의미한다.
따로 할당하지 않으면 default값을 가진다.

INITIAL_RSRC_CONSUMER_GROUP
유저를 위한 기본 리소스 소비그룹을 의미한다.

EXTERNAL_NAME
user external name 이라 한다.

/*+ 용도는 나도 모르겠다... 알아봐야 할 듯 */

소개는 모두 끝났다.

각 컬럼에 대해서는 해당 용도에 따라 사용여부가 판이하게 갈리는 느낌이다.

평소에는 스스로 어떤 유저를 만들었는지 가물가물할때 자주 이용하게 될 듯 하다 -_-;