基于用户管理的备份与恢复—noarchivelog模式下的备份与恢复
2011-08-05 14:20
645 查看
1. NOARCHIVELOG 模式
NOARCHIVELOG 是指不保留重做历史记录的日志操作模式。这种操作模式只能用于保护例程失败(例如系统断电),而不能保护介质失败。NOARCHIVELOG 模式具有以下特点:
当检查点完成之后,后台进程LGWR 可以覆盖原有重做日志内容。
如果在数据库备份之后的重做日志内容已经被覆盖,那么当数据文件出现介质失败时,只能恢复到过去的完全备份点。
当数据库处于OPEN 状态时,不能备份数据库。
当执行数据库备份时,必须使用SHUTDOWN NORMAL 或 SHUTDOWN IMMEDIATE 关闭数据库。
当执行数据库备份时,必须备份所有数据文件和控制文件。
2. 在 NOARCHIVELOG 模式下的备份
(1) 列出要备份的数据文件和控制文件。
(2) 关闭数据库。
(3) 复制所有数据文件和控制文件到备份目录。
(4) 启动例程并打开数据库。
1) 数据文件出现介质失败但重做日志未被覆盖。
(1) 装载数据库到mount状态。
(2) 确定需要恢复的数据文件。
(3) 复制数据文件备份。
(4) 恢复数据文件。
(5) 打开数据库。
次要数据文件是指只包含次要数据的数据文件。如果次要数据文件出现介质失败,并且备份以来的重做日志内容已经被覆盖,那么可以删除次要数据文件。
(1) 关闭数据库。
(2) 复制所有数据文件和控制文件备份。
(3) 装载数据库到mount状态。
(4) 用RESETLOGS 选项打开数据库。
NOARCHIVELOG 是指不保留重做历史记录的日志操作模式。这种操作模式只能用于保护例程失败(例如系统断电),而不能保护介质失败。NOARCHIVELOG 模式具有以下特点:
当检查点完成之后,后台进程LGWR 可以覆盖原有重做日志内容。
如果在数据库备份之后的重做日志内容已经被覆盖,那么当数据文件出现介质失败时,只能恢复到过去的完全备份点。
当数据库处于OPEN 状态时,不能备份数据库。
当执行数据库备份时,必须使用SHUTDOWN NORMAL 或 SHUTDOWN IMMEDIATE 关闭数据库。
当执行数据库备份时,必须备份所有数据文件和控制文件。
2. 在 NOARCHIVELOG 模式下的备份
(1) 列出要备份的数据文件和控制文件。
(2) 关闭数据库。
(3) 复制所有数据文件和控制文件到备份目录。
(4) 启动例程并打开数据库。
SQL> select log_mode from v$database; LOG_MODE ------------ NOARCHIVELOG SQL> select name from v$datafile 2 union 3 select name from v$controlfile; NAME ---------------------------------------------------------------------------------------- F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\CONTROL01.CTL F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\CONTROL02.CTL F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\CONTROL03.CTL F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\SYSAUX01.DBF F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\SYSTEM01.DBF F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\TESTSPACE01.DBF F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\UNDOTBS01.DBF F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\USERS01.DBF 已选择8行。 SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> host copy F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\CONTROL01.CTL F:\ORACLE\PRODUCT\10.2.0\backup_ing SQL> host copy F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\CONTROL02.CTL F:\ORACLE\PRODUCT\10.2.0\backup_ing SQL> host copy F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\CONTROL03.CTL F:\ORACLE\PRODUCT\10.2.0\backup_ing SQL> host copy F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\SYSAUX01.DBF F:\ORACLE\PRODUCT\10.2.0\backup_ing SQL> host copy F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\SYSTEM01.DBF F:\ORACLE\PRODUCT\10.2.0\backup_ing SQL> host copy F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\TESTSPACE01.DBF F:\ORACLE\PRODUCT\10.2.0\backup_ing SQL> host copy F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\UNDOTBS01.DBF F:\ORACLE\PRODUCT\10.2.0\backup_ing SQL> host copy F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\USERS01.DBF F:\ORACLE\PRODUCT\10.2.0\backup_ing SQL> startup ORACLE 例程已经启动。 Total System Global Area 612368384 bytes Fixed Size 1250428 bytes Variable Size 222301060 bytes Database Buffers 381681664 bytes Redo Buffers 7135232 bytes 数据库装载完毕。 数据库已经打开。 SQL>3 在NOARCHIVELOG 模式下的恢复
1) 数据文件出现介质失败但重做日志未被覆盖。
(1) 装载数据库到mount状态。
(2) 确定需要恢复的数据文件。
(3) 复制数据文件备份。
(4) 恢复数据文件。
(5) 打开数据库。
SQL> desc t_t; 名称 是否为空? 类型 ----------------------------------------------------------------- -------- ------------ TEXT VARCHAR2(20) SQL> insert into t_t values('evan'); 已创建 1 行。 SQL> commit; 提交完成。 SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> host del F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\USERS01.DBF SQL> startup ORACLE 例程已经启动。 Total System Global Area 612368384 bytes Fixed Size 1250428 bytes Variable Size 226495364 bytes Database Buffers 377487360 bytes Redo Buffers 7135232 bytes 数据库装载完毕。 ORA-01157: 无法标识/锁定数据文件 4 - 请参阅 DBWR 跟踪文件 ORA-01110: 数据文件 4: 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\USERS01.DBF' SQL> select status from v$instance; STATUS ------------ MOUNTED SQL> select file#,error from v$recover_file; FILE# ERROR ---------- ----------------------------------------------------------------- 4 FILE NOT FOUND SQL> recover datafile 4; ORA-00283: 恢复会话因错误而取消 ORA-01110: 数据文件 4: 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\USERS01.DBF' ORA-01157: 无法标识/锁定数据文件 4 - 请参阅 DBWR 跟踪文件 ORA-01110: 数据文件 4: 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\USERS01.DBF' SQL> host copy F:\ORACLE\PRODUCT\10.2.0\backup_ing\USERS01.DBF F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE 已复制 1 个文件。 SQL> recover datafile 4; 完成介质恢复。 SQL> alter database open; 数据库已更改。 SQL> select * from t_t; TEXT -------------------- evan2) 次要数据文件出现介质失败
次要数据文件是指只包含次要数据的数据文件。如果次要数据文件出现介质失败,并且备份以来的重做日志内容已经被覆盖,那么可以删除次要数据文件。
SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------------------------------------------- F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\SYSTEM01.DBF F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\UNDOTBS01.DBF F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\SYSAUX01.DBF F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\USERS01.DBF F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\TESTSPACE01.DBF SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> host del F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\TESTSPACE01.DBF SQL> startup ORACLE 例程已经启动。 Total System Global Area 612368384 bytes Fixed Size 1250428 bytes Variable Size 243272580 bytes Database Buffers 360710144 bytes Redo Buffers 7135232 bytes 数据库装载完毕。 ORA-01157: 无法标识/锁定数据文件 5 - 请参阅 DBWR 跟踪文件 ORA-01110: 数据文件 5: 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\TESTSPACE01.DBF' SQL> select status from v$instance; STATUS ------------ MOUNTED SQL> select name from v$datafile where file#=5; NAME -------------------------------------------------------------------------------------------------------------------- F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\TESTSPACE01.DBF SQL> alter database datafile 5 offline drop; 数据库已更改。 SQL> alter database open; 数据库已更改。3)重要数据文件出现介质失败
(1) 关闭数据库。
(2) 复制所有数据文件和控制文件备份。
(3) 装载数据库到mount状态。
(4) 用RESETLOGS 选项打开数据库。
SQL> create table t (id int); 表已创建。 SQL> insert into t values(1); 已创建 1 行。 SQL> commit; 提交完成。 SQL> insert into t values(2); 已创建 1 行。 SQL> commit; 提交完成。 SQL> set linesize 120 SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------- 1 1 38 52428800 1 NO INACTIVE 8081483 21-8月 -12 2 1 39 52428800 1 NO CURRENT 8109794 22-8月 -12 3 1 37 52428800 1 NO INACTIVE 8052682 20-8月 -12 SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 --删除数据文件,模拟数据文件丢失 SQL> ho del G:\oracle\product\10.2.0\oradata\orcl\USERS01.DBF SQL> startup ORACLE 例程已经启动。 Total System Global Area 612368384 bytes Fixed Size 1250428 bytes Variable Size 209718148 bytes Database Buffers 394264576 bytes Redo Buffers 7135232 bytes 数据库装载完毕。 ORA-01157: 无法标识/锁定数据文件 4 - 请参阅 DBWR 跟踪文件 ORA-01110: 数据文件 4: 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF' SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------- 1 1 38 52428800 1 NO INACTIVE 8081483 21-8月 -12 3 1 37 52428800 1 NO INACTIVE 8052682 20-8月 -12 2 1 39 52428800 1 NO CURRENT 8109794 22-8月 -12 SQL> shutdown immediate ORA-01109: 数据库未打开 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> --复制所有控制文件与数据文件到指定的位置,这里要复制所有的控制文件与数据文件,因为是非归档模式 SQL> startup mount ORACLE 例程已经启动。 Total System Global Area 612368384 bytes Fixed Size 1250428 bytes Variable Size 209718148 bytes Database Buffers 394264576 bytes Redo Buffers 7135232 bytes 数据库装载完毕。 SQL> recover database until cancel; 完成介质恢复。 SQL> alter database open; alter database open * 第 1 行出现错误: ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项 SQL> alter database open resetlogs; 数据库已更改。 --只能恢复到我们备份的时间点,所以表t不存在 SQL> desc t ERROR: ORA-04043: 对象 t 不存在在NOARCHIVELOG模式下,RECOVER DATABASE UNTIL CANCEL 命令并未执行任何恢复操作,只是提示控制文件不再使用原有重做日志。
相关文章推荐
- oracle用户管理的完全恢复2:在NOARCHIVELOG 模式下执行恢复(无联机日志的备份)
- 8. 在NOARCHIVELOG模式下用户管理的备份与恢复
- 8. 在NOARCHIVELOG模式下用户管理的备份与恢复
- oracle用户管理的完全恢复1:在NOARCHIVELOG 模式下执行恢复
- ARCHIVELOG模式下用户管理的不完全恢复(4)——基于备份控制文件的不完全恢复!
- noarchivelog模式下增量备份的恢复
- 我的备份与恢复实验(归档模式下用户管理的不完全恢复,基于时间点的)
- ARCHIVELOG模式下用户管理的不完全恢复—基于备份控制文件的不完全恢复
- NOARCHIVELOG模式下冷备份还原数据库!
- ARCHIVELOG模式下用户管理的不完全恢复(3)——基于取消的不完全恢复!
- 【ORACLE备份与恢复】用户管理的:基于scn的数据库不完全恢复
- 【ORACLE备份与恢复】用户管理的:基于时间的数据库不完全恢复
- ARCHIVELOG模式下用户管理的不完全恢复(2)——基于SCN的不完全恢复!
- 【ORACLE备份与恢复】用户管理的:基于取消的数据库不完全恢复
- ORA-19602: 无法按 NOARCHIVELOG 模式备份或复制活动文件
- Oracle数据库:NOARCHIVELOG 模式恢复示例
- 基于用户管理的备份与恢复—恢复重做日志
- 基于用户管理的备份与恢复-控制文件的备份与恢复
- 基于用户管理的备份与恢复-备份其它文件
- 基于用户管理的备份与恢复