情况是这样的,有两台OARCLE服务器,假定 A服务器和B服务器吧两太机器硬件配置差不多,xeon双核双cpu,内存都是4G,A的cpu要新点,B是个早点时候的机器两个机器上的oracle 数据库也一致,从9.2.0.1升级到9.2.0.7上的数据库里面的数据也基本相同,相差不到几百条,三个表都不大,最大表3万条,在A上看查看执行计划对这个表是全表扫描了在做三个表的连接查询,在A上3秒返回结果,在B上完全不返回,无论等多久奇怪的是,机器 B上很多类似查询都无法返回B的机器表分析做过,索引分析做过,单表查询没问题,稍微关联就死掉问题出在什么地方,从何处入手查找呢

解决方案 »

  1.   

    select * from v$session_wait
    where event not like 'SQL*Net%';看等待的是什么
      

  2.   

    看看执行计划吧,有可能是SQL性能太差,全表扫描有可能比索引扫描快,利用查询计划来分析SQL慢在哪里explain plan for
    select * from .....;SELECT plan_table_output
      FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE'));
      

  3.   

    感谢大家回复,初步找到了问题,但还没完全解决楼上有 朋友说 “看执行计划,等待事件”于是我查询系统等待事件,发现B服务器上查询系统表,视图的关联也是挂掉,就是无返回,所以检查UNDO表空间select segment_name,status,tablespace_name from dba_rollback_segs;SEGMENT_NAME                   STATUS           TABLESPACE_NAME
    ------------------------------ ---------------- ------------------------------
    _SYSSMU20$                     NEEDS RECOVERY   SIM_UNDO
    _SYSSMU21$                     OFFLINE          SIM_UNDO
    _SYSSMU22$                     OFFLINE          SIM_UNDO
    _SYSSMU23$                     OFFLINE          SIM_UNDO
    _SYSSMU24$                     OFFLINE          SIM_UNDO这期间用了一个重要的查询SELECT b.File_Id, 
    b.File_Name, 
    a.COUNT 
    FROM X$kcbfwait a, 
    Dba_Data_Files b 
    WHERE a.Indx = b.File_Id-1 
    AND a.COUNT > 0 
    ORDER BY a.COUNT; 
    看了一下文件等待次数,发现有个undo文件等待次数超过了1000多,于是定位undo问题
    而后修改pfile文件里*.undo_management='manual'又执行alter database datafile 'E:\SIM_SYSTEM_UNDO_000.DBF' offline drop;
    alter database datafile 'E:\SIM_SYSTEM_UNDO_001.DBF' offline drop;
    ...把这些给删除了,而后
    startup pfile = '...ora'数据库可以起来,查询不在等待了
    但又遇到新问题了SQL>  select segment_name,status,tablespace_name from dba_rollback_segs;SEGMENT_NAME                   STATUS           TABLESPACE_NAME
    ------------------------------ ---------------- ------------------------------
    SYSTEM                         ONLINE           SYSTEM
    _SYSSMU1$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU2$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU3$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU4$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU5$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU6$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU7$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU8$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU9$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU10$                     OFFLINE          SIM_UNDO_NEWSEGMENT_NAME                   STATUS           TABLESPACE_NAME
    ------------------------------ ---------------- ------------------------------
    _SYSSMU20$                     NEEDS RECOVERY   SIM_UNDO
    _SYSSMU21$                     OFFLINE          SIM_UNDO
    _SYSSMU22$                     OFFLINE          SIM_UNDO
    _SYSSMU23$                     OFFLINE          SIM_UNDO
    _SYSSMU24$                     OFFLINE          SIM_UNDO现在系统的 dba_rollback_segs 使用system表空间,我怎么重新建立一个呢
      

  4.   

    搞定!首先确认的是B在出问题的时候,执行计划也出不来所以定位查询等待事件
    后来发现undo表空间 有文件 NEEDS RECOVERY干掉这个表空间,重新建立系统undo表空间,问题解决
      

  5.   

    Microsoft Windows [版本 5.2.3790]
    (C) 版权所有 1985-2003 Microsoft Corp.C:\Documents and Settings\Administrator>sqlplus "/as sysdba'SQL*Plus: Release 9.2.0.7.0 - Production on 星期三 2月 18 15:22:32 2009Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.SP2-0306: 无效选项。
    用法: CONN[ECT] [logon] [AS {SYSDBA|SYSOPER}]
    其中 <logon>  : : = <username>[/<password>][@<connect_string>] | /
    请输入用户名:
    C:\Documents and Settings\Administrator>sqlplus "/as sysdba"SQL*Plus: Release 9.2.0.7.0 - Production on 星期三 2月 18 15:22:39 2009Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.已连接到空闲例程。SQL> startup nomount;
    ORA-01078: failure in processing system parameters
    LRM-00109: ???????????????? 'E:\ORACLE\ORA92\DATABASE\INITTA090213.ORA'
    SQL> startup nomount;
    ORA-00600: internal error code, arguments: [733], [1952543792], [pga heap], [], [], [], [], []
    SQL> shutdown immediate
    ORA-01034: ORACLE not available
    ORA-27101: shared memory realm does not exist
    SQL> startup pfile='e:\a.ora'
    ORACLE 例程已经启动。Total System Global Area 1267804344 bytes
    Fixed Size                   456888 bytes
    Variable Size            1015021568 bytes
    Database Buffers          251658240 bytes
    Redo Buffers                 667648 bytes
    数据库装载完毕。
    数据库已经打开。
    SQL> select segment_name,status,tablespace_name from dba_rollback_segs;SEGMENT_NAME                   STATUS           TABLESPACE_NAME
    ------------------------------ ---------------- ------------------------------
    SYSTEM                         ONLINE           SYSTEM
    _SYSSMU1$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU2$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU3$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU4$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU5$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU6$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU7$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU8$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU9$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU10$                     OFFLINE          SIM_UNDO_NEWSEGMENT_NAME                   STATUS           TABLESPACE_NAME
    ------------------------------ ---------------- ------------------------------
    _SYSSMU20$                     NEEDS RECOVERY   SIM_UNDO
    _SYSSMU21$                     OFFLINE          SIM_UNDO
    _SYSSMU22$                     OFFLINE          SIM_UNDO
    _SYSSMU23$                     OFFLINE          SIM_UNDO
    _SYSSMU24$                     OFFLINE          SIM_UNDO已选择16行。SQL> crate spfile from pfile;
    SP2-0734: 未知的命令开头 "crate spfi..." - 忽略了剩余的行。
    SQL> create spfile from pfile;文件已创建。SQL> alter database datafile 'E:\TA090213data\SIM_SYSTEM_UNDO_NEW1.DBF' offline drop;数据库已更改。SQL> alter database datafile 'E:\TA090213data\SIM_SYSTEM_UNDO_NEW2.DBF' offline drop;
    alter database datafile 'E:\TA090213data\SIM_SYSTEM_UNDO_NEW2.DBF' offline drop
    *
    ERROR 位于第 1 行:
    ORA-01516: 不存在的日志文件, 数据文件或临时文件
    'E:\TA090213data\SIM_SYSTEM_UNDO_NEW2.DBF'
    SQL> alter database datafile 'E:\TA090213data\SIM_SYSTEM_UNDO_NEW0.DBF' offline drop;数据库已更改。SQL> alter database datafile 'E:\TA090213data\SIM_SYSTEM_UNDO_000.DBF' offline drop;数据库已更改。SQL> alter database datafile 'E:\TA090213data\SIM_SYSTEM_UNDO_001.DBF' offline drop;数据库已更改。SQL> alter database datafile 'E:\TA090213data\SIM_SYSTEM_UNDO_002.DBF' offline drop;数据库已更改。SQL> select segment_name,status,tablespace_name from dba_rollback_segs;SEGMENT_NAME                   STATUS           TABLESPACE_NAME
    ------------------------------ ---------------- ------------------------------
    SYSTEM                         ONLINE           SYSTEM
    _SYSSMU1$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU2$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU3$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU4$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU5$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU6$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU7$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU8$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU9$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU10$                     OFFLINE          SIM_UNDO_NEWSEGMENT_NAME                   STATUS           TABLESPACE_NAME
    ------------------------------ ---------------- ------------------------------
    _SYSSMU20$                     NEEDS RECOVERY   SIM_UNDO
    _SYSSMU21$                     OFFLINE          SIM_UNDO
    _SYSSMU22$                     OFFLINE          SIM_UNDO
    _SYSSMU23$                     OFFLINE          SIM_UNDO
    _SYSSMU24$                     OFFLINE          SIM_UNDO已选择16行。SQL> shutdown immediate
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> startup
    ORACLE 例程已经启动。Total System Global Area 1267804344 bytes
    Fixed Size                   456888 bytes
    Variable Size            1015021568 bytes
    Database Buffers          251658240 bytes
    Redo Buffers                 667648 bytes
    数据库装载完毕。
    ORA-01092: ORACLE 例程终止。强行断开连接
      

  6.   

    SQL> exit
    从Oracle9i Enterprise Edition Release 9.2.0.7.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.7.0 - Production中断开C:\Documents and Settings\Administrator>sqlplus "/as sysdba"SQL*Plus: Release 9.2.0.7.0 - Production on 星期三 2月 18 15:37:00 2009Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.已连接到空闲例程。SQL> startup pfile='e:\1.ora'
    LRM-00109: 无法打开参数文件 'e:\1.ora'
    ORA-01078: 处理系统参数失败
    SQL> startup pfile='e:\a.ora'
    ORACLE 例程已经启动。Total System Global Area 1267804344 bytes
    Fixed Size                   456888 bytes
    Variable Size            1015021568 bytes
    Database Buffers          251658240 bytes
    Redo Buffers                 667648 bytes
    数据库装载完毕。
    数据库已经打开。
    SQL>  select segment_name,status,tablespace_name from dba_rollback_segs;SEGMENT_NAME                   STATUS           TABLESPACE_NAME
    ------------------------------ ---------------- ------------------------------
    SYSTEM                         ONLINE           SYSTEM
    _SYSSMU1$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU2$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU3$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU4$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU5$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU6$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU7$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU8$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU9$                      OFFLINE          SIM_UNDO_NEW
    _SYSSMU10$                     OFFLINE          SIM_UNDO_NEWSEGMENT_NAME                   STATUS           TABLESPACE_NAME
    ------------------------------ ---------------- ------------------------------
    _SYSSMU20$                     NEEDS RECOVERY   SIM_UNDO
    _SYSSMU21$                     OFFLINE          SIM_UNDO
    _SYSSMU22$                     OFFLINE          SIM_UNDO
    _SYSSMU23$                     OFFLINE          SIM_UNDO
    _SYSSMU24$                     OFFLINE          SIM_UNDO已选择16行。SQL> show sgaTotal System Global Area 1267804344 bytes
    Fixed Size                   456888 bytes
    Variable Size            1015021568 bytes
    Database Buffers          251658240 bytes
    Redo Buffers                 667648 bytes
    SQL> alter system set undo_management=manual scope=spfile;
    alter system set undo_management=manual scope=spfile
    *
    ERROR 位于第 1 行:
    ORA-32001: 已请求写入 SPFILE, 但是在启动时未指定 SPFILE
    SQL> create undo tablespace UNDOTBS1
      2  ;*
    ERROR 位于第 2 行:
    ORA-02199: 丢失 DATAFILE/TEMPFILE 子句
    SQL> CREATE UNDO TABLESPACE UNDOTBS1
      2  DATAFILE 'E:\TA090213data\UNDOTBS1.DBF' SIZE 1024M REUSE
      3  AUTOEXTEND ON next 512M  MAXSIZE  32767M,
      4  'E:\TA090213data\UNDOTBS2.DBF' SIZE 1024M REUSE
      5  AUTOEXTEND ON next 512M  MAXSIZE  32767M
      6  ;表空间已创建。SQL> ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS1;
    ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS1
    *
    ERROR 位于第 1 行:
    ORA-02097: 无法修改参数,因为指定的值无效
    ORA-30014: 此操作仅在自动撤消管理模式中才受支持