问题描述:
在oracle 12.2.0.1 版本中 PUS 已打到201901月, 此时数据库有多个帐号过期,通过 alter user xx identified by xxx ; 方式更改,延长数据库帐号的过期时间,但是,无论怎么更改sys的密码,包括更新profile ,sys的过期时间没有任何延长或变化。而查看Sys.user $ 的PTIME,即密码更新日期也没有变化。
适用于:
Oracle数据库 - 企业版 - 12.2.0.1及更高版本
本文档中的信息适用于任何平台。
目标
应用JULY2018 PSU后,我们注意到SYS用户的EXPIRY_DATE没有更新。
更改除SYS之外的模式密码后,所有其他用户expiry_date都会更新。如果补丁被回滚,则SYS密码会更新。
select USERNAME, EXPIRY_DATE from DBA_USERS where username in ('SYSTEM', 'SYS); USERNAME EXPIRY_DATE ------------------------------ SYS 23-JAN-19 SYSTEM 23-JAN-19 ALTER USER SYSTEM IDENTIFIED BY "XXXXXXXXXXXXXX"; USERNAME EXPIRY_DATE ------------------------------ SYS 23-JAN-19 SYSTEM 25-MAR-19 ALTER USER SYS IDENTIFIED BY "XXXXXXXXXXXXXX"; USERNAME EXPIRY_DATE ------------------------------ SYS 23-JAN-19 <===== DID NOT UPDATE SYSTEM 25-MAR-19 -- Rollback JULY2018 RU (including datapatch -verbose) -- ALTER USER SYS IDENTIFIED BY "XXXXXXXXXXXXXX"; USERNAME EXPIRY_DATE ------------------------------ SYS 25-MAR-19 <===== IT WORKED!!! SYSTEM 25-MAR-19
解
错误28674210 - 应用12.2.0.1.180717PSU后EXPTIME / PTIME NOT UPDATED CHANGING SYSPASSWORD
以上错误已作为以下
错误的副本关闭错误28538439:在应用7月PSU后未获得更新的PTIME
解决方案是应用Bug补丁28538439然后设置隐藏参数。(在init.ora中设置,然后重新启动数据库)
alter system set "_enable_ptime_update_for_sys"=true scope=spfile; shutdown immediate; startup; select expiry_date from dba_users where username = 'SYS'; select ptime, exptime from sys.user$ where name = 'SYS'; alter user sys identified by ""; select expiry_date from dba_users where username = 'SYS'; select ptime, exptime from sys.user$ where name = 'SYS';
*注意:如果你不应用补丁,在设置隐藏参数时会出现错误:
ORA-02065:ALTER SYSTEM的非法选项
参考
BUG:28674210 - 应用后的EXPTIME / PTIME NOT UPDATED CHANGING SYSPASSWORD 12.2.0.1.180717PSU
BUG:28538439 - 在应用7月PSU后未进行更新的系统的PTIME