개발자의 팩션골드의 지식베이스 입니다.

최근에 갑자기 회사에 DB가 접속이 안된다..
이상해서 STARTUP 도 하고 하였으나 안된다. 이상하다?
리스너도 재실행하고 하는데 안된다..

근데... xshell을 이용하여 접속해보니!!!
password가 EXPIRE 되었단다..

예전에는 이런 문제 없었는데...

변경된건 oracle의 버전이 변경되었다는 걸....
여기저기를 검색결과 답을 찾았다!!.ㅋㅋ

Oracle 11부터 password의 default limit 설정이 변경되었다는 것이다..


ORACLE 9
>select resource_name, limit from dba_profiles where profile = 'DEFAULT'

RESOURCE_NAME                      LIMIT
-----------------------------   ---------------------------
FAILED_LOGIN_ATTEMPTS           UNLIMITED
PASSWORD_LIFE_TIME             UNLIMITED
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_VERIFY_FUNCTION NULL
PASSWORD_LOCK_TIME UNLIMITED
PASSWORD_GRACE_TIME UNLIMITED


ORACLE 11
>select resource_name, limit  from dba_profiles  where profile = 'DEFAULT' and resource_type='PASSWORD';

RESOURCE_NAME                      LIMIT
-----------------------------   ---------------------------
FAILED_LOGIN_ATTEMPTS         10
PASSWORD_LIFE_TIME             180
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_VERIFY_FUNCTION NULL
PASSWORD_LOCK_TIME 1
PASSWORD_GRACE_TIME 7

FAILED_LOGIN_ATTEMPTS 
: 로그인을 실패했을 경우에 대한 제한 횟수
PASSWORD_LIFE_TIME 
: 암호 변경 일수 (설정한 날 이후에는 암호가 expired 됩니다.)
PASSWORD_REUSE_TIME
: 사용했던 암호를 다시 사용 가능한 기간
PASSWORD_REUSE_MAX
: 사용했던 암호 기억 횟수 (사용했던 암호를 재사용하지 못하도록 하는것)
PASSWORD_VERIFY_FUNCTION
: 암호 복잡성 검사 함수를 사용하기 위한 설정
PASSWORD_LOCK_TIME
: 암호 잠김 시간 (1/1440 으로 설정하면 1분동안 잠김)
PASSWORD_GRACE_TIME
: 암호 변경 메세지를 출력 날짜를 의미합니다




그렇다면 수정은 어떻게 할 것인가???

>alter profile default limit password_life_time unlimited;
프로파일이 변경되었습니다.




[참조]





Comment +0

참고

kor 버전으로 받는다면 기본적으로 설치되는 버전은 KO16MSWIN949 일 경우가 많다.

한글을 지원하는 Character Set을 비교해보자.

1. KO16KSC5601

    - 한글 지원상태 : 한글 2350자

    - 지원버전 : 7.x

    - 한글바이트 : 2바이트

2. KO16MSWIN949

    - 한글 지원상태 : KO16KSC5601 + 확장 ( 총 11172자 )

    - 지원버전 : 8.0.6 이상

    - 한글바이트 : 2바이트

3. UTF8

    - 한글 지원상태 : 한글 11172자

    - 지원버전 : 8.0 이후

    - 한글바이트 : 3바이트

4. AL32UTF8

    - 한글 지원상태 : 한글 11172자

    - 지원버전 : 9i Release 1 이상

    - 한글바이트 : 3바이트

UTF8은 많은 문자를 지원하지만 한글을 3바이트 소모한다는 단점이 있다.

(못느낄 정도로 빠른 컴퓨터가 별 차이가 없을 듯함)

** National Characterset은 UTF8과 AL16UTF16(기본값)만 지원

 

캐릭터셋이 어떻게 설정되어 있나 확인 쿼리는 다음과 같다

 

Oracle Character Set 변경

1. 접속

sqlplus '/as sysdba'



2. 확인

select distinct(nls_charset_name(charsetid)) CHARACTERSET, decode(type#, 1, decode(charsetform, 1, 'VARCHAR2', 2, 'NVARCHAR2','UNKOWN'), 9, decode(charsetform, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKOWN'), 96, decode(charsetform, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'), 112, decode(charsetform, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN from sys.col$ where charsetform in (1,2) and type# in (1, 9, 96,112);


3. 변경

Characterset: KO16MSWIN949,National Characterset: AL16UTF16 로 변경하는 방법

update sys.props$ set value$='KO16MSWIN949' where name='NLS_CHARACTERSET';

update sys.props$ set value$='AL16UTF16' where name='NLS_NCHAR_CHARACTERSET';

update sys.props$ set value$='KOREAN_KOREA.KO16MSWIN949' where name='NLS_LANGUAGE';

commit; 

shutdown immediate; 

startup mount; 

alter system enable restricted session; 

alter system set job_queue_processes=0; 

alter system set aq_tm_processes=0; 

alter database open; 

alter database character set KO16MSWIN949; 

shutdown immediate; 
startup; 



Characterset: WE8MSWIN1252,National Characterset: AL16UTF16 로 변경하는 방법

update sys.props$ set value$='WE8MSWIN1252' where name='NLS_CHARACTERSET';

update sys.props$ set value$='AL16UTF16' where name='NLS_NCHAR_CHARACTERSET';

update sys.props$ set value$='AMERICAN_AMERICA.WE8MSWIN1252' where name='NLS_LANGUAGE';

commit; 

shutdown immediate; 

startup mount; 

alter system enable restricted session; 

alter system set job_queue_processes=0; 

alter system set aq_tm_processes=0; 

alter database open; 

alter database character set KO16MSWIN949; 

shutdown immediate; 
startup; 

Comment +1


//인덱스명 바꾸기
ALTER INDEX 기존명 RENAME TO  변경명;

//트리거명 바꾸기
ALTER TRIGGER 기존명 RENAME TO  변경명;

//제약조건(CONSTRAINT)명 바꾸기
ALTER table 테이블명 RENAME CONSTRAINT 기존명 TO 변경명;

Comment +0