oracle通过scn来维护数据的一致性,是备份恢复的主要机制,备份恢复离不开scn, scn思想贯穿始终,嗯嗯,开篇就来scn吧...//
oracle内部4个scn,三个实在controlfile里,一个在datafilel里,拿我的小环境查下:
系统检查点scn
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
874834
当一个检查点动作完成后,oracle就把系统检查点的scn存储到控制文件中去。
数据文件检查点scn
SQL> column name format a100
SQL> set pagesize 14
SQL> set linesize 300
SQL> select name,checkpoint_change# from v$datafile;
NAME CHECKPOINT_CHANGE#
---------------------------------------------------------------------------------------------------- ------------------
+DATA/oracl/datafile/system.256.729079823 874834
+DATA/oracl/datafile/sysaux.257.729079825 874834
+DATA/oracl/datafile/undotbs1.258.729079825 874834
+DATA/oracl/datafile/users.259.729079825 874834
当一个检查点动作完成后,oracle也把数据文件检查点scn单独记录到控制文件中。
终止scn
SQL> select name,last_change# from v$datafile;
NAME LAST_CHANGE#
---------------------------------------------------------------------------------------------------- ------------
+DATA/oracl/datafile/system.256.729079823
+DATA/oracl/datafile/sysaux.257.729079825
+DATA/oracl/datafile/undotbs1.258.729079825
+DATA/oracl/datafile/users.259.729079825
联机读写模式下面的所有的数据文件的终止SCN为空或者无限大。
数据文件中的启动scn
SQL> select name,checkpoint_change# from v$datafile_header;
NAME CHECKPOINT_CHANGE#
---------------------------------------------------------------------------------------------------- ------------------
+DATA/oracl/datafile/system.256.729079823 874834
+DATA/oracl/datafile/sysaux.257.729079825 874834
+DATA/oracl/datafile/undotbs1.258.729079825 874834
+DATA/oracl/datafile/users.259.729079825 874834
数据文件的检查点信息写入到每一个数据文件的头部。
再说说4个scn之间的关系吧:
数据库正常运行期间,控制文件中的系统检查点scn、数据文件检查点scn、数据文件头部的启动scn都相同,此时只有控制文件中的终止scn为null状态。
数据库正常关闭期间,系统执行一个checkpoint,将所有位于控制文件中的数据文件终止scn置成与数据文件头部的启动scn一致,数据库安全关闭之后,四个scn应该是相同的。
--PS:通常通过查看这四个scn状态来判断数据库是否正常关闭。
数据库启动的过程:
1、数据文件头部的启动SCN与控制文件中数据文件检查点SCN比较,如果相同,继续。若不同需介质恢复。
2、数据文件头部的启动SCN与控制文件中数据文件终止SCN比较,如果相同,那么表示正常关机,不需要恢复。若不相同此时将需要实例恢复。
3、数据库打开,控制文件中数据文件终止SCN被设置为NULL,数据库被打开,并且正常使用。此时所有数据块都已提交,所有数据库的修改都没有在数据库关闭的过程中丢失。
数据库正常关闭:
SQL> shutdown immediate; -------将终止scn置为与启动scn一致
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 238530560 bytes
Fixed Size 1335724 bytes
Variable Size 159387220 bytes
Database Buffers 75497472 bytes
Redo Buffers 2310144 bytes
Database mounted.
SQL> select checkpoint_change# from v$database
2 ;
CHECKPOINT_CHANGE#
------------------
880843
SQL> select checkpoint_change# from v$datafile;
CHECKPOINT_CHANGE#
------------------
880843
880843
880843
880843
SQL> select last_change# from v$datafile;
LAST_CHANGE#
------------
880843
880843
880843
880843
SQL> select checkpoint_change# from v$datafile_header;
CHECKPOINT_CHANGE#
------------------
880843
880843
880843
880843
比较数据文件头部启动scn与控制文件中数据文件检查点scn
比较数据文件头部启动scn与控制文件中终止scn
SQL> alter database open;
Database altered.
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
880846
SQL> select checkpoint_change# from v$datafile;
CHECKPOINT_CHANGE#
------------------
880846
880846
880846
880846
SQL> select last_change# from v$datafile;
LAST_CHANGE# ------------------把所有数据文件终止scn设为null
------------
SQL> select checkpoint_change# from v$datafile_header;
CHECKPOINT_CHANGE#
------------------
880846
880846
880846
880846
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
880630
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
880634
可以通过如下脚本来观察系统scn的变化速率:获取数据库scn的两种方法:
set serveroutput on
declare
a number;
begin
for i in 1..100 loop
select current_scn into a from v$database;
dbms_output.put_line(a);
end loop;
end;
数据库非正常关闭
数据库开启前比较v$datafile_header.checkpoint_change#v$database.checkpoint_change#
v$datafile_header.checkpoint_change#和v$datafile.last_change#此时启动scn与终止scn不同,那么数据库需要实例恢复。
SQL> alter database open;
Database altered.
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
905596
SQL> select checkpoint_change# from v$datafile;
CHECKPOINT_CHANGE#
------------------
905596
905596
905596
905596
SQL> select last_change# from v$datafile;
LAST_CHANGE#
------------
SQL> select checkpoint_change# from v$datafile_header;
CHECKPOINT_CHANGE#
------------------
905596
905596
905596
905596
此时数据库smon进程做了实例恢复,所谓实例恢复就是指内存和进程,数据库把redo中需要恢复的数据读入内存.其过程分为前滚、数据库开启、回滚三个阶段。
分享到:
相关推荐
数据备份与恢复预案
本书主要介绍了硬盘常见故障判断及处理、硬盘硬故障的处理、硬盘软故障的处理、计算机病毒引起的硬盘故障处理、硬盘数据文件丢失的恢复、硬盘故障的预防、文件系统、系统数据的备份方法和工具、Windows XP的数据备份...
计算机硬盘数据备份和数据恢复技术.pdf
GIS数据备份机制 GIS空间数据、属性数据、配置数据、符号化文档数据、切片数据,以及程序运行环境,是客户方数据应用服务运行的基础,并且在运行过程中存在数据更新和运行环境的配置调整等情况,因此,上述内容的...
第1章 数据备份方案建议综述 1 第2章 项目概述和需求分析 2 2.1 项目概述 2 2.2 需求分析 2 2.2.1 需要备份的系统 2 2.2.2 数据存储和备份现状 3 2.2.3 备份需求分析 3 2.3 导致数据失效的原因分析 5 2.3.1 计算机...
本文主要从需求分析、系统设计和实现的角度来介绍《网络数据备份与恢复系统》的特点和功能等。作者主要针对系统中的功能需求和概要设 计中的总体设计和数据结构设计等问题进行了研究,并提出和实现了相应 的解决...
沃天路数据备份管理方案是一套满足ITIL最佳实践、基于IBM Tivoli Storage Manager (TSM)存储备份管理软件的解决方案,并拓展了其数据备份的范围,最大化满足企业数据备份的深层次需求。该解决方案主要采用了基于SAN...
这个数据备份、还原工具是用vb开发的,非常好的数据备份、还原工具。希望能帮助大家!
监控系统的数据备份 一.前言 组态软件的应用已经拓展到了社会各个领域,每个厂商在监控系统中都预安装了系统软 件和组态软件。实践证明监控系统运行越正常.用户的安全运作和生产活动对监控系统 的依赖性越强,这就...
数据备份专家是一款专为ORACLE数据库管理人员设计的,能够自动完成 ORACLE 数据库逻辑备份操作的软件。它封装了 ORACLE 自带的 EXP 数据导出工具和 IMP 数据导入工具,在设定好定时时间及其它信息后,每天在设定的...
企业数据备份方案企业数据备份方案企业数据备份方案企业数据备份方案企业数据备份方案
随着各单位局域网和互联网络的深入应用,系统内的服务器担负着企业的关键应用,存储...因此,建立可靠的网络数据备份系统,保护关键应用的数据安全是网络建设的重要任务,在发生人为或自然灾难的情况下,保证数据不丢失。
绿环FTP数据备份软件,是一款实用的FTP文件备份软件,支持FTP服务器中所有的在线备份,支持后台自动备份,不会影响你的日常操作绿环FTP数据备份软件特点1、支持所有FTP服务器,可以对各类网站中的FTP服务器进行备份...
数据备份与恢复产品强制认证实施规则:本规则所指的数据备份与恢复产品是指实现和管理信息系统数据的备份和恢复过程的软件或软硬件组合。 适用的产品范围为:具有数据备份与恢复管理功能的产品,不包括仅具有自身...
绿环FTP数据备份软件的特点:1、支持所有FTP服务器,可以对各类网站中的FTP服务器进行备份。2、实现全自动FTP数据备份,轻松备份您的FTP数据。3、有多种备份计划可选,可以实现每月、每周、每天、每小时、每分钟、每...
Think PHP 页面操作 数据备份 恢复
本解决方案将备份作业切分为两个部分:第一部分利用快速的虚拟磁带库设备在VERITAS软件的控制下进行数据备份,在规定的时间内,按照用户要求快速完成将数据备份;第二部分仍然在VERITAS软件控制下,针对已完成备份的...
计算机数据备份记录(表格模板、DOC格式).doc
数据备份局域网数据备份方案实例[整理].pdf
数据备份与数据容灾全解析--数据备份与数据容灾全解析