如何在归档模式(NOARCHIVE)下,手工热备数据库和表空间?
相关实验
1.工作准备:由于NOARCHIVE 模式下不支持手工热备,所以需先检查数据库是否处于归档模式(ARCHIVE)
archive log list;
如果不是,需要一致性关闭后重启数据库到mount状态下设置。
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> archive log list;
SQL> alter database open;
2.手工数据库热备
手工非一致性备份(热备份)的执行方式及热备份的监控(v$backup)
SQL> alter database begin backup;
然后对整个库做热备份,即手工COPY数据库相关文件到
SQL> alter database end backup;
3.表空间热备
相关知识点:
v$datafile中显示的数据文件的信息,这些数据是从oracle的控制文件中获得的
v$datafile_header是从数据文件的头部读取的
在正常运行下,两者的检查点SCN值是一致的,即以下查询结果ctrf_scn和dfh_scn值相同
select a.file#,
a.TABLESPACE_NAME,
a.name,
a.checkpoint_change# dfh_scn,
b.checkpoint_change# ctrf_scn
from v$datafile_header a, v$datafile b
where a.file# = b.file#;
FILE# TABLESPACE_NAME NAME DFH_SCN CTRF_SCN
1 1 SYSTEM /u01/app/oracle/oradata/orcl/system01.dbf 3992729 3992729
2 2 SYSAUX /u01/app/oracle/oradata/orcl/sysaux01.dbf 3992729 3992729
3 3 UNDOTBS1 /u01/app/oracle/oradata/orcl/undotbs01.dbf 3992729 3992729
4 4 USERS /u01/app/oracle/oradata/orcl/users01.dbf 3992729 3992729
5 5 RMAN_TS /u01/app/oracle/oradata/orcl/rmants.dbf 3992729 3992729
6 6 EXAMPLE /u01/app/oracle/oradata/orcl/example.dbf 3992729 3992729
7 7 TEST_TS /u01/app/oracle/oradata/orcl/test_ts.dbf 3992729 3992729
此时v$datafile_header a, v$datafile b 中的SCN号一致。
但当datafile出现损坏时,可以用v$datafile_header确定应用重做的起始SCN(即上述查询别名dfh_scn,),而v$datafile可确定应用重做的结束SCN值(ctrf_scn)。
手工非一致性备份(热备份)的执行方式及热备份的监控(v$backup)
SQL> alter tablespace TEST_TS begin backup;
手工对对表空间对应数据文件进行备份
手工备份数据文件期间 ,scn 被冻结,不发生变化。
select a.file#,
a.TABLESPACE_NAME,
a.name,
a.checkpoint_change# dfh_scn,
b.checkpoint_change# ctrf_scn
from v$datafile_header a, v$datafile b
where a.file# = b.file#;
FILE# TABLESPACE_NAME NAME DFH_SCN CTRF_SCN
1 1 SYSTEM /u01/app/oracle/oradata/orcl/system01.dbf 3992729 3992729
2 2 SYSAUX /u01/app/oracle/oradata/orcl/sysaux01.dbf 3992729 3992729
3 3 UNDOTBS1 /u01/app/oracle/oradata/orcl/undotbs01.dbf 3992729 3992729
4 4 USERS /u01/app/oracle/oradata/orcl/users01.dbf 3992729 3992729
5 5 RMAN_TS /u01/app/oracle/oradata/orcl/rmants.dbf 3992729 3992729
6 6 EXAMPLE /u01/app/oracle/oradata/orcl/example.dbf 3992729 3992729
7 7 TEST_TS /u01/app/oracle/oradata/orcl/test_ts.dbf 3993077 3993077
发现TEST_TS对应记录的SCN与别的不同
SQL> select * from v$backup;
FILE# STATUS CHANGE# TIME
1 1 NOT ACTIVE 0
2 2 NOT ACTIVE 0
3 3 NOT ACTIVE 0
4 4 NOT ACTIVE 0
5 5 NOT ACTIVE 0
6 6 NOT ACTIVE 0
7 7 ACTIVE 3993077 2018-9-18 9:11:56
7 rows selected.
STATUS 是 ACTIVE,表示可以备份相应的数据文件。并且对于其中的数据块 DBWN 仍然可以刷新。
通过操作系统命令CP完成数据文件的备份
$cd /u01/app/oracle/oradata/orcl/
$cp test_ts.dbf test_ts.bak
备份完毕,执行 end backup
SQL> alter tablespace TEST_TS end backup;
insert into test.test_tab values (3);
select * from test.test_tab;
alter system checkpoint;
select a.file#,
a.TABLESPACE_NAME,
a.name,
a.checkpoint_change# dfh_scn,
b.checkpoint_change# ctrf_scn
from v$datafile_header a, v$datafile b
where a.file# = b.file#;
FILE# TABLESPACE_NAME NAME DFH_SCN CTRF_SCN
1 1 SYSTEM /u01/app/oracle/oradata/orcl/system01.dbf 3993202 3993202
2 2 SYSAUX /u01/app/oracle/oradata/orcl/sysaux01.dbf 3993202 3993202
3 3 UNDOTBS1 /u01/app/oracle/oradata/orcl/undotbs01.dbf 3993202 3993202
4 4 USERS /u01/app/oracle/oradata/orcl/users01.dbf 3993202 3993202
5 5 RMAN_TS /u01/app/oracle/oradata/orcl/rmants.dbf 3993202 3993202
6 6 EXAMPLE /u01/app/oracle/oradata/orcl/example.dbf 3993202 3993202
7 7 TEST_TS /u01/app/oracle/oradata/orcl/test_ts.dbf 3993202 3993202
此时v$datafile_header a, v$datafile b 中的SCN号一致,且不同数据文件SCN号一致。