เช่น userA ใช้ profileA ซึ่งใน profileA กำหนดว่า user จะต้องเปลี่ยน password ทุกๆ 180 วัน แบบนี้เป็นต้น
ดังนั้น user ไม่มีการเปลี่ยน password ในเวลาที่กำหนด password ก็จะ expired และเมื่อ log in ก็จะได้ error แบบนี้
ORA-28001: The password has expired
เราจะรู้ได้อย่างไร ว่า user ไหนใช้ profile ไหน และ profile set ไว้อย่างไร ดูได้ดังนี้ค่ะ
> select profile
from dba_users
where username = '<username>';
ซึ่งตัวอย่างคำสั่งข้างต้นเราจะได้ชื่อของ profile ที่ user นั้นๆ ใช้อยู่ จาก profile ถ้าอยากรู้ว่า profile set ไว้อย่างไร ก็ sql command นี้ค่ะ
> select resource_name, resource_type, limit
from dba_profiles
where profile = '<profile>';
แทนที่ชื่อ profile ที่ได้จากคำสั่งข้างต้น ก็จะได้ผลลัพธ์ออกมาประมาณนี้
RESOURCE_NAME RESOURCE LIMITสำหรับการดูว่า user จะ expired ภายในกี่วัน ดูจาก resouce_name ที่ชื่อ PASSWORD_LIFE_TIME ซึ่งในกรณีข้างต้น password จะ expired ภายใน 180 วัน และ user จะต้องเปลี่ยน password ภายในเวลาที่กำหนดไว้ใน PASSWORD_GRACE_TIME ซึ่งก็คือ 7 วัน มิฉะนั้นแล้ว ก็จะ error ดังข้างต้น
-------------------------------- -------- ----------------------------------------
COMPOSITE_LIMIT KERNEL UNLIMITED
SESSIONS_PER_USER KERNEL UNLIMITED
CPU_PER_SESSION KERNEL UNLIMITED
CPU_PER_CALL KERNEL UNLIMITED
LOGICAL_READS_PER_SESSION KERNEL UNLIMITED
LOGICAL_READS_PER_CALL KERNEL UNLIMITED
IDLE_TIME KERNEL UNLIMITED
CONNECT_TIME KERNEL UNLIMITED
PRIVATE_SGA KERNEL UNLIMITED
FAILED_LOGIN_ATTEMPTS PASSWORD 10
PASSWORD_LIFE_TIME PASSWORD 180
PASSWORD_REUSE_TIME PASSWORD UNLIMITED
PASSWORD_REUSE_MAX PASSWORD UNLIMITED
PASSWORD_VERIFY_FUNCTION PASSWORD NULL
PASSWORD_LOCK_TIME PASSWORD 1
PASSWORD_GRACE_TIME PASSWORD 7
16 rows selected.
ในกรณีที่ ถ้าเกิด error แล้ว ต้องการจะแก้ไข จะต้องใช้ DBA เป็นคนเข้าไปเปลี่ยน password ของ user คนนั้นค่ะ โดย sql command ดังนี้
> alter user <username> identified by <new_password>;
Reference:
ORA-28001: The password has expired
Oracle profile
No comments:
Post a Comment