oralce归档,死锁,阵列问题处理
oralce归档,死锁,阵列问题处理(个人经验,仅供参考)
归档问题:登录数据库报错:ORA-00257 归档程序错误,在释放之前仅限于内部连接。
处 理:
第一种就是关闭闪回日志的功能 alter database flashback off
第二种方法就是增大闪回日志文件的最大大小。 alter system set DB_RECOVERY_FILE_DEST_SIZE=10g,去查看v$flash_recovery_area_usage视图中的使用率情况这个时候发现使用率(PERCENT_SPACE_USED列的值)已经大大降低了。查看系统日志文件情况。select * from v$log会发现现在redo日志文件也可以正常写入。
第三种方法 删除归档空间种的dbf数据文件
1、删除部分归档
2、修改归档备份策略为oracle类型
3、在rman里面,连接目标和恢复目录数据库,执行:crosscheck archivelog all;
4、执行归档备份,检查备份结果。
死锁问题:所有对数据库某些表的更新操作,报错:资源正忙,请制定wait后执行。
处 理:
1.查看系统死锁情况
select /*+ RULE */ ls.osuser os_user_name, ls.username user_name, decode(ls.type, 'RW', 'Row wait enqueue lock', 'TM', 'DML enqueue lock', 'TX', 'Transaction enqueue lock', 'UL', 'User supplied lock') lock_type, o.object_name object, decode(ls.lmode, 1, null, 2, 'Row Share', 3, 'Row Exclusive', 4, 'Share', 5, 'Share Row Exclusive', 6, 'Exclusive', null) lock_mode, o.owner, ls.sid, ls.serial# serial_num, ls.id1, ls.id2 from sys.dba_objects o, ( select s.osuser, s.username, l.type, l.lmode, s.sid, s.serial#, l.id1, l.id2 from v$session s, v$lock l where s.sid = l.sid ) ls where o.object_id = ls.id1 and o.owner <> 'SYS' order by o.owner, o.object_name
select 'alter system kill session '''||l.session_id||','||d.serial#||''';'from v$locked_object l, dba_objects b,v$lock c, v$session dwhere b.object_id=l.object_idand l.session_id=c.sid and l.session_id=d.sid and c.block>0;