IT

Oracle 암호 만기를 끄려면 어떻게합니까?

lottoking 2020. 5. 28. 08:07
반응형

Oracle 암호 만기를 끄려면 어떻게합니까?


개발을 위해 Oracle을 사용하고 있습니다. 데이터베이스를 다시 작성하기 위해 항상 사용하는 부트 스트랩 계정의 비밀번호가 만료되었습니다.

이 사용자 (및 다른 모든 사용자)의 암호 만료를 영구적으로 끄려면 어떻게합니까?

암호가 기본적으로 만료되는 Oracle 11g를 사용하고 있습니다.


Oracle의 특정 사용자 프로필에 대한 비밀번호 만료 정책을 변경하려면 먼저 사용자가 사용중인 프로필을 확인하십시오.

select profile from DBA_USERS where username = '<username>';

그런 다음 다음을 사용하여 제한이 만료되지 않도록 변경할 수 있습니다.

alter profile <profile_name> limit password_life_time UNLIMITED;

이전에 한도를 확인하려면 다음을 사용할 수 있습니다.

select resource_name,limit from dba_profiles where profile='<profile_name>';

개발위해 다른 프로파일이 설정되지 않은 경우 비밀번호 정책을 비활성화 할 수 있습니다 (예 : 기본적으로 비밀번호 만료 비활성화).

ALTER PROFILE "DEFAULT" LIMIT PASSWORD_VERIFY_FUNCTION NULL;

그런 다음 비밀번호를 재설정하고 사용자 계정을 잠금 해제하십시오. 다시는 만료되지 않아야합니다.

alter user user_name identified by new_password account unlock;

다른 답변 상태에서 사용자 프로필 (예 : 'DEFAULT'프로필)을 적절하게 변경하면 암호가 설정되어 한 번 설정되면 만료되지 않습니다.

그러나 한 의견자가 지적했듯이 프로필의 이전 값으로 설정된 비밀번호는 이미 만료되어있을 수 있으며 (프로파일의 지정된 유예 기간이 지난 경우) 계정이 잠길 수 있습니다.

계정이 잠긴 만료 된 비밀번호에 대한 해결책은 (응답 설명에 제공된대로) ALTER USER 명령의 한 버전을 사용하는 것입니다.

ALTER USER xyz_user ACCOUNT UNLOCK;

그러나 unlock 명령은 계정이 실제로 잠겨있는 계정에 대해서만 작동하지만 유예 기간에있는 계정, 즉 암호가 만료되었지만 계정이 아직 잠겨 있지 않은 계정에는 작동하지 않습니다. 이러한 계정의 경우 다른 버전의 ALTER USER 명령으로 비밀번호를 재설정해야합니다.

ALTER USER xyz_user IDENTIFIED BY new_password;

다음은 권한있는 사용자 (예 : 사용자 'SYS')가 사용자 비밀번호를 데이터베이스에 저장된 현재 해시 값으로 재설정하는 데 사용할 수있는 작은 SQL * Plus 스크립트입니다.

편집 : 이전 버전의 Oracle은 비밀번호 또는 비밀번호 해시를 pword 열에 저장하고 최신 버전의 Oracle은 비밀번호 해시를 spare4 열에 저장합니다. 아래 스크립트는 pword 및 spare4 열을 수집하지만 spare4 열을 사용하여 사용자 계정을 재설정하도록 변경되었습니다. 필요에 따라 수정하십시오.

REM Tell SQL*Plus to show before and after versions of variable substitutions.
SET VERIFY ON
SHOW VERIFY

REM Tell SQL*Plus to use the ampersand '&' to indicate variables in substitution/expansion.
SET DEFINE '&'
SHOW DEFINE

REM Specify in a SQL*Plus variable the account to 'reset'.
REM Note that user names are case sensitive in recent versions of Oracle.
REM DEFINE USER_NAME = 'xyz_user'

