오라클 클라이언트에서 오라클 서버로 접속하는 방법에는
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이라는 계정의 비밀번호를 변경할수 있다.
* 물론 다른 계정의 비밀번호도 이와 같은 방식으로 변경할수 있다.
[출처] Oracle System 관리계정의 비밀번호를 잊어버렸을때... |작성자 webmare