之前介绍过Oracle表空间恢复,这里在向大家详细介绍重建Oracle表空间之前,首先让大家了解下用户表空间的错误,然后全面介绍重建Oracle表空间。
错误:
在启动数据库时出现ORA-01157,ORA-01110或操作系统级错误例如ORA-07360,在关闭数据库(使用shutdown normal或shutdown immediate) 时将导致错误ORA-01116,ORA-01110以及操作系统级错误ORA-07368
以下有两种解决方案:
1.用户的表空间可以被轻易地重建
即最近导出的对象是可用的或表空间中的对象可以被轻易地重建等.在这种情况下,最简单的方法是offline并删除该数据文件,删除表空间并重建Oracle表空间以及所有的对象.
svrmgrl> startup mount
svrmgrl> alter database datafile 'filename' offline drop;
svrmgrl> alter database open;
svrmgrl> drop tablespace tablespace_name including contents;
重建Oracle表空间及所有对象.
2.用户的表空间不能够被轻易地重建
在大多数情况下,重建Oracle表空间是不可能及太辛苦的工作.方法是倒备份及做介质恢复.如果您的系统运行在NOARCHIVELOG模式下,则只有丢失的数据在online redo log中方可被恢复。步骤如下:
1)Restore the lost datafile from a backup
2)svrmgrl> startup mount
3)svrmgrl> select v1.group#,member,sequence#,first_change#
◆from v$log v1,v$logfile v2
◆where v1.group#=v2.group#;
4)如果数据库运行在NOARCHIVELOG模式下则:
svrmgrl> select file#,change# from v$recover_file;
如果 CHANGE# 大于最小的FIRST_CHANGE#则数据文件可以被恢复。
如果 CHANGE# 小于最小的FIRST_CHANGE#则数据文件不可恢复。 恢复最近一次的全备份或采用方案一.
5)svrmgrl> recover datafile filename;
6)确认恢复成功
7)svrmgrl> alter database open resetlogs;
3.只读表空间无需做介质恢复,只要将备份恢复即可.唯一的例外是:
◆表空间在***一次备份后被改为read-write 模式
◆表空间在***一次备份后被改为read-only 模式
◆在这种情况下,均需进行介质恢复
【编辑推荐】