WEB开发网
开发学院数据库Oracle Oracle数据库备份与恢复(3):OS备份和用户管理 阅读

Oracle数据库备份与恢复(3):OS备份和用户管理

 2008-11-05 11:58:34 来源:WEB开发网   
核心提示:3.4 分类案例 3.4.1 控件文件的备份与恢复 一、备份 1. 镜像控制文件手工备份 // 每当数据库结构发生变化时立即备份1.数据库关闭时,OS命令拷贝,Oracle数据库备份与恢复(3):OS备份和用户管理(5), 2. 联机备份SQL> alter database backup c

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;

上一页  1 2 3 4 5 

Tags:Oracle 数据库 备份

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接