一oracle热备份介绍,oracle联机热备份的原理(1)_无用的李的博客-程序员秘密

技术标签: 一oracle热备份介绍  

要求归档模式

SQL>; archive log list;

Database log mode Archive Mode

Automatic archival Enabled

Archive destination USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 14

Next log sequence to archive 16

Current log sequence 16

-------------

先看用户管理的热备份

看看下面这个关键的操作,将备份的内容置于backup模式,用户管理的联机热备份必需的操作,不然copy备份的数据文件不能用来恢复,即使用某些放时恢复了也会丢数据

SQL>; alter tablespace users begin backup;

Tablespace altered.

SQL>; list

1 select d.file_name filename,d.tablespace_name ts_name,b.status

2 from dba_data_files d,v$backup b

3* where d.file_id=b.file#

SQL>; /

FILENAME TS_NAME STATUS

---------------------------------------- ---------- ------------------

/u02/oradata/sales/system01.dbf SYSTEM NOT ACTIVE

/u02/oradata/sales/undotbs01.dbf UNDOTBS1 NOT ACTIVE

/u02/oradata/sales/sysaux01.dbf SYSAUX NOT ACTIVE

/u02/oradata/sales/users01.dbf USERS ACTIVE

/u02/oradata/sales/example01.dbf EXAMPLE NOT ACTIVE

/u02/oradata/sales/perfstat.dbf PERFSTAT NOT ACTIVE

USERS表空间现在处于backup模式,究竟这时候怎么了?

在我们alter tablespace users begin backup 的时候是锁定了users表空间对应的数据文件头的change scn。

首先考虑一下数据库怎么用日志文件做恢复:查找不一致的数据文件(根据文件头中旧的scn)

如果锁定了文件头,这个文件头中的scn就不会改变(当然了数据块还是会变化的,还可以做读写)。 然后就会应用这个scn到现在的日志。

那我锁定了scn,不管你后边怎么修改,总之做恢复的时候是应用锁定的时候的scn一直到现在的日志(完全恢复的话)

举个例子:

a,b两个数据文件,把a置于备份模式,b正常

这时候两个change scn都是100,然后开始备份

这期间有数据库的修改,备份完成的时候,Scn变成了200。但是由于a的备份模式,所以a的文件头中记录的scn还是100,b是200。

某个时间,假设scn 500

这时候a丢失

copy回a的备份,然后recover,完全恢复的话数据库就应用100—500这段的日志,自然也就不会丢失数据了。

因为不管在我copy备份的过程中你做什么操作,总之都在锁定的时change scn之后,所以应用的日志就不会有遗漏了。

这时候应该能理解为什么要数据库处于archived模式了

看看数据文件头的change scn

SQL>;select NAME,TABLESPACE_NAME,STATUS,CHECKPOINT_CHANGE# from v$datafile_header;

NAME TABLESPACE STATUS CHECKPOINT_CHANGE#

-------------------------------- ---------- -------------- ------------------

/u02/oradata/sales/system01.dbf SYSTEM ONLINE 545926

/u02/oradata/sales/undotbs01.dbf UNDOTBS1 ONLINE 545926

/u02/oradata/sales/sysaux01.dbf SYSAUX ONLINE 545926

/u02/oradata/sales/users01.dbf USERS ONLINE 545498

/u02/oradata/sales/example01.dbf EXAMPLE ONLINE 545926

/u02/oradata/sales/perfstat.dbf PERFSTAT ONLINE 545926

6 rows selected.

显然,在将users表空间置于backup状态的时候,相应的datafile的文件头的scn就不会再发生改变,发生检查点也不会改变。

SQL>; alter system checkpoint;

System altered.

SQL>; select NAME,TABLESPACE_NAME,STATUS,CHECKPOINT_CHANGE# from v$datafile_header;

NAME TABLESPACE STATUS CHECKPOINT_CHANGE#

-------------------------------- ---------- -------------- ------------------

/u02/oradata/sales/system01.dbf SYSTEM ONLINE 546196

/u02/oradata/sales/undotbs01.dbf UNDOTBS1 ONLINE 546196

/u02/oradata/sales/sysaux01.dbf SYSAUX ONLINE 546196

/u02/oradata/sales/users01.dbf USERS ONLINE 545498

/u02/oradata/sales/example01.dbf EXAMPLE ONLINE 546196

/u02/oradata/sales/perfstat.dbf PERFSTAT ONLINE 546196

6 rows selected.

下面end backup,看看scn

SQL>; alter tablespace users end backup;

Tablespace altered.

SQL>; alter system checkpoint;

System altered.

SQL>;select NAME,TABLESPACE_NAME,STATUS,CHECKPOINT_CHANGE# from v$datafile_header;

NAME TABLESPACE STATUS CHECKPOINT_CHANGE#

-------------------------------- ---------- -------------- ------------------

/u02/oradata/sales/system01.dbf SYSTEM ONLINE 546467

/u02/oradata/sales/undotbs01.dbf UNDOTBS1 ONLINE 546467

/u02/oradata/sales/sysaux01.dbf SYSAUX ONLINE 546467

