### Oracle数据库密码过期解决办法 #### 背景与问题描述 在使用Oracle数据库时,经常遇到的一个问题是用户密码过期导致无法登录的情况。这种情况下通常会收到一个错误提示ORA-28002: The password will expire in 7 days(密码将在7天后过期),这主要是因为Oracle 11g默认配置中设置`PASSWORD_LIFE_TIME`参数为180天,即6个月,如果在此期限内没有更改密码,则密码将自动过期。此外,还有一种情况是当用户尝试多次登录失败后,系统会锁定该用户账户,并给出ORA-28000: The account is locked(账户被锁定)的错误提示。这两种情况都会影响业务正常运行。 #### 解决方案 ##### 密码过期处理 **步骤1:查询当前用户的Profile** ``` SQL> SELECT username, PROFILE FROM dba_users; ``` 通过以上命令可以查看所有用户的Profile信息,找到默认的Profile名称(通常是`DEFAULT`)。 **步骤2:查询默认Profile中的`PASSWORD_LIFE_TIME`设置** ``` SQL> SELECT * FROM dba_profiles WHERE profile = 'DEFAULT' AND resource_name = 'PASSWORD_LIFE_TIME'; ``` 此命令用于确认默认Profile下的`PASSWORD_LIFE_TIME`参数值是否为180。 **步骤3:修改`PASSWORD_LIFE_TIME`参数** ``` SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; ``` 执行此命令后,`PASSWORD_LIFE_TIME`将被设置为无限制,即密码永远不会自动过期。需要注意的是,在执行完此命令后,需要重新启动数据库实例才能生效。 **步骤4:验证结果** 如果之前因密码过期而出现ORA-28002错误,则此时应能正常登录,不会出现同样的错误提示。 **特殊处理:解锁账户** 如果是因为多次登录失败而导致账户被锁定,可以按照以下步骤操作: **步骤1:查询当前用户的Profile** ``` SQL> SELECT username, PROFILE FROM dba_users; ``` **步骤2:查询默认Profile中的`FAILED_LOGIN_ATTEMPTS`设置** ``` SQL> SELECT * FROM dba_profiles WHERE profile = 'DEFAULT' AND resource_name = 'FAILED_LOGIN_ATTEMPTS'; ``` 此命令用于确认默认Profile下的`FAILED_LOGIN_ATTEMPTS`参数值是否为10次。 **步骤3:修改`FAILED_LOGIN_ATTEMPTS`参数** ``` SQL> ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED; ``` **步骤4:解锁用户账户** ``` SQL> ALTER USER [用户名] IDENTIFIED BY [新密码] ACCOUNT UNLOCK; ``` **步骤5:再次确认Profile设置** ``` SQL> SELECT * FROM dba_profiles WHERE dba_profiles.profile = 'DEFAULT'; ``` 确保`FAILED_LOGIN_ATTEMPTS`和`PASSWORD_LIFE_TIME`两个参数均被设置为`UNLIMITED`。 #### 额外建议 除了以上处理密码过期和账户锁定的方法之外,Oracle 11g还引入了一些新的安全特性,例如区分大小写登录(`sec_case_sensitive_logon`)和延迟段创建(`deferred_segment_creation`)等。这些特性也可能会对日常操作产生影响,因此需要特别注意。 **sec_case_sensitive_logon**: 默认情况下,该参数值为`TRUE`,这意味着用户登录名区分大小写。这可能会导致一些问题,特别是对于那些不区分大小写的环境或应用程序来说。可以通过以下命令将其设置为`FALSE`来避免此类问题: ``` SQL> ALTER SYSTEM SET sec_case_sensitive_logon = FALSE SCOPE = spfile; ``` **deferred_segment_creation**: 此参数控制表空间段是否在创建表时立即创建,默认值为`TRUE`。这意味着如果在创建表时未显式指定`SEGMENT CREATION IMMEDIATE`,则段将不会立即创建。这对于性能有一定影响,尤其是使用`expdp`工具导出数据时。可以通过以下命令将其设置为`FALSE`: ``` SQL> ALTER SYSTEM SET deferred_segment_creation = FALSE SCOPE = spfile; ``` 此外,还需要注意的是,即使修改了`deferred_segment_creation`参数,已存在的表仍然需要显式分配段空间,可以通过以下命令实现: ``` SQL> ALTER TABLE [表名] ALLOCATE EXTENT; ``` 针对Oracle数据库密码过期的问题,不仅需要关注如何解决密码过期本身的问题,还需了解并妥善处理其他可能影响数据库操作的因素。































使用sqlplus登陆oracle数据库时提示“ORA-28002: 7 天之后口令将过期”。
【原因/触发因素】
确定是由于oracle11g中默认在default概要文件中设置了 “PASSWORD_LIFE_TIME=180天”所导致。
【影响和风险】
影响
密码过期后,业务进程连接数据库异常,影响业务使用。
问题发生频率
数据库密码过期后,业务进程一旦重启会提示连接失败。
【解决方案】
按照如下步骤进行操作:
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';(如果这样写有可能提示“你未选中行”,其实这样就行了SELECT * FROM dba_profiles WHERE resource_name='PASSWORD_LIFE_TIME';我的就是这样哈!)
3、将密码有效期由默认的180天修改成“无限制”:
sql>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改之后不需要重启动数据库,会立即生效。
4、修改后,还没有被提示ORA-28002警告的帐户不会再碰到同样的提示;
已经被提示的帐户必须再改一次密码,举例如下:
$sqlplus / as sysdba
sql> alter user pmsz identified by mis5<原来的密码> ----不用换新密码
oracle11g启动参数resource_limit无论设置为false还是 true,密码有效期都是生效的,所以必须通过以上方式进行修改。以上的帐户名请根据实际使用的帐户名更改。
二、【问题描述】
近日H局点反馈,使用sqlplus登陆短消息oracle数据库时提示“ORA- 28000: 帐号被锁定”。
【原因/触发因素】
确定是由于oracle11g中默认在default概要文件中设置了 “FAILED_LOGIN_ATTEMPTS=10次”,当输入密码错误次数达到设置值将导致此问题。
【影响和风险】
影响
帐号被锁定后,业务进程连接数据库异常,影响业务使用。


- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于 Python tkinter 与 MySQL的图书管理系统.zip
- 基于 Python 的 Linux 应用防火墙(UESTC 课程设计).zip
- 基于 Python 编写的点名器.zip
- 基于 Python 的 Hyper-V 虚拟机管理工具.zip
- 基于 Python 的结构化日志库..zip
- 基于 Python 的 QQ 空间爬虫程序.zip
- 基于 python 的 selenium UI 自动化测试框架,采用 Page Object 设计模式进行二次开发
- 基于 python 开发的 DDNS 域名自动解析工具, 适用于百度云_ 百度智能云域名。.zip
- 基于 Python 的跳动爱心.zip
- 基于 Python 的量化投资基金的仓库.zip
- 基于 Redis 官方分布式锁文章的 Python 实现.zip
- 基于 Python 实现微信公众号爬虫.zip
- 基于 Python-Flask 的微服务框架.zip
- 基于 skywind3000_KCP 的 python 版本.zip
- 基于 Skulpt.js 的在线 Python 编程学习网站.zip
- 基于 skulpt 开发的 Python online.zip


