ORA-00054 故障处理一例

系统 1498 0

--************************

-- ORA-00054 故障 理一

--************************

 

    最近 index job ,于是 尝试 动执 试试 。收到了 ORA- 00054 错误 消息。

 

一、 错误 消息    

 

    SQL > ALTER INDEX ESMDBA.ESM_PRCS_ERR_IDX1 rebuild ;

    ALTER INDEX ESMDBA.ESM_PRCS_ERR_IDX1 rebuild

    *

    ERROR at line 1 :

    ORA - 00054 : resource busy and acquire with NOWAIT specified

 

二、

 

    SQL > col OBJECT_NAME for a30

    SQL > col   username format a20

    SQL > set linesize 200

    SELECT object_name, s.username, s.sid, s.serial#, p.spid, to_char(s.logon_time, 'yyyy-mm-dd hh24:mi:ss' ) logon_time

    FROM    v$locked_object l, dba_objects o, v$session s, v$process p

    WHERE   l.object_id = o.object_id

               AND l.session_id = sSQL>    2     3   .sid

               AND s.paddr = p.addr;   4      5  

   

    OBJECT_NAME                     USERNAME                     SID     SERIAL# SPID          LOGON_TIME

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

    PLAN_TABLE                       A505995                      622       15849 26577         2011 - 06 - 08 03 : 04 : 30

    ESM_PRCS_ERR                    SMEVFP                       396       60589 8388          2011 - 06 - 11 18 : 24 : 51

    VNDR_FEED_SCHED                 SMEVFP                       467       15860 3119          2011 - 06 - 11 22 : 30 : 48

    BB_RF_VNDR_FEED_RCRD            SMEVFP                       467       15860 3119          2011 - 06 - 11 22 : 30 : 48

    BB_RF_VNDR_REPSTRY              SMEVFP                       773        1079 8440          2011 - 06 - 11 18 : 24 : 55

    BB_RF_VNDR_FEED_RCRD_DATA       SMEVFP                       467       15860 3119          2011 - 06 - 11 22 : 30 : 48

    BB_RF_VNDR_FEED_RCRD_DATA       SMEVFP                       467       15860 3119          2011 - 06 - 11 22 : 30 : 48

   

    7 rows selected.

 

三、 看表 象上信息

 

    SQL > select OWNER,INDEX_NAME,TABLE_NAME,INDEX_TYPE from dba_indexes where INDEX_NAME like '%ESM_PRCS_ERR_IDX1%' ;

   

    OWNER                           INDEX_NAME                      TABLE_NAME                      INDEX_TYPE

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

    ESMDBA                          ESM_PRCS_ERR_IDX1               ESM_PRCS_ERR                    NORMAL

   

    SQL > SELECT sql_text

      2   FROM v$session, v$sqltext_with_newlines

      3   WHERE decode (v$session.sql_hash_value, 0 , prev_hash_value, sql_hash_value) =

         v$sqltext_with_newlines.hash_value

         AND v$session.sid = & sid

    ORDER BY piece;

      4     5     6   Enter value for sid : 396

    old    5 :       AND v$session.sid = & sid

    new    5 :       AND v$session.sid = 396

   

    SQL_TEXT

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

    SELECT ERR_OID, MQ_MSGE FROM ESM_PRCS_ERR WHERE ERR_OID = : 1 FOR

     UPDATE NOWAIT

    

四、 一步 尝试     

 

    上此 做任何表 结构 的操作 分析都 将会 收到 ORA- 00054 错误

        SQL > analyze table ESMDBA.ESM_PRCS_ERR validate structure ;

        analyze table ESMDBA.ESM_PRCS_ERR validate structure

                      *

        ERROR at line 1 :

        ORA - 00054 : resource busy and acquire with NOWAIT specified

       

        SQL >   analyze index ESMDBA.ESM_PRCS_ERR_IDX1 validate structure ;

        analyze index ESMDBA.ESM_PRCS_ERR_IDX1 validate structure

        *

        ERROR at line 1 :

        ORA - 00054 : resource busy and acquire with NOWAIT specified

 

五、 定的 会话

    SQL > alter system kill session '396,60589' ;

   

    System altered.

   

    SQL > alter session set current_schema =ESMDBA;

   

    Session altered.

   

    SQL > show parameter db_name

   

    NAME                                  TYPE          VALUE

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

    db_name                               string       O01GRS3

   

    SQL > ALTER INDEX ESMDBA.ESM_PRCS_ERR_IDX1 rebuild ;

   

    Index altered.

   

六、原因

   

     1 .select for update

        select for update 是用于 并发 控制的 句。 该语 句后, 在表上加持 RX ( Row Exclusive , 10 gR1 之前是 Row Share )

        在被 记录 上加行 。但是,正是因 其加 的操作, for update 子句 会导 select 查询 的性能下降。

   

    2 . select for update select for update nowait

        使用 select for update 候,其他 会话 之相 DML,DDL 被挂起,直到 会话 select for update 定被解除。

        使用 select for update nowait ,其他 会话 之相 DML,DDL 被挂起不再是挂起,是直接返回一 个资 源忙的 错误

 

    3 . 结论

        是使用 select ... f or update 是使用 select ... f or update nowait 。都 会对 的行集 定,其他 会话进 行相

    行集的 操作都 被挂起,直到 该锁 定被解除。 所以,在使用了 select ... f or update 或者 select ... f or update nowait 后,要