/u02/oradata/sales/users01.dbf USERS ONLINE 546467

/u02/oradata/sales/example01.dbf EXAMPLE ONLINE 546467

/u02/oradata/sales/perfstat.dbf PERFSTAT ONLINE 546467

6 rows selected.

------------------

再说说rman备份

个人认为理解了用户管理的热备份,rman就已经理解了一大半了

rman 备份是针对块一级的,支持增量备份,稍后说怎么做的增量备份

Rman备份并不需要将数据库或者表空间置于backup状态,但是它会把scn记录在catalog中对应你的backupset

准备在恢复的时候来使用

对users表空间做一个完全备份

$ rman target sys/oracle nocatalog

RMAN>; run {

2>; allocate channel d1 type disk;

3>; backup

4>; format='/u03/oraclebk/%d_%N_%s.bk' tablespace users;

5>; release channel d1;

6>; }

看一下备份集里都有什么,注意看Ckp SCN 546792,

RMAN>; list backup of tablespace users;

List of Backup Sets

===================

BS Key Type LV Size Device Type Elapsed Time Completion Time

------- ---- -- ---------- ----------- ------------ ---------------

3 Full 1M DISK 00:00:02 31-MAR-05

BP Key: 3 Status: AVAILABLE Compressed: NO Tag: TAG20050331T153729

Piece Name: /u03/oraclebk/SALES_USERS_4.bk

List of Datafiles in backup set 3

File LV Type Ckp SCN Ckp Time Name

---- -- ---- ---------- --------- ----

4 Full 546792 31-MAR-05 /u02/oradata/sales/users01.dbf

恢复的时候应用546792开始到现在的归档日志和重做日志.

---------------

rman的增量备份的基本原理

其实原理很简单,主要就是弄明白怎么样在做增量备份时确定某个数据块需要备份,哪个不需要

rman在做1级备份的时候怎么来确定0级备份之后都有哪些数据块做了修改呢?看下面一段

Each data block in a datafile contains a system change number (SCN), which is the

SCN at which the most recent change was made to the block. During an incremental

backup, RMAN reads the SCN of each data block in the input file and compares it to

the checkpoint SCN of the parent incremental backup. If the SCN in the input data

block is greater than or equal to the checkpoint SCN of the parent, then RMAN copies

the block.

原来block里边也有一个change scn

也就是说在做level 1级备份的时候,需要扫描所有的数据块并且用块中记录修改的SCN跟level 0备份时的SCN做比较(备份记录中的Ckp SCN),来确定这个块是否需要备份。

所以扫描整个数据文件是不可避免的 !

这是传统的rman做增量备份

在10g中rman做增量备份不再需要扫描整个数据文件了

10g引入的新特性 block change tracking:

Block change tracking进程记录自从上一次备份以来数据块的变化,并把这些信息记录在跟踪文件中。RMAN使用这个文件判断增量备份中需要备份的变更数据。这极大的促进了备份性能,RMAN可以不再扫描整个文件以查找变更数据。

RMAN's change tracking feature for incremental backups improves incremental

backup performance by recording changed blocks in each datafile in a change tracking

file. If change tracking is enabled, RMAN uses the change tracking file to identify

changed blocks for incremental backup, thus avoiding the need to scan every block in

the datafile.

估计是使用的位图文件做的记录![@[email protected]]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/18921899/viewspace-1017260/,如需转载,请注明出处,否则将追究法律责任。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42506152/article/details/116540191

智能推荐

iOS应用程序内购/内付费(一)_Lu_Ca的博客-程序员秘密

很久之前就想出一篇IOS内付费的教程,但是一查网上的教程实在太多了,有的写得真的蛮不错的,就心想算了,于是就保存在草稿箱了。至于为什么写完它呢!真是说来话长,最近公司有个项目经理跑来问我有关苹果内付费相关的细节,跟他聊了半天,从项目对接苹果官方支付接口聊到了如何查看App收益,最后终于使他有了一些眉目,但是悲催的是还要我继续去跟他们项目的程序员讲解(真是疯了),所以我就决定给他们项目写一个内购的文

三年java经验,如何跳槽拿下阿里、美团、快手、达达等多家大厂(经验分享)_3年程序员跳槽_小熊与小兔的博客-程序员秘密

前言楼主211本硕毕业,之后校招去了小米,在小米待了三年,在小米成长了很多。一直也挺想去外面看看,所以决定跳槽,先后面了大大小小公司,也拿到了阿里,快手,美团,达达,得物等公司的offer,面试大部分都是能过的,可能是因为准备的比较好吧。所以这里给大家分享下自己的经验,也给自己做个归档,希望能给正在准备跳槽,找工作的朋友一点帮助。楼主最后是去了快手,因为快手给的福利我决定最好,住房补贴,下午茶,包三餐,加班双倍工资等等。面试过程大厂的流程基本上都是一样的,大概流程都是找人或者自己投递之后

图论--最小生成树--Prim算法(带边输出)模板_风骨散人Chiam的博客-程序员秘密

#include <bits/stdc++.h>using namespace std;const int INF = 0x3f3f3f3f;const int maxn = 1005;bool vis[maxn];int cost[maxn][maxn], lowc[maxn];vector<int> demo;int prim(int cost[][max...

