基于用户管理的备份与恢复—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> 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 命令并未执行任何恢复操作,只是提示控制文件不再使用原有重做日志。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值