oracle学习2

零基础学习Oracle(初级篇2)

日期:2015-06-12 12:11 浏览:2086 评论:23
本篇我们学习 Oracle rman 备份 & 恢复方法。

编写者:张东 00290412

2015/6/3

1. 序言

在上篇,我们学习了关键路径上的知识。管用吗?

光说不练,读再多书也只能是台扫描仪。

下面,我们将开启任务式的场景。上篇学习的知识,将作为弓箭射向靶心。

上篇安装的Oracle数据库,将作为本篇描述的实验环境。

2. 备份恢复方法

Oracle 数据库的备份 & 恢复方法主要分为有两种:

1.    逻辑备份 & 恢复 (exp/imp, expdp/impdp

2.    物理备份 & 恢复 rman )

本篇只讲述rman方式。不要问为什么,呵呵。

3. 物理备份

3.1 概述

首先,数据库系统由两部分组成:

1.    数据库软件

2.    数据库内容

本文关心的是数据库内容,主体是数据文件。

因为数据文件的备份时间点不同(有先后顺序,数据不断变化),所以我们需要通过归档日志来保证数据库内容的一致性。

谈到备份,我们需要关心这四个问题:

 

When

What

Where

How Long

含义

备份发起时间

备份什么东西

备份保存到哪儿

备份保存多久

解答

手动

数据库内容

本地硬盘空间

备份文件不会自动删除

需要

No

Yes

Yes

No

备份又分为在线(数据库open状态)、离线(数据库mount状态)两份方式。

 

逻辑

物理

在线

本篇内容

离线

×

3.2 Checklist

1.    确认当前数据库处于open状态。方法见《Oracle初级篇1》第3章。

2.    确认数据文件保存在文件系统上。方法见《Oracle初级篇1》第4章。

3.    确认数据库已经开启了归档模式。方法见《Oracle初级篇1》第5章。

3.3 登录到rman

su - oracle
rman target / 

看见RMAN> 提示符。注意阅读提示信息。

3.4 执行数据文件全备份

RMAN里输入以下命令,执行我们的第一个备份。

注意,一行一行地输入,> 符号及它以前的字符无需输入。

RMAN> run{ 
2> allocate channel ch00 type disk; 
3> backup database; 
4> release channel ch00; 
5> } 

注意阅读屏幕输出信息。它会告诉我们备份保存在哪里了,生成的备份文件名字。

3.5 +归档日志备份

要备份数据文件的同时,也备份归档日志,我们只需要做一点点小的修改。

注意,一行一行地输入,> 符号及它以前的字符无需输入。

RMAN> run{ 
2> allocate channel ch00 type disk; 
3> backup database plus archivelog; 
4> release channel ch00; 
5> } 

注意阅读屏幕输出信息。它会告诉我们备份保存在哪里了,数据文件、归档日志生成的备份文件名字。

3.6 +控制文件

备份了数据文件和归档日志,我们还需要在这它们的备份完成后,备份最新的控制文件。

我们为什么需要备份控制文件呢?因为控制文件保存了数据库的备份(数据文件、归档日志)信息。

为什么要最新的?因为老的备份文件,不会有相对于它来说是将来的备份信息。

注意,一行一行地输入,> 符号及它以前的字符无需输入。

RMAN> run{ 
2> allocate channel ch00 type disk; 
3> backup database plus archivelog; 
4> backup current controlfile; 
5> release channel ch00; 
6> } 

注意阅读屏幕输出信息。它会告诉我们备份保存在哪里了,数据文件、归档日志、控制文件生成的备份文件名字。

3.7 小结

通过一步步地递进学习,大家已经学会备份Oracle数据库。

完整的备份 = 数据库文件 + 归档日志 + 最新控制文件

恢复也是基于完整的备份。

4. 物理恢复

4.1 数据文件丢失

4.1.1 数据文件被删除

当当当!小明不小心删除了数据文件!

谁是小明?别东张西望的,就是你。

请用《Oracle初级篇1》第4章的知识找到数据文件的位置,然后删除所有的数据文件。

如果你删错了文件,有可能英雄十八年后重新来过:)