java过剩_2020年程序员是否过剩?_weixin_39978749的博客-程序员秘密

你一定经常去便利店,结账台用的收银软件,手机里用的支付APP,电脑上网浏览的网站,用的杀毒软件,你使用的浏览器,这些都是程序员开发出来的Java过剩了吗?学Java好还是学Python好?就学习强度来说,Python相对于Java来说更加简单易懂,学习起来也非常容易;而从应用范围来看,Java的应用虽然比较广泛,但随着近两年来人工智能、大数据、云zd计算的兴起,Python的应用领域正在逐渐扩大,...

纯java手动实现随即撒点模拟kmeans聚类算法_诸葛浪的博客-程序员秘密

用纯java实现一个随机生成点的k-means聚类算法k均值聚类算法的思想很简单,就是给定一个数据点集合和需要的聚类数目k,k由用户指定,根据距离函数反复把数据分入k个聚类中。我用java简单实现了二维向量在平面随即撒点,之后随机选两个点作为两个聚类的中心,根据欧氏距离的判断哪些点属于哪些类。之后将每个类分别计算几何中心,随后将全体向量重新归类,反复进行多次直到两个中心点不在移动,这两个聚类就完成了。随后将两个聚类绘制成散点图表示出来。不过存在几个问题:随机点生成在整个平面,数据本身不存在聚类的特

牛顿迭代法及其应用_pursue_my_life的博客-程序员秘密

一. 概述五次及以上多项式方程没有根式解(就是没有像二次方程那样的万能公式),这个是被伽罗瓦用群论做出的最著名的结论。 那么这样的方程该如何求根呢???牛顿于 1736 年公开提出了 牛顿迭代法来解决这个问题.其核心思想 是 “逼近”.二. 几何意义我们知道,求一个方程的根,等同于求一个方程与x轴的交点的横坐标.如何求交点的横坐标呢???根据上图我们可以观察到:从 x0...

随便推点

CSS3 会替代 SCSS 吗?_程序员黑叔的博客-程序员秘密

原文作者:Viduni Wickramarachchi原文地址:Will SCSS be replaced by CSS3?译者:霜羽 Hoarfroster当谈及设置网页样式的时候,我们...

由浅入深探究mysql索引结构原理、性能分析与优化_iteye_11790的博客-程序员秘密

写的非常棒的一篇讲mysql索引方面的文章。原文地址:http://www.phpben.com/?post=74摘要:第一部分:基础知识第二部分:MYISAM和INNODB索引结构1、简单介绍B-tree B+ tree树2、MyisAM索引结构3、Annode索引结构4、MyisAM索引与InnoDB索引相比较第三部分:MY...

Ncurses学习经历(七) 键盘管理_ZalGGboy的博客-程序员秘密

1.基础知识    每一个GUI(图形用户界面)都有强大的用户交互界面。一个curses 程序应该对用户的输入(仅通过键盘和鼠标)及时的做出反应。那就让我们从处理键盘开始。就像前面章节中的例子那样,很容易就能取得用户的输入。一个最简单的方法是使用getch()函数。如果你喜欢处理单个按键,而不是处理一行的话(经常以回车键作为一行结束标志),你应该在读取按键之前激活cbreak 模式。如果要读取功能...

python制作图形化界面_Python制作一个仿QQ办公版的图形登录界面_weixin_39791446的博客-程序员秘密

最近,QQ的办公版本――TIM进行了一次更新升级。本次更新升级大幅修改了界面的样式,看起来更加的清爽、简洁和高效了。这种界面州的先生还是比较喜欢的,没有QQ那么花里胡哨,也比微信那些残缺的功能更加丰富。并且这次的登录界面还新增了微信登录的选项,看来 TIM 还打算从微信那边争取一部分用户过来。闲话少说,进入正题。州的先生看到这个出自大厂的图形界面程序,不由得想用 Python 的图形界面模块来实现...

协同过滤算法笔记_chenbo_ability的博客-程序员秘密

基于邻域的算法是推荐系统中最基本的算法,该算法不仅在学术界得到了深入研究,而且在业界得到了广泛应用。基于邻域的算法分为两大类,一类是基于用户的协同过滤算法,另一类是基于物品的协同过滤算法,本文将介绍第一种协同过滤的算法——基于用户的协同过滤

CentOS7.5、7.6安装MySQL5.7.31完整教程+避坑指南(tar.gz方式)附开机启动_码码虎虎的做个码农的博客-程序员秘密

本文主要大体方向参见下边两篇文章,经由参见下边文章加上自己亲测的经历融会贯通而来:linux 下安装mysql 5.7.31 (实战记录)centos7.5 安装mysql5.7(tar.gz方式)前言本文开始时不包含下载过程,只有安装和配置;下载过程参见同文件夹下载文档正文开始上传解压 上传随便用个sftp工具,在这里就不过多介绍了(我这里用的是XFtp)#1.上传随便用个sftp工具,将mysql-5.7.26-linux-glibc2.12-x...

推荐文章

热门文章

相关标签