暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

How do I recover from ... loss of a datafile that belongs to a traditional rollback segment tablespace

2011-01-01
665

The Oracle (tm) Users' Co-Operative FAQ

How to Recover From a Lost Datafile That Belongs to the Rollback Tablespace


Author's name: Allan W. Tham

Author's Email: allanwtham@hotmail.com

Date written: Dec 15 2001

Oracle version(s): 8.1.7.0.0

The main concern in which the lost of a datafile in Rollback tablespace is that the active transactions in the rollback segments do not get lost. There are three scenarios to take care of.


There are three scenarios:
I. The database was cleanly shut down
II. The database was not cleanly shut down
III. The database is up and running

I. The database was cleanly shut down(All the committed data are written to disks)
     1. Comment out the ROLLBACK_SEGMENTS entry in init.ora
     2. Startup restrict mount
     3. Alter database datafile '/path/filename.dbf' offline drop;
     4. Alter database open
     5. Drop tablespace tablespace_name including contents;
     6. Recreate the rollback tablespace with all of its rollback segments.
         The segment name should correspond to ROLLBACK_SEGMENTS in init.ora
     7. Shutdown immediate
     8. Uncomment the ROLLBACK_SEGMENTS in init.ora
     9. Startup
     10. select segment_name, status from dba_rollback_segs just to make sure all rollback segments are online

II. The database was not cleanly shut down (there are active transactions in the rollback segments)
     1. Restore the corrupted/lost file from backup using OS cp command
     2. Startup mount
     3. Check the status of the datafile: select name, status from v$datafile;
         Online the datafile if it's OFFLINE by Alter database datafile '/path/filename.dbf' ONLINE
     4. select v1.group#, member, sequence#, first_change#
         from v$log v1, v$logfile v2
         where v1.group#=v2.group#;
     5. Recover datafile '/path/fileame.dbf'
     6. Logs will be prompted. Confirm it until you see "Media Recovery Complete".
         If you are asked to enter a non-existence archived log, enter the full path of
         a member of the redo group where the sequence number matches the one being
         prompted (from step 4) until you see "Media Recovery Complete"
     7. Alter database open

III. The database is up and running (Simpler)
     1.Create few additional rollback segments to handle the database activities.
         Eg. Create tablespace rbstemp datafile '/path/rbstemp01.dbf' size 50M'
               Create rollback segment xxx tablespace rbstemp
     2. Offline the lost datafile: Alter database datafile '/path/filename.dbf' offline
     3. Restore the lost datafile from backup using OS cp
     4. select v1.group#, member, sequence#, first_change#
         from v$log v1, v$logfile v2
         where v1.group#=v2.group#;
     5.Recover datafile '/path/filename.dbf'
     6. Logs will be prompted. Confirm it until you see "Media Recovery Complete".
         If you are asked to enter a non-existence archived log, enter the full path of
         a member of the redo group where the sequence number matches the one being
         prompted (from step 4) until you see "Media Recovery Complete"
     7. Online the datafile : Alter database datafile '/path/filename.dbf' online


Note: this recovery method is good for Archivelog mode ON.


Further reading: Oracle Backup and Recovery; Metalink Note 1013221.6



最后修改时间:2020-04-16 15:13:24
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论