OCA读书笔记(14) - 备份和恢复基本概念

时间:2023-03-09 19:38:58
OCA读书笔记(14) - 备份和恢复基本概念

备份恢复概念

如何判断数据库的一致性

在mount状态下,oracle如何判断数据库的一致性

scn:system change number,它是数据库时钟

如何查询当前系统的scn:

select current_scn from v$database;

几个特殊的scn,在控制文件和数据文件头

控制文件中有三个:

1. 系统检查点scn:

select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
1077050

2. 控制文件中为每个数据文件记录一个检查点scn:

ORA10G>select file#,checkpoint_change# from v$datafile;

FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 1077050
2 1077050

3. 控制文件中还要记录每个文件的终止scn,数据库在正常运行的时候,它是无穷大的,只有在一致性关闭数据库
的时候才不为空:

select file#,last_change# from v$datafile;

FILE# LAST_CHANGE#
---------- ------------
1
2

shutdown immediate
startup mount

ORA10G>select file#,last_change# from v$datafile;

FILE# LAST_CHANGE#
---------- ------------
1 1079328
2 1079328

为什么一致性关闭就不为空?

因为一致性关闭的时候执行了检查点,检查点通知数据库写进程写脏块,然后更新控制文件和数据文件头的检查点scn

如果last_change#不为空,说明数据库是一致性关闭的,再次打开的时候不需要进行实例恢复

在数据文件的文件头也记录了数据文件的检查点scn,我们一般称它为启动scn

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

FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 1079329
2 1079329

oracle通过以上的检查点scn来判断是否要进行恢复

数据库在mount状态下,当发出open命令的时候,他要安装下列顺序检查一致性:

首先启动scn与控制文件中记录的数据文件的检查点scn进行比较,如果一致,则继续,否则要执行恢复:

shutdown immediate
startup mount

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

FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 1080854
2 1080854

ORA10G>select file#,checkpoint_change# from v$datafile;

FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 1080854
2 1080854

如一致,则比较启动scn和终止scn:

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

FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 1080854
2 1080854

ORA10G>select file#,last_change# from v$datafile;

FILE# LAST_CHANGE#
---------- ------------
1 1080854
2 1080854

如果一致,数据库就可以打开了,否则要就行恢复

select file#,checkpoint_change#,last_change# from v$datafile; -- 来自控制文件
select file#,checkpoint_change# from v$datafile_header; -- 来自数据文件文件头

shutdown immediate;
startup mount;

数据文件last_change# -- A
数据文件checkpoint_change# -- B

数据文件头checkpoint_change# -- C
C与A不同,需要实例恢复。
C与B不同,则需要介质恢复。
需要介质恢复时,决定使用哪个日志文件?比较C与日志文件中的first_change#
select group#, sequence#, first_change# from v$log;

MTTR(实例恢复)
show parameter fast_start_mttr_target;

介质故障
常规备份
多路复用控制文件

多路复用日志文件组
sqlplus / as sysdba;
select group#,member from v$logfile;

alter database add logfile member '/u01/app/oracle/oradata/orcl/redo0102.log' to group 1;
select group#,member from v$logfile;

alter database drop logfile member '/u01/app/oracle/oradata/orcl/redo0102.log';
select group#,member from v$logfile;

备份归档重做日志文件

快速闪回区
强烈建议配置快速闪回区
存储空间与数据文件分开

启动归档模式
archive log list;
shutdown immediate;
starup mount;
alter database archivelog;
alter database open;
mkdir -p /u01/app/oracle/archivelog
alter system set log_archive_dest_1='location=/u01/app/oracle/archivelog';

alter system switch logfile;