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

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 


          2.释放被锁的资源,此语句直接生成kill锁的sql,把结果直接放到pl/sql或者sqlplus中批量执行就可以了。

select 'alter system kill session '''||l.session_id||','||d.serial#||''';'
from v$locked_object l, dba_objects b,v$lock c, v$session d
where b.object_id=l.object_id
and l.session_id=c.sid and l.session_id=d.sid and c.block>0;


       阵列问题:对于任何对于数据库的操作报错:Transaction is already completed - do not call commit or rollback more than once per transaction

       处   理:

            1.使用top检查操作系统iowait情况,如果iowait大于30说明阵列的读写出现严重瓶颈,需要在阵列找原因。

            2.使用 iostat -xn 3 检查对阵列的读写状况

avg-cpu:  %user   %nice    %sys   %idle
           0.46    0.00    0.53   99.01

Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
/dev/cciss/c0d0
             0.22   3.04  0.15  1.31    2.92   34.79     1.46    17.39    25.93     0.06    4.12   2.54   0.37
/dev/cciss/c0d0p1
             0.00   0.00  0.00  0.00    0.00    0.00     0.00     0.00     4.08     0.00  188.22 141.68   0.00

&nbs