备份恢复概念

如何判断数据库的一致性

在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;

OCA读书笔记(14) - 备份和恢复基本概念的更多相关文章

  1. OCA读书笔记(16) - 执行数据库恢复

    16. Performing Database Recovery 确定执行恢复的必要性访问不同接口(EM以及命令行)描述和使用可用选项,如RMAN和Data Recovery Advisor执行恢复- ...

  2. 涂抹mysql笔记-数据备份和恢复

    <>物理备份和逻辑备份<>联机备份和脱机备份<>本地备份和远程备份<>完整备份和增量备份<>完整恢复和增量恢复<>复制表相关文件 ...

  3. 进入保护模式(二)——《x86汇编语言:从实模式到保护模式》读书笔记14

    首先来段题外话:之前我发现我贴出的代码都没有行号,给讲解带来不便.所以从现在起,我要给代码加上行号.我写博客用的这个插入代码的插件,确实不支持自动插入行号.我真的没有找到什么好方法,无奈之下,只能按照 ...

  4. Oracle DB 备份和恢复的概念

    • 确定Oracle DB 中可能发生的故障类型 • 说明优化实例恢复的方法 • 说明检查点.重做日志文件和归档日志文件的重要性 • 配置快速恢复区 • 配置ARCHIVELOG模式   部分工作内容 ...

  5. OCA读书笔记(15) - 执行数据库备份

    物理备份 -- 数据文件,控制文件,日志文件,参数文件 数据库备份 冷备 -- 归档和非归档均可以 什么时候必须用冷备?1. 数据库的模式为非归档的2. 用于现场保护 冷备的过程:1. 首先查看备份文 ...

  6. OCA读书笔记(1) - 浏览Oracle数据库架构

    Objectives: List the major architectural components of Oracle DatabaseExplain the memory structuresD ...

  7. OCP读书笔记(3) - 使用RMAN恢复目录

    创建恢复目录 在hndx上创建恢复目录:[oracle@oracle admin]$ export ORACLE_SID=hndx[oracle@oracle admin]$ sqlplus / as ...

  8. OCA读书笔记(18) - 使用Support工具

    调查和解决问题 问题:数据库中的任一严重的错误定义为一个问题,一般来说,这些错误包括大家熟悉的ORA-600错误和ORA-04031(共享池超出)错误,涉及数据库问题的所有元数据都存储在ADR中,每个 ...

  9. 『TCP/IP详解——卷一:协议』读书笔记——14

    2013-08-25 11:32:06 第5章 RARP:逆地址解析协议 5.1 引言 具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址.但是无盘机,如X终端或无盘工作站,则需要采用其 ...

随机推荐

  1. MVC:Controller向View传值方式总结

    Controller向View传值方式总结 总结发现ASP.NET MVC中Controller向View传值的方式共有6种,分别是: ViewBag ViewData TempData 向普通Vie ...

  2. Eclipse用法和技巧十八:减少不必要的输入

    写代码的时候,很多人都有一个原则,尽量上输入.依靠IDE自动生成的代码,一般可读性,排版什么的都还是不错的,最主要的一般不会有什么低级错误.今天介绍几个在eclipse环境中,常用的依靠eclipse ...

  3. premake在Ubuntu和GCC环境下创建简单的C++工程

    由于premake基于lua脚本,为了方便编辑lua脚本,我在emacs24中利用package system安装了lua-mode. 然后创建config.lua文件,填入下面这段,主要来自:htt ...

  4. Swift - 判断设备方向(或监听设备方向的改变)

    通过UIDevice.currentDevice()来获取设备,可以取得设备当前的方向. 同时,我们可以添加一个通知来监听设备方向的变化,这样在开发中可以对不同的方向定制不同的排版布局界面. 下面通过 ...

  5. AngularJS之WebAPi上传

    AngularJS之WebAPi上传(十)   前言 前面一系列我们纯粹是讲AngularJS,在讲一门知识时我们应该结合之前所学综合起来来做一个小的例子,前面我们讲了在MVC中上传文件的例子,在本节 ...

  6. 深入浅出Hadoop实战开发(HDFS实战图片、MapReduce、HBase实战微博、Hive应用)

    Hadoop是什么,为什么要学习Hadoop?     Hadoop是一个分布式系统基础架构,由Apache基金会开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力高速运 ...

  7. 基于visual Studio2013解决C语言竞赛题之1071打印工资

        题目 解决代码及点评 /************************************************************************/ /* ...

  8. 程序实现LayoutAnimationController

    在res/anim下新建anim_set.xml: <?xml version="1.0" encoding="utf-8"?> <set x ...

  9. asp.net笔试题

    1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以访问. protected : 保护成 ...

  10. Effective C++_笔记_条款02_尽量以const、enum、inline替换#define

    (整理自Effctive C++,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 这个条款或许改为“宁可以编译器替换预处理器”比较好,因为或许#d ...