当前位置:首页 > 技术知识 > 正文内容

一起来学习Oracle的备份恢复基础吧-1

maynowei9个月前 (09-09)技术知识85


Oracle备份和恢复

MTBF:平均故障间隔时间

MTTR:平均恢复时间

备份恢复概述

数据库故障的类型

user process failure 用户自动处理

instance failure smon自动处理

user errors 通过备份恢复解决

media failure 通过备份和日志恢复

备份恢复分类

逻辑备份恢复-面向对象

传统的导入导出:exp/imp

数据泵的导入导出:expdp/impdp

逻辑备份就是热备数据库对象的某一时刻状态,不能运用在media failure上,逻辑备份的恢复就是还原备份,没有recover的概念。

物理备份与恢复-面向media failure

1. 手工备份与恢复(用户管理的备份恢复)通过OS命令,完成备份还原,然后再使用日志进行恢复。

1. 自动备份恢复(rman或者其它备份软件)

物理备份从方式上可以分为一致性备份(冷备)和非一致性备份(热备);

完整的备份策略应以物理备份为主,逻辑备份为辅(备份一些重要的表)。

闪回技术-面向人为的逻辑错误

一种利用UNDO数据或者闪回日志的快速恢复技术。

完全恢复与不完全恢复

media failure后,需要运用日志进行recover。

1. 完全恢复

利用完整备份或者部分备份,将datafile恢复到failure前的最后一次commit,无数据丢失。

不完全恢复

需要运用完整备份和日志将database恢复到过去某个时间点(或SCN),有数据丢失。

非归档模式运行时必须备份:控制文件和整个数据文件,备份前需要关闭数据库(冷备)。

非归档时,在丢失数据文件后只能执行完整的数据库还原,不能进行恢复。

手工备份与恢复

手工备份和恢复命令

备份和还原都使用OS命令

恢复用sqlplus 命令:recover

备份前的检查操作

查询有关视图:v$datafile(控制文件中的信息)\v$datafile_header\v$controlfile\v$logfile\dba_tablespaces\dba_data_files

1. 检查需要备份的数据文件

select name from v$datafile;

select file_id,file_name,tablespace_name from dba_data_files;

1. 检查要备份的控制文件

select name from v$controlfile;

1. 在线redo日志不需要备份

手工一致性备份(热备份)及热备的监控(v$backup)

对只读的表空间不能做热备份,临时表空间不需要备份,非归档模式下不支持手工热备。

1. 备份前进入backup mode

执行begin backup(在数据文件上生成检查点,写入scn,将来恢复的时候以此scn为起点)

SQL>alter database begin backup; //整库备份

SQL>alter database end backup;

SQL>alter tablespace users begin backup;

SQL>alter tablespace users end backup;

备份期间利用v$backup监控

例:

SQL> select file_id,file_name,tablespace_name from dba_data_files;

SQL>alter tablespace test begin backup;

SQL> select FILE#,CHECKPOINT_CHANGE# from v$datafile_header;

SQL> select * from v$backup;

STATUS是ACTIVE,表示可以备份相应的数据文件,并且其中的数据块DBWN仍然可以刷新。

SQL> alter tablespace test end backup;

如果在end backup之前发生数据库abort,那么可以在下次启动到mount时end backup,从而完成实例恢复。

关于split block

一个oracle block一般包含多个os block,当手工热备时,os的cp单位不是oracle block而是os block,而oracle的DBWR又可能不时的从内存中刷新Oracle block(脏块)到磁盘上,因此OS级的拷贝可能造成一种现象:一个Oracle block是由不同版本组成,如未被DBWR刷新的Header block加上另一部分被刷新的foot block,这样cp出来的Oracle block就是split block。

数据库的一致性是不允许oracle block是split的,Oracle采取的办法是:在backup mode后,如果发现首次DBWR要写脏块,则将该块备刷新之前的镜像数据记录到redo buffer,这样虽然cp后的文件里仍然含有split block,而当需要恢复时,日志会前滚该块的前镜像,保证所有的被恢复的oracle block是一个完整的版本,这就是我们常常发现在热备时日志文件会急剧增大的原因。

dbv检查数据文件是否有坏块

在手工备份前,应该检查datafile是否有坏块,备份完成后对备份也做检查

对某个datafile做坏块检查

[oracle@localhost test]$ dbv file=/opt/oracle/app/oradata/test/test01.dbf feedback=50

相关文章

记录程序第一天挖漏洞的过程(挖漏洞需要学什么语言)

第一个漏洞复现fastjson漏洞说明:在本地这个fastjson会出现问题复现的过程生成一个java文件进行攻击注入的方式javac Exploit.java但是必须编译成.class文件才能执行p...

Linux C++实现多线程同步的四种方式(超级详细)

背景问题:在特定的应用场景下,多线程不进行同步会造成什么问题?通过多线程模拟多窗口售票为例:#include <iostream>#include<pthread.h>#inc...

go语言并发原语RWMutex实现原理及闭坑指南

1.RWMutex常用方法Lock/UnlockRLock/RUnlockRLocker 为读操作返回一个Locker接 口的对象2. RWMutex使用方法 func main() { var c...

大量类加载器创建导致诡异FullGC(类的加载器有什么用)

“ 由 GC 问题带你全面了解 JDK8 Metaspace”01—现象最近接手了一个同事的项目,某一天接口的响应耗时突然增加了很多,由几十ms 增加到了几十秒。首先查看机器上的日志,有调用第三方接口...

见招拆招:破解Oracle数据库密码(oracle数据库如何解锁)

一.概要本文主要目的,希望通过分享解密方法引起相关人士对网络安全的重视。数据库安全绝不单只数据库本身的安全,和数据库所处的整个环境都有密切关系。本文所说的破解oracle9i、oracle10g、or...

Oracle数据库安装 | 步骤详细(oracle数据库怎么安装及配置)

部署环境系统:CentOS 7.1 (Redhat版本也可以)数据库:Oracle 11gR2 1.修改hosts文件1.1 查询主机名和IP地址1.2 修改/etc/hosts文件如下2.挂载操作系...