当前位置:  数据库>oracle

Oracle 10g用户频繁被锁(ORA-28000)的诊断与处理

    来源: 互联网  发布时间:2017-06-19

    本文导语: 今天早上同事向我求助,说是一个用户(我们假设该用户名为HOEGH)的数据不是最新的。奇怪,我明明上周五统一使用exp、imp脚本更新了相关用户的数据,肯定是包含HOEGH用户的。同事把应用程序启动起来,指着程序界面告诉我...

今天早上同事向我求助,说是一个用户(我们假设该用户名为HOEGH)的数据不是最新的。奇怪,我明明上周五统一使用exp、imp脚本更新了相关用户的数据,肯定是包含HOEGH用户的。同事把应用程序启动起来,指着程序界面告诉我,这个数据肯定不是最新的。好吧,难道是我当时更新数据时漏掉了HOEGH用户?

首先,我尝试登录PLSQL,想查询一下HOEGH用户下表的编译时间,确认一下我执行imp操作的具体时间。令人意外的是,使用PLSQL登录时报错了,提示“ORA-28000: the account is locked”。

    有点晕,谁动了HOEGH用户?

    我登陆到sys用户,通过下面的sql语句查询HOEGH用户的帐户状态以及锁定时间。

SQL> select username,account_status,to_char(lock_date,'yyyymmdd hh24:mi:ss') from dba_users where username='HOEGH';

USERNAME ACCOUNT_STATUS TO_CHAR(LOCK_DATE

------------------------------ -------------------------------- -----------------

HOEGH LOCKED 20150817 08:57:54

SQL>
 

    从查询结果来看,HOEGH用户确实被锁了,而且,锁定操作就发生在几分钟之前。

    虽然没弄明白怎么回事,还是先把问题解决了再说吧。我使用“alter user HOEGH account unlock”语句把HOEGH用户解锁,然后登录PLSQL,查询HOEGH用户下表的编译时间。结果证明我周五执行数据更新并没有遗漏HOEGH用户,所有表的编译时间都是上周五。

    我怀疑是不是刚才启动的程序版本有问题。于是,我让同事重新运行应用程序,显示的界面仍然不是最新数据,问题依旧。

  好吧,解决问题要紧!我重新执行了一次导入脚本,脚本先对所有表执行truncate操作,然后执行imp进行数据导入。没想到执行imp操作时再次报错,提示“ORA-28000: the account is locked”。

    HOEGH用户被锁定了,again!

    没想明白。

    再次使用“alter user HOEGH account unlock”语句把HOEGH用户解锁,重新执行导入脚本,这次数据顺利导入成功。

    这次总该没问题了吧。让同事第三次启动应用程序,问题依旧!!!

    通常来说,程序不会出错,肯定有其他问题。

    果然,过了一会,同事不好意思的告诉我,密码不小心配错了,改过来就OK了。

    这个原因我还真没想到,问题弄清楚了就好,谁都有打盹的时候嘛。

    可是,为什么HOEGH用户会被一而再地锁定呢?估计也和错误密码有关,最直接的就是Oracle数据库的安全策略。于是,我执行以下语句来查询:

SQL>

SQL> select * from dba_profiles where resource_name like 'FAILED_LOGIN_ATTEMPTS%';

PROFILE RESOURCE_NAME RESOURCE LIMIT

------------------------------ -------------------------------- -------- --------------------------------

DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10

MONITORING_PROFILE FAILED_LOGIN_ATTEMPTS PASSWORD UNLIMITED

SQL>
 
    其中,FAILED_LOGIN_ATTEMPTS参数被设置为10,也就是说当输错密码登陆超过次10次,用户就会自动被锁定。结合我们应用程序的设计思路,它会定时去连接数据库以监视数据库连接状态;导致这个错误的原因就是由于客户端由于没有使用正确的密码,连接次数超过数据库默认安全策略中定义的FAILED_LOGIN_ATTEMPTS参数大小。至于为什么会一直显示老版本数据,是因为Oracle数据库连不上,本地数据无法更新,界面显示只好去读老版本的本地数据。
    另外,在Oracle10g中,FAILED_LOGIN_ATTEMPTS参数默认值为10,这个设置其实是有隐患的。如果有一个用户不停尝试错误口令,那就会导致用户被锁。如果要恢复之前无限制,可以通过一条命令解决:
    alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;

    今天解决这个故障得到以下启示:
1.一定要细心,抓住一切可以利用的资源去进行trouble-shooting;因为,我们的应用程序界面就有数据库连接状态的提示(字比较小),当时竟给忽略了;
2.规范项目开发管理,降低类似配置文件出错的概率;


    
 
 

您可能感兴趣的文章:

  • Oracle 11g自动诊断信息库(Automatic Diagnostic Repository,ADR)概述
  • Oracle常见错误诊断
  • 在Redhat7.2+Oracle8i如果硬件配置中用P4处理器,对oracle的安装有没有影响(100分)
  • Oracle控制文件多元化处理
  • 关于ORACLE中执行批处理的问题
  • oracle删除文件后数据库启动不了的处理方法
  • MS Server和Oracle中对NULL处理的一些细节差异
  • ORACLE DATAGUARD中手工处理日志v$archive_GAP的方法
  • Oracle 10g中用FIRALL处理非连续数组
  • 重新安装主机后ORACLE DB的处理
  • 轻轻松松学会在Oracle中实现时间相加处理
  • Linux系统下导出ORACLE数据库出现Exporting questionable statistics.错误 处理
  • 处理Oracle数据库中杀不掉的锁
  • oracle 11g导出数据时报ORA 1455错误的处理方法
  • redhat 下 oracle proc 预处理总是留下 tpXXXXXX 的临时文件
  • Oracle时间精确到时、分、秒处理方案
  • 一次Oracle故障处理过程
  • Oracle 插入超4000字节的CLOB字段的处理方法
  • Oracle 10g中用FORALL处理非连续数组
  • Oracle对于死锁的处理方法
  • Oracle中关于处理小数点位数的几个函数
  • SQL Server和Oracle并行处理比较分析
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 虚拟机装Oracle R12与Oracle10g iis7站长之家
  • oracle创建删除用户示例分享(oracle删除用户命令及授权)
  • linux6.0下安装oracle11g, 新建用户后,在用户目录下为什么没有.bash_profile文件生成? 求教高手。谢谢!
  • Oracle一个用户如何访问其它用户的表应用指南
  • oracle用户口令丢了
  • 修改oracle用户的.bash_profile之后无法正常登陆
  • linux下如何查看是什么用户安装的oracle
  • oracle+jsp 多用户查询系统讨论:
  • ORACLE 中修改用户密码的方法
  • linux中定时任务 oracle用户该如何做?
  • 杀掉oracle在线用户脚本分享
  • linux能够通过执行脚本添加oracle数据库的用户吗
  • Oracle exp 导出用户对象
  • oracle怎么删除用户提供解决方案
  • Oracle初始参数与当前用户
  • Oracle发布Oracle SQL Developer 1.2数据库开发工具 帮助用户简化开发工作
  • Oracle中查看当前用户的表
  • 怎样知道一个用户的主目录,也就是.bash_profile所在的目录?如/home/oracle
  • Linux下修改Oracle用户密码
  • Oracle创建用户权限的过程
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3