基于用户管理的备份与恢复—noarchivelog模式下的备份与恢复

1. NOARCHIVELOG 模式
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 -------------------- evan 2) 次要数据文件出现介质失败
次要数据文件是指只包含次要数据的数据文件。如果次要数据文件出现介质失败,并且备份以来的重做日志内容已经被覆盖,那么可以删除次要数据文件。

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> select * from t; TEXT -------------------- ajax java SQL> insert into t values('abc'); 已创建 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 247466884 bytes Database Buffers 356515840 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> shutdown immediate ORA-01109: 数据库未打开 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> host copy F:\ORACLE\PRODUCT\10.2.0\backup_ing\CONTROL01.CTL F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE SQL> host copy F:\ORACLE\PRODUCT\10.2.0\backup_ing\CONTROL02.CTL F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE SQL> host copy F:\ORACLE\PRODUCT\10.2.0\backup_ing\CONTROL03.CTL F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE SQL> host copy F:\ORACLE\PRODUCT\10.2.0\backup_ing\SYSAUX01.DBF F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE SQL> host copy F:\ORACLE\PRODUCT\10.2.0\backup_ing\SYSTEM01.DBF F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE SQL> host copy F:\ORACLE\PRODUCT\10.2.0\backup_ing\TESTSPACE01.DBF F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE SQL> host copy F:\ORACLE\PRODUCT\10.2.0\backup_ing\UNDOTBS01.DBF F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE SQL> host copy F:\ORACLE\PRODUCT\10.2.0\backup_ing\USERS01.DBF F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE SQL> startup ORACLE 例程已经启动。 Total System Global Area 612368384 bytes Fixed Size 1250428 bytes Variable Size 247466884 bytes Database Buffers 356515840 bytes Redo Buffers 7135232 bytes 数据库装载完毕。 ORA-01122: 数据库文件 5 验证失败 ORA-01110: 数据文件 5: 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\TESTSPACE01.DBF' ORA-01207: 文件比控制文件更新 - 旧的控制文件 SQL> startup mount; ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它 SQL> startup force mount; ORACLE 例程已经启动。 Total System Global Area 612368384 bytes Fixed Size 1250428 bytes Variable Size 247466884 bytes Database Buffers 356515840 bytes Redo Buffers 7135232 bytes 数据库装载完毕。 SQL> recover database until cancel ORA-00283: 恢复会话因错误而取消 ORA-01122: 数据库文件 5 验证失败 ORA-01110: 数据文件 5: 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\TESTSPACE01.DBF' ORA-01207: 文件比控制文件更新 - 旧的控制文件 SQL> shutdown immediate ORA-01109: 数据库未打开 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount; ORACLE 例程已经启动。 Total System Global Area 612368384 bytes Fixed Size 1250428 bytes Variable Size 247466884 bytes Database Buffers 356515840 bytes Redo Buffers 7135232 bytes 数据库装载完毕。 SQL> recover database until cancel ORA-00283: 恢复会话因错误而取消 ORA-01122: 数据库文件 5 验证失败 ORA-01110: 数据文件 5: 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\TESTSPACE01.DBF' ORA-01207: 文件比控制文件更新 - 旧的控制文件 SQL> recover database using BACKUP CONTROLFILE ORA-00279: 更改 624379 (在 08/05/2011 12:27:59 生成) 对于线程 1 是必需的 ORA-00289: 建议: F:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORALIFE\ARCHIVELOG\2011_08_05\O1_MF_1_2_%U_.ARC ORA-00280: 更改 624379 (用于线程 1) 在序列 #2 中 指定日志: {<RET>=suggested | filename | AUTO | CANCEL} cancel 介质恢复已取消。 SQL> alter database open resetlogs; alter database open resetlogs * 第 1 行出现错误: ORA-01113: 文件 1 需要介质恢复 ORA-01110: 数据文件 1: 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORALIFE\SYSTEM01.DBF' SQL> alter database backup controlfile to trace; 数据库已更改。 SQL> SELECT c.VALUE || '/' || d.instance_name || '_ora_' || a.spid || '.trc' TRACE 2 FROM v$process a, v$session b, v$parameter c, v$instance d 3 WHERE a.addr = b.paddr 4 AND b.audsid = USERENV ('sessionid') 5 AND c.NAME = 'user_dump_dest'; TRACE ------------------------------------------------------------------------------------------------------------------------ F:\ORACLE\PRODUCT\10.2.0\ADMIN\ORALIFE\UDUMP/oralife_ora_2592.trc F:\ORACLE\PRODUCT\10.2.0\ADMIN\ORALIFE\UDUMP/oralife_ora_5764.trc SQL> shutdown immediate ORA-01109: 数据库未打开 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> @e:desktop/create.sql ORACLE 例程已经启动。 Total System Global Area 612368384 bytes Fixed Size 1250428 bytes Variable Size 247466884 bytes Database Buffers 356515840 bytes Redo Buffers 7135232 bytes 控制文件已创建。 完成介质恢复。 数据库已更改。 SQL> select * from t; TEXT --------------------- ajax java abc在NOARCHIVELOG模式下,RECOVER DATABASE UNTIL CANCEL 命令并未执行任何恢复操作,只是提示控制文件不再使用原有重做日志。

理解recover database using BACKUP CONTROLFILE,SCN,resetlogs。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值