`
huangshanghua
  • 浏览: 54982 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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;

如果开启了归档功能,那么归档的文件存放在flash_recovery_area文件夹,这个文件夹的大小是限定的,不会自动增长,如果容量已满,会出错,提示“日志无法恢复”等信息,这时就要对归档文件夹进行清理或增加容量

3、删除归档文件
A、设置变量
export NLS_DATE_FORMAT=Mon DD YYYY HH24:MI:SS
export NLS_LANG=american
B、进入命令环境CMD
直接输入
rman target sys/密码@数据库服务名
在rman命令窗口中输入以下命令
①crosscheck archivelog all;
②delete expired archivelog all;
或者删除指定时间之前的文件(7天前)
①delete archivelog all completed before 'sysdate-7';

4、增加归档文件夹的容量
进入命令环境CMD
set oracle_sid=数据库服务名称
sqlplus /nolog
connect /as sysdba
show parameter db_recovery_file_dest;--查看容量
alert system set db_recovery_file_dest_size=20G--设置容量
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics