Oracle 备份与恢复基础 :三思笔记

备份与恢复

A whole database backup is either a consistent backup or an inconsistent backup.

Whether a backup is consistent determines whether you need to apply redo logs after

restoring the backup.

Tablespace Backups

A tablespace backup is a backup of the datafiles that constitute the tablespace. For

example, if tablespace users contains datafiles 2, 3, and 4, then a backup of

tablespace users backs up these three datafiles.

Tablespace backups, whether online or offline, are valid only if the database is

operating in ARCHIVELOG mode. The reason is that redo is required to make the

restored tablespace consistent with the other tablespaces in the database.

Datafile Backups

A datafile backup is a backup of a single datafile. Datafile backups, which are not as

common as tablespace backups, are valid in ARCHIVELOG databases. The only time a

datafile backup is valid for a database in NOARCHIVELOG mode is if:

■ Every datafile in a tablespace is backed up. You cannot restore the database unless

all datafiles are backed up.

■ The datafiles are read only or offline-normal.

such as

compression or incremental backup. You must use RMAN to restore a backup set.

RMAN with Online Backups

Because the database continues writing to the file during an online backup, there is the

possibility of backing up inconsistent data within a block. For example, assume that

either RMAN or an operating system utility reads the block while database writer is in

the middle of updating the block. In this case, RMAN or the copy utility could read the

old data in the top half of the block and the new data in the bottom top half of the

block. The block is a fractured block, meaning that the data in this block is not

consistent.

During an RMAN backup, the Oracle database server reads the datafiles, not an

operating system utility. The server reads each block and determines whether the

block is fractured. If the block is fractured, then Oracle re-reads the block until it gets a

consistent picture of the data.

When you back up an online datafile with an operating system utility (rather than

with RMAN), you must use a different method to handle fractured blocks. You must

first place the files in backup mode with the ALTER TABLESPACE BEGIN BACKUP

statement (to back up an individual tablespace), or the ALTER DATABASE BEGIN

BACKUP statement (to back up the entire database). After an online backup is

completed, you must run the ALTER TABLESPACE ... END BACKUP or ALTER

DATABASE END BACKUP statement to take the tablespace out of backup mode.

1备份:

所谓备份就是冗余,本质是将当前的数据复制一份(或多份)到其他位置

1.1 备份类型

1 物理备份:核心是复制文件,数据文件,日志文件,控制文件,归档文件等oracle数据库启动的相关文件,复制到其他路径或存储设备中

2 逻辑备份:核心是复制数据,按照oracle提供的命令,通过逻辑的方式直接将数据保存到其他位置,包括exp,expdp,dblink+ctas等,

1.2 数据库状态

启动和关闭状态,

1 热备份:db处于启动状态创建的备份,联机备份,这种状态下创建的备份是不一致备份,利用不一致备份进行恢复时,可能需要利用到归档日志和在线重做日志,db必须出具归档状态,archived

2 冷备份:db处于关闭状态时创建的备份,脱机备份,利用冷备份恢复时,如果数据库正常关闭,则不需要进行恢复,否则也需要归档跟redo log才能将db恢复到一个一致性的状态,

处于open read only状态,创建的备份也是冷备份

1.3 备份的状态

1 一致性备份:备份的data file跟control file有相同的scn,即一致性备份,(必须是冷备份)

2 不一致备份:通常db处于open read write或shutdown abort等时都不会是一致性状态,因为备份操作不可能同时完成,data file 随便都是写,scn随时都在变,

热备份肯定是不一致备份,但不一致备份不一定是热备份(shutdown abort)

只有archived模式下的不一致备份才是有效备份

1.4 备份规模

1 完全备份:完成备份,包含data file,redo log,control log,init ora,archived log等

归档模式下

数据库处于正常打开状态下的备份是不一致备份(有效)

Db正常关闭的备份是有效备份

非归档模式

数据库处于正常打开状态下的备份是不一致备份(无效)

Db正常关闭的备份是有效备份

2表空间备份

备份一个或多个tablespace,实质是备份data file,当满足一下2个条件之一才是有效备份

数据库处于归档模式,tablespace处于offline或read only状态

3 备份数据文件

备份一个或多个data file,大多数情况db处于archived模式,或者db处于 open read only

4 控制文件备份

备份control file,控制文件是db 到mount状态的必须条件

5 归档日志文件备份

归档日志保存了数据库曾经做过的操作,数据库处于归档模式或者force logging模式

2 恢复

有有效的备份,才能更好的恢复

2.1 错误类型

1 用户误操作导致的错误

由于用户误操作的执行某些语句,需要撤销某些操作

2 系统进程出现的错误

3由于instance导致错误

实例错误可能导致:提交的事务要修改的数据还未写到数据文件

未提交的事务已经修改了数据文件

对于实例错误,下次在启动实例时,自动尝试进行实例恢复instance recovered

4 存储介质导致的错误

由于硬件问题出现,可能导致db崩溃,data file 等文件破坏,需要进行介质恢复,

2.2恢复类型

1 实例恢复:由oracle自动恢复,通过读取当前的数据文件跟日志文件(不是归档日志)来恢复数据,使数据文件和控制文件恢复到崩溃前的一致性状态

1 缓存恢复:恢复过程中已提交的事务但没写到数据文件,前滚

2 事务恢复:前滚后,把没有提交的事务但是已经修改了数据文件的事务回滚,回滚

2 介质恢复:需要利用到备份来进行恢复,或重新利用日志文件

介质恢复是首先把db恢复到备份的状态,然后利用redo日志把db恢复到最近时间点(或某个时间点),通常提到的介质恢复都是修复数据文件。

2.3 恢复方式

1 完全恢复

将db恢复到最近时间点的恢复方式就是完全恢复,这种方式通常是当磁盘故障导致数据文件或控制文件无法访问时选择的恢复方式(还可以对表空间或数据文件进行完全恢复)

如果对整个数据库做恢复,

Mount数据库

确认所有数据文件均为online状态,

执行恢复操作,

应用所有生成的redologs文件

如果对表空间或数据文件进行完全恢复

Open 数据库

将要恢复的表空间或数据文件设置为offline状态

执行恢复操作

应用所有生成的redologs文件

2 不完全恢复

不完全恢复就是将db恢复到非当前时刻,只利用部分redo跟归档日志,恢复到知道的scn或者指定的时间点的状态,(基于时间点的恢复)

不完全恢复使用于以下情况

介质损坏导致部分日志不可用

用户误删数据,无法逻辑恢复

由于丢失部分归档,无法进行完全恢复

控制文件丢失,只能以备份的控制文件打开数据库

要进行不完全恢复,必须要有适当的备份,并且备份是在恢复之前的时间点创建的,

首先利用备份恢复到备份时的状态,然后利用重做日志在恢复到指定的时间点,最后以

Open resetlogs打开db

由于不完全恢复只利用了部分日志,需要给oracle指定结束标志

基于时间:指定一个时间

基于scn:指定scn号,在oracle中,scn可以转换成时间点,scn更加精确

基于cancel:应用所有能应用的日志,直到用户取消

基于日志序号:指定归档日志文件序号

2.4 恢复操作:

1 db的恢复是指将db恢复到一个一致性的状态,

恢复操作可分为:数据修复和恢复

修复:将要恢复的文件从备份集中读取出来,并保持到指定的路径,

恢复:应用所有重做日志,将db恢复到崩溃前的状态,或者应用部分redo,恢复到指定的时间的状态,

2 Resetlogs操作

在执行完不完全恢复操作或者使用了备份的控制文件进行恢复或者执行了flashback database操作之后,在打开数据库时必须指定resetlogs

必须在执行完不完全恢复后,以resetlogs操作,日志文件序号重置到1

Resetlogs操作:

归档当前的在线日志,然后清空日志,并把日志序号重置为1,(如果在线重做日志文件不存在,则重建)

重置控制文件中关于在线日志文件的元数据

更新数据文件和redo中的resetlogs scn 和重置时间信息,

Oracle 备份与恢复基础的更多相关文章

  1. Oracle数据库基础入门《二》Oracle内存结构

    Oracle数据库基础入门<二>Oracle内存结构 Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Ar ...

  2. 第一章 oracle数据库基础

    第一章   oracle数据库基础 1.oracle简介-->数据库管理系统    1.1:数据库    1.2:全局数据库名    1.3:数据库实例    1.4:表空间    1.5:数据 ...

  3. Oracle数据库基础入门《一》Oracle服务器的构成

    Oracle数据库基础入门<一>Oracle服务器的构成 Oracle 服务器是一个具有高性能和高可靠性面向对象关系型数据库管理系统,也是一 个高效的 SQL 语句执行环境. Oracle ...

  4. Oracle备份与恢复案例

    注:以下内容来自<Oracle备份与恢复案例.doc>文档. Oracle备份与恢复案例 By Piner 一. 理解什么是数据库恢复 当我们使用一个数据库时,总希望数据库的内容是可靠的. ...

  5. Oracle常用基础语法(未完待补和操作)

    这篇博客主要是Oracle常用基础语法, 另外,存储过程和存储函数很重要,这个后期看视频学习,还有DB优化,另外,还有plsql develop和navicat的使用,重点是数据的导入导出: ---- ...

  6. Oracle数据库基础知识

    oracle数据库plsql developer   目录(?)[-] 一     SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...

  7. Oracle 数据库基础——安装

    一.数据库基础知识 1.概念 数据库全称数据库管理系统,简称DBMS,是一种在计算机中,针对数据进行管理.存储.共享的一种技术. 2.分类 数据库的发展过程中,按逻辑模型可分为以下几种: 3.关系型数 ...

  8. Oracle数据库基础

    Oracle基础知识 Oracle的主要特点 1.支持多用户.大事务量的事务处理 2.在保持数据安全性和完整性方面性能的优越 3.支持分布式数据处理.将分布在不同物理位置的数据库用通信网络连接起来,在 ...

  9. 【学习笔记】Y2-1-1 Oracle数据库基础

    Oracle 简介关系型(二维表)数据库 用来存储海量数据在大数据量的并发检索的情况下,性能要高于其他同类数据库产品一般运行环境是Linux和UnixOracle版本中的I(Internet) G(G ...

随机推荐

  1. iBatis.net 第一篇 搭建

    iBatis.net 和 iBatis 是有区别的,一个是在net下使用的,另一个是在java下使用. 要想使用,需要下载相关iBatis.net包 1.下载iBatis.net,在网上有很多下载cs ...

  2. C#将字符转换成utf8编码 GB321编码转换

    public static string get_uft8(string unicodeString) { UTF8Encoding utf8 = new UTF8Encoding(); Byte[] ...

  3. codeforces 705B:Spider Man

    Description Peter Parker wants to play a game with Dr. Octopus. The game is about cycles. Cycle is a ...

  4. redis.h

    [对象] typedef struct redisObject {     unsigned type:4;[REDIS_STRING,REDIS_LIST, HASH, SET, ZSET]     ...

  5. ADO.NET实体框架Entity Framework模型-基于元数据解析

           上一篇简单介绍了EF的XML模型结构,在基于xml解析一文中,主要使用xml查询技术Xpath,XQuery来得到实体模型中相应信息的,由于这种方式在数据库庞大,表关系复杂的情况下,有诸 ...

  6. VSCode设置中文语言显示

    Vscode是一款开源的跨平台编辑器.默认情况下,vscode使用的语言为英文(us),如何将其显示语言修改成中文了? 1)打开vscode工具: 2)使用快捷键组合[Ctrl+Shift+p],在搜 ...

  7. 《领域驱动设计 C# 2008 实现》 - 书摘精要

    (P2) 智能客户反模式被 Eric Evans 定义为“把所有业务逻辑放进用户界面.把系统分解成小函数,作为分离的用户界面实现,并在里面嵌入业务规则.使用关系数据库作为共享的数据仓储.使用现有的自动 ...

  8. memcached使用libevent 和 多线程模式

    一.libevent的使用 首先我们知道,memcached是使用了iblievet作为网络框架的,而iblievet又是单线程模型的基于linux下epoll事件的异步模型.因此,其基本的思想就是 ...

  9. loj #161 子集卷积

    求不相交集合并卷积 sol: 集合并卷积?看我 FWT! 交一发,10 以上的全 T 了 然后经过参考别人代码认真比对后发现我代码里有这么一句话: rep(s, , MAXSTATE) rep(i, ...

  10. [UOJ171][WC2016]挑战NPC

    uoj luogu bzoj sol 你可以列一个表格. 一个框子里放球的数量 0 1 2 3 对"半空框子"数量的贡献 1 1 0 0 把一个框子拆三个点.两两之间连边. 会发现 ...