REM Show the status of the account before reset.
SELECT
  ACCOUNT_STATUS,
  TO_CHAR(LOCK_DATE, 'YYYY-MM-DD HH24:MI:SS') AS LOCK_DATE,
  TO_CHAR(EXPIRY_DATE, 'YYYY-MM-DD HH24:MI:SS') AS EXPIRY_DATE
FROM
  DBA_USERS
WHERE
  USERNAME = '&USER_NAME';

REM Create SQL*Plus variable to hold the existing values of the password and spare4 columns.
DEFINE OLD_SPARE4 = ""
DEFINE OLD_PASSWORD = ""

REM Tell SQL*Plus where to store the values to be selected with SQL.
REM Note that the password hash value is stored in spare4 column in recent versions of Oracle,
REM   and in the password column in older versions of Oracle.
COLUMN SPARE4HASH NEW_VALUE OLD_SPARE4
COLUMN PWORDHASH NEW_VALUE OLD_PASSWORD

REM Select the old spare4 and password columns as delimited strings 
SELECT 
  '''' || SPARE4 || '''' AS SPARE4HASH,
  '''' || PASSWORD || '''' AS PWORDHASH
FROM 
  SYS.USER$ 
WHERE 
  NAME = '&USER_NAME';

REM Show the contents of the SQL*Plus variables
DEFINE OLD_SPARE4
DEFINE OLD_PASSWORD

REM Reset the password - Older versions of Oracle (e.g. Oracle 10g and older) 
REM ALTER USER &USER_NAME IDENTIFIED BY VALUES &OLD_PASSWORD;

REM Reset the password - Newer versions of Oracle (e.g. Oracle 11g and newer) 
ALTER USER &USER_NAME IDENTIFIED BY VALUES &OLD_SPARE4;

REM Show the status of the account after reset
SELECT
  ACCOUNT_STATUS,
  TO_CHAR(LOCK_DATE, 'YYYY-MM-DD HH24:MI:SS') AS LOCK_DATE,
  TO_CHAR(EXPIRY_DATE, 'YYYY-MM-DD HH24:MI:SS') AS EXPIRY_DATE
FROM
  DBA_USERS
WHERE
  USERNAME = '&USER_NAME';


암호 만료 동작은 기본적으로 만료되지 않는 것으로 생각합니다. 그러나 개발자 사용자 집합에 대한 프로필을 설정하고을 설정할 수 PASSWORD_LIFE_TIME있습니다. 자세한 내용은 orafaq 를 참조하십시오. 한 사람의 관점과 사용법에 대한 예는 여기참조 하십시오 .


I will suggest its not a good idea to turn off the password expiration as it can lead to possible threats to confidentiality, integrity and availability of data.

However if you want so.

If you have proper access use following SQL

SELECT username, account_status FROM dba_users;

This should give you result like this.

   USERNAME                       ACCOUNT_STATUS
------------------------------ -----------------

SYSTEM                         OPEN
SYS                            OPEN
SDMADM                         OPEN
MARKETPLACE                    OPEN
SCHEMAOWNER                    OPEN
ANONYMOUS                      OPEN
SCHEMAOWNER2                   OPEN
SDMADM2                        OPEN
SCHEMAOWNER1                   OPEN
SDMADM1                        OPEN
HR                             EXPIRED(GRACE)

USERNAME                       ACCOUNT_STATUS
------------------------------ -----------------

APEX_PUBLIC_USER               LOCKED
APEX_040000                    LOCKED
FLOWS_FILES                    LOCKED
XS$NULL                        EXPIRED & LOCKED
OUTLN                          EXPIRED & LOCKED
XDB                            EXPIRED & LOCKED
CTXSYS                         EXPIRED & LOCKED
MDSYS                          EXPIRED & LOCKED

Now you can use Pedro Carriço answer https://stackoverflow.com/a/6777079/2432468

참고URL : https://stackoverflow.com/questions/1095871/how-do-i-turn-off-oracle-password-expiration

반응형