欢迎来到天天文库
浏览记录
ID:1248805
大小:945.00 KB
页数:0页
时间:2017-11-09
《oracle问题解决方法集锦》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Oracle回滚段表空间文件丢损的处理===========================================================数据库是启动着的如果你检测到丢失或损坏了回滚段表空间的数据文件,并且数据库是运行着的,不要把它down掉。在很多情况下,数据库是启着的比关闭着解决问题更容易些。这种情况的两种可能的解决方法:A)使丢失的那个数据文件offline,并从备份中恢复它,这种情况适用于数据库是处于归档方式的。B)另一个方法是offline掉所有的那个文件所属表空间的回滚段,drop那个表空间,然后得建它们。你可能不得不杀掉那些使用着回滚段的进程,以便使它
2、offline.方法II.A:从备份恢复那个数据文件这个方法只有你的库是在归档方式下才能使用。1、脱机(offline)那个丢失的数据文件。ALTERDATABASEDATAFILEOFFLINE;提示:其于目前数据库的事务量,你可能需要建一个临时的回滚表空间和一些临时的回滚段以备正常业务运行。2、从备份中恢复(restore)那个数据文件。3、执行如下命令SELECTV1.GROUP#,MEMBER,SEQUENCE#FROMV$LOGV1,V$LOGFILEV2WHEREV1.GROUP#=V2.GROUP#;这将列出所有的联机的重做日志和他们的序号及首次改变号(firstcha
3、ngenumbers).4、得用联机日志及归档日志恢复那个文件RECOVERDATAFILE5、确认所有的日志都被恢复,只到你收到"Mediarecoverycomplete"信息。6、使这个数据文件onlineALTERDATABASEDATAFILEONLINE;方法II.B:重建回滚表空间这种方法不必考虑数据库是否是归档模式的。步骤如下:1、试图脱机所有的丢失或损坏数据文件所在回滚表空间中所包含的回滚段。ALTERROLLBACKSEGMENTOFFLINE;重复执行这个命令直到所包含的回滚段都脱机.2、检查回滚段的状态。在drop掉它们之前它们必需是offline状态的。SE
4、LECTSEGMENT_NAME,STATUSFROMDBA_ROLLBACK_SEGSWHERETABLESPACE_NAME=;3、删除掉所有脱机的c。DROPROLLBACKSEGMENT;4、处理那些保持online状态的回滚段重复执行2一下的命令,如果回滚段在执行1中命令仍保扭亏为盈"ONLINE"状态,意味着它之中有活动的事务,你可以用如下的查询来确认一下:SELECTSEGMENT_NAME,XACTSACTIVE_TX,V.STATUSFROMV$ROLLSTATV,DBA_ROLLBACK_SEGSWHERETABLESPACE_N
5、AME=ANDSEGMENT_ID=USN;如果这个查询没有结果返回,意味着没有事务在这些回滚段中了。哪果有结果返回,那些不能offline的回滚段的状态应为"PENDINGOFFLINE"。可以用5中的方法把这些事务杀掉。5、强制使有活动事务的回滚段脱机执行如下查询,看这些"PENDINGOFFLINE"的回滚段包含哪些事务。SELECTS.SID,S.SERIAL#,S.USERNAME,R.NAME"ROLLBACK"FROMV$SESSIONS,V$TRANSACTIONT,V$ROLLNAMERWHERER.NAMEIN(6、ROLLBACK_1>,...,)ANDS.TADDR=T.ADDRANDT.XIDUSN=R.USN;用ALTERSYSTEMKILLSESSION,;语句杀掉这些事务,重复执行上面的查询,直到没有事务存在,这时运行一下2中的查询,确认这些回滚段己经处于offline状态,并用3中的语句把它们drop掉。6、删除这个回滚表空间。DROPTABLESPACEINCLUDINGCONTENTS;如果语句执行失败,请与oracle技术支持联系,否则转向77、重建回滚段表空间。8、重建回滚段,并使它们联机(online)。译者按:回滚段表空间的数据文7、件丢失或损坏在实际中是比较棘手和常见的,产生这种问题的原回很多的,比如介质的损坏、人为的误操作、机器的突然的断电等等。建议没实践过这种操作的oracle的爱好者可以模拟一下这种故障,实际实测一下,注意一定要在测试库,我模拟的方法如下:1、单独建了一个rbs表空间,并在这个表空间建了一个回滚段rbs_test。2、指定一个transaction用这个回滚段sql>settransactionuserollbacksegmentrbs_test;sql>ins
6、ROLLBACK_1>,...,)ANDS.TADDR=T.ADDRANDT.XIDUSN=R.USN;用ALTERSYSTEMKILLSESSION,;语句杀掉这些事务,重复执行上面的查询,直到没有事务存在,这时运行一下2中的查询,确认这些回滚段己经处于offline状态,并用3中的语句把它们drop掉。6、删除这个回滚表空间。DROPTABLESPACEINCLUDINGCONTENTS;如果语句执行失败,请与oracle技术支持联系,否则转向77、重建回滚段表空间。8、重建回滚段,并使它们联机(online)。译者按:回滚段表空间的数据文
7、件丢失或损坏在实际中是比较棘手和常见的,产生这种问题的原回很多的,比如介质的损坏、人为的误操作、机器的突然的断电等等。建议没实践过这种操作的oracle的爱好者可以模拟一下这种故障,实际实测一下,注意一定要在测试库,我模拟的方法如下:1、单独建了一个rbs表空间,并在这个表空间建了一个回滚段rbs_test。2、指定一个transaction用这个回滚段sql>settransactionuserollbacksegmentrbs_test;sql>ins
此文档下载收益归作者所有