各位朋友,我出现了一个很严重的问题,希望有人能够帮我!错误描述:昨天晚上睡觉前,我提交了四条删除语句
delete from table t_A;
delete from table t_B;
delete from table t_C;
delete from table t_D;
早上起来我查看发现,
这四条语句前三条执行成功了,第四条提示连接断开。于是我重新连接发现出现如下错误:
  ORA-01034   Oracle   not   available     
  ORA-27101   shared   memory   realm   does   not   exist   这时我使用
sqlplus /nolog 
conn /  as sysdba
startup
提示出现ora-00600错误,我把数据库shutdown 然后再startup 居然启动起来了,
但是,机器的速度非常的慢,CPU经常被Oracle占用80%以上。由于上面的三张表数据量非常大,删除之后我不知道是不是正在进行什么恢复操作,现在已经等了将近八个小时了,系统仍然没有缓和的迹象,原来只需要3秒钟左右的数据查询
现在需要将近5分钟才能查出来。我的程序是20多个点的收费程序,影响非常大,基本上影响了一个县当天的营业,各位有没有碰到过类似的问题,能不能给我提供一些解决的思路。在此先谢过!!

解决方案 »

  1.   

    有死锁进程。
    具体可尝试:
    select t2.username,t2.sid,t2.serial#,t2.logon_time 
    from v$locked_object t1,v$session t2 
    where t1.session_id=t2.sid order by t2.logon_time;
    --查看锁
    --alter system kill session 'sid,serial#';
    --把锁给KILL掉
    alter system kill session '146,21177';
    如果杀不掉:
    select spid from v$process p ,v$session v
                   where p.addr= v.paddr
                    and    v.sid = 146;
    然后orakill ora_sid spid;
      

  2.   

    强烈建议楼主不要使用delete from tablename清空表数据,因为此时要写回滚数据的,数据量大时速度慢不说,还还用占用大量的undo空间。
    用truncate清表数据吧。重启后按理说不应该存在死锁,不过,可以按照楼上的说法测试一下是否存在思索session。我觉得楼主还是检查一下各表空间使用情况吧。
      

  3.   

    楼主,是跑的windows吧?资源是不是没有释放出来?
      

  4.   

    1、用truncate代替delete,或者drop table ,create table 
    2、通过重启操作系统来释放资源
      

  5.   

    如果表中有大量的数据的话,建议实用truncate清表数据吧。
      

  6.   

    如果存在死锁,会被记录进alert.log文件,可以检查一下log,看看是不是死锁,或者系统出现了什么错误或者闪回空间是否足够了。如果没啥大错误,看看占用CPU比较高的SQL在忙什么
      

  7.   

    没注意到你还有一个00600错误.把这个错误的具体情况贴出来看看.怀疑是undo有问题.
      

  8.   

    上面的都说的很清楚了:
    1.重新启动操作系统
    2.检查警告日志和操作系统性能,定位问题
    3.如果问题没有解决,检查LOCK和LATCH(尤其是LATCH),因为LOCK不会影响整个系统
    4.如果还是没有解决,检查事务,排序,INSERT /*+ append */等等操作
      

  9.   

    是索引问题吧?我前段时间就有这样的事,把表清空以后,感觉应该快一些才对。但事实正好相反!系统慢得要死,简直无法忍受。为什么呢?查找的结果,是因为数据太乱,导致索引失效,重新把表move 一下,然后再重建 索引就好了。alter table tablename move;
    alter index indexname rebuild;