Oracle设置密码永不过期的方法
作者:Ice Wang
Oracle 设置密码永不过期
OSB中AdminServer启动报错:
WARNING: Can not connect DB with URL jdbc:oracle:thin:@//xxxx:1521/xx
java.sql.SQLException: ORA-28001: the password has expired
oracle.security.jps.JpsException: JPS-01055: Could not create credential store instance. Reason oracle.security.jps.service.policystore.PolicyStoreException: Can not connect DB with URL [jdbc:oracle:thin:@//xxxxxxxx:1521/xx
1、查看用户的proifle是那个,一般是default:
sql>SELECT username,PROFILE FROM dba_users;
2、查看指定概要文件(如default)的密码有效期设置:
sql>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
3、将密码有效期由默认的180天修改成“无限制”:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
plsql中操作:
password expire:用来设置用户口令过期,失效,强制用户登录数据库时候必须修改口令
去掉勾选项:
参考资料:
执行默认数据库安装,即所有密码将在180天后过期。不知道的会导致应用程序出现问题,因为在这段时间后无法连接到数据库。特别是在测试或开发环境中工作,将不关心安全问题,这意味着密码不应该自动到期。这篇文章的目的是展示如何更改行为以及即使过期帐户过期也可以重置过期帐户。
1.调整密码到期策略
首先,我们必须验证数据库中的密码过期策略。最好的方法是对DBA_PROFILES运行查询:
select * from dba_profiles where resource_name = 'PASSWORD_LIFE_TIME';
这确认密码到期策略设置为默认值180天。您可以通过以下方式将此值更改为无限制:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
如果您使用不同的配置文件名称作为“DEFAULT”或多个配置文件,请记住调整语句。使用与以前相同的查询完成此更改的验证:
select * from dba_profiles where resource_name = 'PASSWORD_LIFE_TIME';
2.检查有问题的帐户
概述数据库中是否显示任何已过期或已锁定的帐户:
select username,account_status from dba_users where account_status like '%EXPIRED%' or account_status like '%LOCKED%';
接下来将显示如何使用脚本重新打开受影响的帐户的两个不同选项。两个版本都将重新打开帐户,以便可以再次使用它们。两个选项之间的主要区别在于选项1会将所有过期的帐户设置为脚本中给出的新密码。选项2将执行相同操作,但将帐户密码重置为旧密码,而不是设置新密码。
A.给所有用户重新设置密码,创建一个名为:userpwn.sql的sql命令文件.
spool on; set echo off; set heading off; set feedback off; SET SERVEROUTPUT OFF; spool unlock.sql; select 'ALTER USER '|| USERNAME || ' account unlock;' from dba_users where ACCOUNT_STATUS like '%LOCKED%'; spool off; @unlock.sql; spool on; set echo off; set heading off; set feedback off; SET SERVEROUTPUT OFF; spool pwchangen.sql; select 'ALTER USER '|| USERNAME || ' identified by ‘需要修改的密码';' from dba_users where ACCOUNT_STATUS like '%EXPIRED%' or ACCOUNT_STATUS like '%LOCKED%'; spool off; @pwchangen.sql;
B.恢复以前的密码,创建一个名为:userpwn.sql的sql命令文件
spool on; set echo off; set heading off; set feedback off; SET SERVEROUTPUT OFF; spool unlock.sql; select 'ALTER USER '|| USERNAME || ' account unlock;' from dba_users where ACCOUNT_STATUS like '%LOCKED%'; spool off; @unlock.sql; spool on; set lines 300; set echo off; set heading off; set feedback off; SET SERVEROUTPUT OFF; spool pwchangeo.sql; select 'ALTER USER '|| USERNAME || ' identified by values ''' || spare4 || ''';' from dba_users,user$ where ACCOUNT_STATUS like '%EXPIRED%' and USERNAME=NAME; spool off; @pwchangeo.sql;
3.使用的脚本示例
给用户解锁:
ALTER USER OHS account unlock;
修改用户密码:
ALTER USER OHS identified by welcome1;
修改之后不需要重启动数据库,会立即生效。
到此这篇关于Oracle设置密码永不过期的方法的文章就介绍到这了,更多相关Oracle密码永不过期内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!