探究ORACLE的SCN机制(3):Begin Backup

        在用户管理的备份模式下,如果是在线备份,在必须先启动beging backup,也就是热备份模式,以恢复可能出现的断裂快。

       启动了begin backup后,数据库会冻结表空间或数据库对应数据文件的文件头的checkpoint_change#,不过在冻结之前会先发出一次检查点,并将该检查点前的所有事务应用都固化到数据文件,然后冻结这个SCN,直到使用END BACKUP,使备份过程结束,再更新为新的SCN,冻结的原因是因为使用操作系统命令拷贝数据文件时,他不能保证第一个读取的块就是数据文件头,如果不冻结,则可能从备份开始,已经多次更新了文件头,而此时文件头还没有被拷贝,这样等文件头被拷贝后,他的SCN已经远远大于了数据文件中其他数据块的SCN,这样从文件头的SCN来定位恢复起点就不现实了 。

     一般情况下,被冻结的数据文件的文件头的checkpoint_change#是会小于当前的SCN的,不过,由于在冻结之前对需要冻结的数据文件发出过一次检查点,所以,如果刚冻结就直接强制关闭数据库的话,被冻结的数据文件的文件头的checkpoint_change#也是有可能大于当前的SCN的。不过,这种情况下,说明在冻结之后数据库并没有对冻结文件进行什么操作,因此,此时被冻结的数据文件从某种角度来说还是一致性的。如下:

让表空间TEST01启动begin backup:

SQL>ALTER TABLESPACE TEST01 BEGIN BACKUP;

然后,马上强制关闭数据库(强制关闭数据库的时候,不会进行检查点操作)

SQL>SHUTDOWN ABORT;

打开数据库

SQL> startup open;
ORACLE instance started.

Total System Global Area  418484224 bytes
Fixed Size                  1375004 bytes
Variable Size             314574052 bytes
Database Buffers           96468992 bytes
Redo Buffers                6066176 bytes
Database mounted.
ORA-10873: file 6 needs to be either taken out of backup mode or media
recovered
ORA-01110: data file 6: 'D:\APP\ASUS\ORADATA\WAREHOUSE\TEST01.DBF'

查看当前的SCN和被冻结的数据文件(6,8)的checkpoint_change#,会发现数据文件的要比当前的SCN要大:

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           1162657

SQL> select file#,checkpoint_change# from v$datafile_header;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            1162657
         2            1162657
         3            1162657
         4            1162657
         5            1162657
         6            1168090
         7            1162657
         8            1168090

8 rows selected.

不过,可以正常恢复:

SQL>ALTER TABLESPACE END BACKUP;

SQL>ALTER DATABASE OPEN;

不过,正常情况下,被冻结的数据文件的文件头checkpoint_change#要比当前数据库的SCN要小:

1、让表空间begin backup

SQL>ALTER TABLESPACE TEST01 BEGIN BACKUP;
2、多次发出检查点

SQL>ALTER SYSTEM CHECKPOINT;

SQL>ALTER SYSTEM CHECKPOINT;

SQL>ALTER SYSTEM CHECKPOINT;

SQL>ALTER SYSTEM CHECKPOINT;
3、关闭数据

SQL>SHUTDOWN ABORT;
4、加载数据库
SQL>STARTUP MOUNT;
5、查看当前SCN与被冻结数据文件的checkpoint_change#

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           1188529

SQL> select file#,checkpoint_change# from v$datafile_header;

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            1188529
         2            1188529
         3            1188529
         4            1188529
         5            1188529
         6            1188510
         7            1188529
         8            1188510

8 rows selected.
SQL> select * from v$backup;

     FILE# STATUS                CHANGE# TIME
---------- ------------------ ---------- ---------
         1 UNKNOWN ERROR               0
         2 UNKNOWN ERROR               0
         3 UNKNOWN ERROR               0
         4 UNKNOWN ERROR               0
         5 UNKNOWN ERROR               0
         6 ACTIVE                1168090 20-AUG-13
         7 NOT ACTIVE                  0
         8 ACTIVE                1168090 20-AUG-13
6、让表空间end backup

SQL>ALTER TABLESPACE TEST01 END BACKUP;

SQL>ALTER DATABASE OPEN;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值