4.1.2 需要的数据库状态

我们需要复习一下《Oracle初级篇1》第3章,在什么情况下可以进行数据文件的恢复。

我们发现,数据库在mount状态下能够进行数据文件的恢复。

所以,我们的操作流程是:

1.    检查数据库状态;

2.    把数据库切换到shutdown状态;

3.    把数据从shutdown状态切换到mount状态。

方法在《Oracle初级篇1》第3章有介绍,这里不赘述了。

补充的是,如果数据库无法正常关闭(数据文件丢失),强制关闭数据库的SQL命令是shutdown abort.

4.1.3 恢复数据文件

现在数据库已经在mount状态了。

我们只需要执行如下的rman命令,就可以恢复数据库了。

注意,一行一行地输入,> 符号及它以前的字符无需输入。

RMAN> run{ 
2> allocate channel ch00 type disk; 
3> restore database; 
4> recover database; 
5> release channel ch00; 
6> } 

注意阅读提示信息。

恢复完成后,检查被删除的数据文件,是否被恢复。

数据库恢复完成后,把数据库从mount状态切换到open状态。

4.2 +控制文件丢失

4.2.1 控制文件 & 数据文件被删除

当当当!小明又不小心删除了控制文件和数据文件!

这时,你很自觉地运用《Oracle初级篇1》第4章的知识找到控制文件和数据文件的位置,然后把它们给删了。

4.2.2 需要的数据库状态

我们需要复习一下《Oracle初级篇1》第3章,在什么情况下可以进行控制文件的恢复。

我们发现,数据库在nomount状态下能够进行控制文件的恢复。

所以,我们的操作流程是:

1.    检查数据库状态;

2.    把数据库切换到shutdown状态;

3.    把数据从shutdown状态切换到nomount状态。

方法在《Oracle初级篇1》第3章有介绍,这里不赘述了。

补充的是,如果数据库无法正常关闭(控制文件、数据文件丢失),强制关闭数据库的SQL命令是shutdown abort.

你没看错,大部分内容与上一节相似。

4.2.3 恢复控制文件

请打气精神来,关键点、也是大干货来了!

以下是恢复控制文件的模板。注意,是模板!

run{ 
allocate channel ch00 type disk; 
restore controlfile from '???'; 
release channel ch00; 
} 

看到???个问号没有,这个就是我们需要填入的内容。

在第2章,我反复告诉大家,注意阅读备份的屏幕输出信息。它会告诉我们备份保存在哪里了,数据文件、归档日志、控制文件生成的备份文件名字。

你没看,或者没看懂?但至少你应该知道备份目录吧。

没关系的,我们可以按以下原则进行查找:

1.    控制文件的备份文件不大,一般是最小的文件,一般不超过1G

2.    我们要的控制文件是最新的,所以它的生成日期最晚

我们用备份文件的全路径来代替???

譬如,在我的测试环境里就写成

run{ 
allocate channel ch00 type disk; 
restore controlfile from '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/0gpo886i_1_1'; 
release channel ch00; 
} 

报错,没关系,我们再运用上述原则尝试另外1个备份文件。

4.2.4 恢复数据文件

控制文件恢复完成,把数据库从nomount状态切换到mount状态。

再然后,按4.1.3的流程恢复数据文件。

这里需要注意的是:

数据库恢复完成后,用alter database open resetlogs来代替alter database open,把数据库从mount状态切换到open状态

4.3 小结

控制文件 + 数据文件的恢复,这就是一个迁移数据库主机(v2v, 环境不变)流程中,数据库迁移的主要步骤。

如果单独的控制文件丢失,也可以用4.1.3的流程。唯一的不同,是要去掉这一行。

3> restore database; 

5. 下一步行动

恭喜你!你独立完成了一个任务,学会了一个Oracle技能。稍加磨练,就可以真刀真枪上场交付了。

在本篇,我们运用了上一篇的知识,学习到了技能。

下一篇,我们将接受实战的检验。


谢谢大家的耐心阅读。你学习中的疑问和困惑,将是我改进的方向。如果我有幸能帮到你一点点,请赞一下,谢谢。你的鼓励,是我前进的动力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值