技术开发 频道

Oracle备份与恢复总结之三:OS备份/用户管理的备份与恢复

3.4  分类案例

 3.4.1  件文件的备份与恢复
 
、备份
 
1.  镜像控制文件
手工备份       //  每当数据库结构发生变化时立即备份
1.数据库关闭时,OS命令拷贝。
2.  机备份
SQL> alter database backup controlfile to 'ctl.bak'; SQL> alter database backup controlfile to trace;
 
、恢复
 
1.  损坏一个控制文件:从镜像拷贝或修改 initSID.ora取消损坏的控制文件。
2.  损坏所有的控制文件:
利用备份的控制文件恢复,拷贝或在命令中恢复:
SQL> recover database ...using backup controlfile;
手工重建控制文件                                                                                                                               
NOMOUNT状态下执行
SQL> CREATE CONYTROLFILE..; //注意联机日志和数据文件的路径和文件名
SQL> alter database open resetlogs;
 
3.4.2  机日志文件的备份与恢复
 
一、备份
 
1.  镜像在不同的磁盘上。  //如果有镜像备份,不用恢复
2.  非归档模式下,在数据库关闭时用 OS命令拷贝备份。
3.  归档模式下,手工或自动归档。 、恢复    //  恢复后一定要重做备份 丢失日志组成员:
在有多个镜像时,一般不会报错,如果需要恢复,可以先删除再增加。
1.      SQL> alter database drop logfile member 'xx';
2.      SQL> alter database add logfile member 'xx' to group 2;
( 如果丢失当前日志组成员     可以先 alter system switch logfile;  进行操作。) 以下恢复方法都是指丢失所有日志组成员的情况下的恢复。
 一、丢失非当前联机日志
1.  启数据库到 Mount状态:
2.  建丢失的日志:用命令清空日志组的方法
//已归,重建该日志
SQL> alter database clear logfile group 2;
//归档模式下如果没有归档
SQL> alter database clear unarchived logfile group 2;
二、丢失当前联机日志
1.  果数据库正常关闭:
志中没有未决事务需要实例恢复,同非当前联机日志方法。
2.  果是非正常关闭数据库的情况,未决事务需要实例恢复:果有备份,可通过备份进行不完全恢复。// until cancel 有备份,进行强制性恢复      //  最后的办法,可能导致数据库的不一致
3.  果数据库当前为 Open状态,有活动的事务:
试能否 Export 热备份,如果可以,赶紧备份
查非当前日志是否正常,可先做 clear,然后尝试是否能 switch log,能
否正常关闭 DB,如果可以 switch log 正常关闭 DB,方法同 1,否则同 2
 
3.4.3  滚数据文件的恢复
 
1.  用备份中恢复
非归档模式下的恢复会有数据丢失
归档模式下,有可用备份,可完全恢复(需要关闭数据库)
2.  可用备份时强行恢复:
// offline drop,删除重建。
//  要先注释 undo_tablespace,或者重新指定一个系统回滚段表空间,然后再操作
1.  数据库正常关闭   没有未决的事务
1. shutdown,修改 init参数文件,注释 undo_tablespace
2. SQL>startup restrict mount;
3. SQL>alter database datafile 2 offline drop;
4. SQL>alter database open;
5. SQL>drop tablespace xxx including contents;
6.  建回滚段表空间
7.    shutdown,修改 init参数文件,去掉注释设置新的 undo_tablespace
8.    SQL> alter system disable restricted session;
2.  非正常关闭    制恢复  隐含参数:_CORRUPTED_ROLLBACK_SEGMENTS
1. shutdown,修改 init参数文件,删除 undo_tablespace
2. SQL>startup restrict mount;
3. SQL>alter database datafile 2 offline drop;
4. SQL>alter database open;
5. SQL>drop tablespace xxx including contents;
果出错:回滚段中有活动事务
SQL>drop rollback segment rbs0; rbs1, 2 ...
在第 1步中,加入隐含参数
_CORRUPTED_ROLLBACK_SEGMENTS
= (_SYSSMU1$,_SYSSMU2$,_SYSSMU3$, ...)
6.  建回滚段表空间,online
7. shutdown,修改 init参数文件,去掉注释设置新的 undo_tablespace
去掉隐含参数
8.    SQL>alter system disable restricted session;
 
3.4.5  时数据文件的恢复
 
方法:    先将用户临时表空间置为其他,然后删除重建
1. SQL> shutdown
2. SQL> startup restrict mount;
3. SQL> alter user xxx temporary tablespace TEMP2;
4. SQL> alter database open;
5. SQL> drop tablespace temp including contents;
6.  建临时表空间
7.  新分配给各用户
8.           SQL> alter system disable restricted session; 如果是默认的临时表空间,需要先将默认临时表空间置为其他 SQL> alter database default temporary tablespace temp_2;
0
相关文章