日期:2014-05-16  浏览次数:20425 次

oracle死锁解锁和恢复删除的表、视图、存储过程等
1、oracle死锁解锁
在oracle中经常出现死锁的情况,导致查询语句一直处于查询状态却没数据出来,视图、存储过程无法正常编译。可执行如下语句查看死锁ID
select
       lpad('',decode(l.XIDUSN,0,3,0))||l.ORACLE_USERNAME username,o.owner,o.object_name,o.object_type,s.SID,s.SERIAL#
from 
      v$locked_object l, dba_objects o,v$session s
where
      l.OBJECT_ID = o.object_id and l.SESSION_ID = s.SID;
解锁:
alter system kill session 'sid,serial#';
sid,serial#在查看死锁语句中可找到。

2、恢复删除、或修改后之前的表、视图、存储过程等
(1)、查找dba_source表
      select * from dba_source;
     只针对delete、update、create等操作。
(2)、导入归档文件(前提是有归档文件,需要开启归档功能才可进行归档)

A:命令窗口(如果内容过长,将有部分内容看不到)
SQL> exec sys.dbms_logmnr.add_logfile(logfilename=>'文件路径');
SQL> exec sys.dbms_logmnr.start_logmnr(options=>sys.dbms_logmnr.DICT_FROM_ONLINE_CATALOG);
SQL> select * from v$logmnr_contents;

B:SQL窗口
begin
sys.dbms_logmnr.add_logfile(logfilename=>'文件路径');
end;
begin
exec sys.dbms_logmnr.start_logmnr(options=>sys.dbms_logmnr.DICT_FROM_ONLINE_CATALOG);
end;
select * from v$logmnr_contents;