자료 출처 : http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10110&eid=aNQh0mhwE7lk3e0Fs4qSFKrPQfLnz0Rr&qb=T1JBQ0xFIHN5c3RlbSBsb2NrZWQ=&pid=fLNwfloi5U4ssuARjyssss--167216&sid=IQKNpbJs00gAAAN9Ft8AAAA-

 

오라클 클라이언트에서 오라클 서버로 접속하는 방법에는

3가지가 있습니다.

normal ,sysdba , sysoper

normal 은 일반 사용자로 들어가는거구요

sysdba 는 dba 의 권한으로 들어가는겁니다.

sysoper는 사용을 안해봐서 정확히...ㅋㅋ(아마 operation 쯤? 운영자 권한? 머..)

이때 사용하는 구문으로 as 를 쓰는데 이때 쓰는 as 는 sqlplus 에서 쓰는 구문이지

table 이나  column 에 alias 를 줄때 쓰는 as 랑은 의미상 다릅니다.

 

sys 계정과 system 계정으로 normal 접속이 가능하구요

일반 scott 나 hr 계정으로 sysdba 접속이 가능합니다.

(물론 dba 권한이 있어야 하겠지요.아닌가?....로컬이면 되나?)

 

9i 부터 scott/tiger 계정은 디폴트로

"EXPIRED & LOCKED" 이 되어 있습니다.

정확한 이유는 모르겠지만 제 소견으로는

9i 부터 iSqlPlus 라는 놈이 기본적으로 설치가 되는데

이러면 어떤곳에서든 웹 브라우저로 해당 서버에 접속할수 있게 되는데

오라클이라면 기본적으로 제공되는 scott 계정과 hr 계정으로도 쉽게 접근이 가능하다는 뜻이될터이고

보안상 취약하게 되는거죠

아마 그래서 isqlplus 에서 접속을 하지 못하도록 모두가 아는 scott/tiger 를 막아둔게 아닌가하는....

 

계정이 잠겨있는지 열려있는지 확인하려면

dictionary 에 dba_users 라는 시스템 정보 테이블이 있습니다.

이 테이블의 구조를 보시고 원하시는 정보를 확인할수 있습니다.

여러가지 컬럼중에 account_status 라는 컬럼이 계정이 잠겨있는지 열려있는지에 대한 정보가 들어가 있습니다.

 

노파심에 쿼리를 드립니다.

 

1.

conn /as sysdba

 

2.

select * from dictionary

where table_name like 'DBA_U%';

 

3.

desc DBA_USERS;

 

4.

select username ,account_status,default_tablespace,created from dba_users;

/////////////////////////////////////////////////////////////////////////

 

****   Locked_object 검색   ****

select a.session_id as SESSION_ID,

b.serial# as SERIAL_NO,

a.os_user_name as OS_USER_NAME,

a.oracle_username as ORACLE_USERNAME,

b.status as STATUS

from v$locked_object a, v$session b

where a.session_id = b.sid

**** session 잘라내기 ****

alter system kill session '108,249'

[출처] [oracle] Locked object 찾아내기 및 세션 잘라내기|작성자 skyhyunsik

 

/////////////////////////////////////////

어느날 회사 오라클 10g 서버에 황당하게도 SYSTEM계정이 로그인이 되지 않았다.

 

[user@localhost ~]$ sqlplus

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Apr 23 20:58:24 2007

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Enter user-name: system

Enter password:
error:
ora-28000: the account is locked

 

ㅡ.,ㅡ SYSTEM계정이 로그온이 되지 않는건 너무하지 않는가?

 

일반적으로 Lock Down시 푸는 일은 SYSTEM계정에서 수행한다.

 

그러면... SYSTEM계정의 Lock은 누가 풀까?

 

우선 해당 계정에 대한 Lock정보는 dba_users dictionary에서 확인할 수 있다.

 

크게 2가지 방법이 있는데....

 

① Linux계열 시스템이라면 system계정이 ORACLE을 설치하면서 생성되었을 것이다.
    Linux의 system계정으로 login한 후

[system@localhost ~]$sqlplus "/ as sysdba"

② Windows 시스템이라면 아래와 같이 Lock이 되지 않은 sys계정으로 접속을 시도한다.

 

C:\>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Apr 23 21:07:44 2007

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


SQL> conn sys/비밀번호@호스트 as sysdba
Connected.
SQL>

정상적으로 connecting이 되었는지 확인한다.

 

SQL> show user;
USER is "SYS" (또는 "SYSTEM")
SQL>

SQL>SELECT USERNAME, ACCOUNT_STATUS,

                     TO_CHAR(LOCK_DATE, 'YYYY-MM-DD HH24:MI') LOCK_DATE, PROFILE

          FROM DBA_USERS;

 

위와 같이 SELECT를 해보면 계정들의 상태를 확인 할 수 있다. (OPEN, LOCKED, EXPIRED & LOCKED)

 

SYSTEM계정의 잠금해제는

SQL> ALTER USER SYSTEM ACCOUNT UNLOCK;


정상적으로 update되었다면 system계정의 lock down은 풀렸을 것이다.

일반계정의 Lock상태를 푸는 것도 동일하므로 참고하기 바란다.

////////////////////////////////////////////////

이전의 비밀번호를 알아낼수는 없으며, 콘솔로 접속하여 변경은 가능하다.

 

토드나 기타의 DB클라이언트로는 안되며,

서버의 로컬에서 oracle이 설치되어있는 디렉토리의

bin 디렉토리에서 콘솔을 띄운후 (path에 이 경로가 들어있다면 굳이 이동할 필요는 없다.)

 

sqlplus "/ as sysdba"
또는
sqlplus " sys as sysdba"
라고 입력한후

암호를 입력하라고할때 엔터치면 로그인된다.

 

SQL> alter user system  identified by 비밀번호

 

이렇게 입력하면 system이라는 계정의 비밀번호를 변경할수 있다.

 

* 물론 다른 계정의 비밀번호도 이와 같은 방식으로 변경할수 있다.

+ Recent posts