收到一个监控用户无法连接数据库的告警,Oracle提示错误消息ORA-28001: the password has expired,上去查看用户状态竟然是expired,获取用户基本信息脚本如下:- m. ^/ r0 i5 ?; w3 D0 A/ Z( Y) Z
; @* R6 G# f0 w+ B) L
connect / as sysdba;# d- I% K6 Q. P; y5 W2 n8 l
+ [0 |& n; S' |; ~. E' @' `% K col username for a164 ^0 s3 m* p' ?2 _! s; I. a. f& m- b
1 l: q* H" s l col password for a18 T7 ]2 Y+ c% p
0 b' p5 C( c9 y V+ T. w2 N; z; ?
col user_id for 999999, N; n" L* i( X5 |5 C* k6 J
. u) u! D+ R9 ]
col account_status heading 'Account|Status' for a20
' P( C% X) _% h/ b# p , {9 ?* Z, k7 ~; M+ U9 ^
col default_tablespace heading 'Default|Tablespace' for a25$ A! k" B' c4 q. @4 ]* f4 T' E
$ b Z [4 P/ ]4 t+ X col temporary_tablespace heading 'Temporary|Tablespace' for a120 `8 S* W: ^; D
* \0 b1 g9 Q n6 y set lines 125* ~5 g: _$ Z& u* C9 _
9 \& _$ `5 w' D- Z6 H% m set pages 1001 |; X) T6 d1 z; l
! Z" m# n; `: h$ S/ Y9 {* r( Q
select username,user_id,password,account_status,default_tablespace,temporary_tablespace,to_char(created,'yyyy-mm-dd hh24:mi:ss') created* B6 K4 I/ u9 }
2 z* u; y$ M' B1 y" K. ~ from dba_users
. G% W3 T; t+ D- _! C) F4 G% A
$ q) w) u8 [8 J7 o# T1 I" k2 }/ z order by username;
" }# k5 i1 o/ G4 J* c
[3 K$ m7 g& s; u: [ 这是Oracle11G的一个新特性, Oracle11G创建用户时缺省密码过期限制是180天,如果超过180天用户密码未做修改则该用户无法登录。
3 Z3 \/ W+ d, k6 ^! g 转自:考试网 - [Examw.Com]2 w o' n% G1 L) ~5 u, m
查看PROFILE设置
, \, ~0 A' x6 { H r
3 w0 [9 o1 [: \ select * from dba_profiles where profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME';
; X2 l1 c- t3 z) y, U, F! U
- w5 W2 D1 |1 Z& v; ^ DEFAULT PASSWORD_LIFE_TIME PASSWORD 180% y) P6 `+ Q0 m6 t: j0 ^! `
8 E& P+ r4 e' O8 b 处理逻辑,将用户密码修改并判断是否需要这个策略- o7 C4 v$ u9 ~, S* u
. X6 F; P5 g3 _; w& x
ALTER USER 用户名 IDENTIFIED BY 密码 ;
9 Q$ P' {3 @# {" L3 G0 l # T; p8 P4 e) j8 t
语句进行修改密码,密码修改后该用户可正常连接数据库。
0 O# Y2 ~+ ~, r
C, v% ]* N8 N+ W- } 如果需要修改策略1 G5 C% P6 c* w
6 _) u8 X* D0 k
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED0 x1 A! @, D4 A+ x6 ^2 o
$ ^8 p" V) p" t% ^/ @ 语句将口令有效期默认值180天修改成"无限制". |