快解除 定,避免其他 会话 挂起太久, 致系 性能下降

七、 快捷参考

性能 请参

    Oracle 硬解析 与软 解析

    共享池的 与优 (Shared pool Tuning)

    Buffer cache 与优 ( 一)

    Oracle (caching table) 的使用

 

ORACLE 体系 结构请参

    Oracle 表空 间与数 据文件

    Oracle 文件

    Oracle 参数 文件

    Oracle 机重做日志文件 (ONLINE LOG FILE)

    Oracle 控制文件(CONTROLFILE)

    Oracle 归档 日志

    Oracle (ROLLBACK) 和撤 (UNDO)

    Oracle 库实 启动关闭过

    Oracle 10g SGA 的自 化管理

    Oracle 例和 Oracle (Oracle 体系 结构 )

 

关闪 回特性 请参

    Oracle 回特性 (FLASHBACK DATABASE)

    Oracle 回特性 (FLASHBACK DROP & RECYCLEBIN)

    Oracle 回特性 (Flashback Query 、Flashback Table)

    Oracle 回特性 (Flashback Version 、Flashback Transaction)

 

基于用 管理的 备份 备份 请参

    Oracle 备份

    Oracle 热备份

    Oracle 备份 复概

    Oracle 例恢

    Oracle 基于用 管理恢 ( 详细 描述了介 及其 )

    SYSTEM 表空 管理及 备份

    SYSAUX 表空 管理及恢

 

RMAN 备份 复与 管理 请参

    RMAN 述及其体系 结构

    RMAN 配置、 管理

    RMAN 备份详

    RMAN

    RMAN catalog 建和使用

    于catalog RMAN 脚本

基于catalog 的RMAN 备份与

使用 RMAN 迁移文件系统数据库到 ASM

    RMAN 备份 困惑 ( 使用plus archivelog )

 

ORACLE 故障 请参

    ORA-32004 错误处

    ORA-01658 错误

    CRS-0215 错误处

    ORA-00119 ,ORA-00132 错误处

    又一例SPFILE 错误导 无法 启动

    对参数 FAST_START_MTTR_TARGET = 0 解及

     SPFILE 错误导 无法 启动 (ORA-01565)

 

ASM 请参

    ASM 例及 ASM

    ASM 、目 的管理

    使用 ASMCMD 工具管理ASM 及文件

 

SQL/PLSQL 请参

    SQLPlus 常用命令

    替代 SQL*Plus

    使用Uniread 实现 SQLplus 功能

    SQL -->SELECT 查询

    SQL --> NEW_VALUE 的使用

    SQL --> 集合 (UNION UNION ALL)

    SQL --> 常用函

    SQL --> 视图 (CREATE VIEW)

    SQL --> 建和管理表

    SQL --> 查询

    SQL --> 过滤 和排序

    SQL --> 查询

    SQL --> 组与

    SQL --> 次化 查询 (START BY ... CONNECT BY PRIOR)

    SQL --> ROLLUP CUBE 算符 实现数 汇总

    PL/SQL -->

    PL/SQL --> (Exception)

    PL/SQL --> 言基

    PL/SQL --> 流程控制

    PL/SQL --> PL/SQL 记录

    PL/SQL --> 包的 管理

    PL/SQL --> 式游 (SQL%FOUND)

    PL/SQL --> 包重 、初始化

    PL/SQL --> DBMS_DDL 包的使用

    PL/SQL --> DML 触发

    PL/SQL --> INSTEAD OF 触发

    PL/SQL --> 储过

    PL/SQL -->

    PL/SQL --> 动态 SQL

    PL/SQL --> 动态 SQL 的常 见错误

 

ORACLE 特性

    Oracle 常用目 录结构 (10g)

    使用OEM,SQL*Plus,iSQL*Plus 管理Oracle

    日志 记录 模式 (LOGGING 、FORCE LOGGING 、NOLOGGING)

    表段、索引段上的LOGGING NOLOGGING

    Oralce OMF 功能

    Oracle 限、系 统权  

    Oracle 角色、配置文件

    Oracle

    Oracle 外部表

    使用外部表管理Oracle 告警日志(ALAERT_$SID.LOG)

    簇表及簇表管理(Index clustered tables)

    EXPDP 出工具的使用

    IMPDP 入工具的使用

    Oracle

    SQL*Loader 使用方法

    用用 户进 程跟踪

    配置非默 端口的 动态

    配置ORACLE 接到

    system sys ,sysoper sysdba 区别

    ORACLE_SID 、DB_NAME 、INSTANCE_NAME 、DB_DOMIAN 、GLOBAL_NAME

    Oracle 丁全集 (Oracle 9i 10g 11g Path)

    Oracle 10.2.0.1 10.2.0.4

    Oracle kill session

 

ORA-00054 故障处理一例


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论