Oracle数据库的备份与恢复还原笔记

先介绍一下rman
RMAN(Recovery Manager)是一种用于备份(backup)、还原(restore)和恢复(recover)数据库的 Oracle 工具。RMAN只能用于ORACLE8或更高的版本中。它能够备份整个数据库或数据库部件,如表空间、数据文件、控制文件、归档文件以及Spfile参数文件。RMAN也允许您进行增量数据块级别的备份,增量RMAN备份是时间和空间有效的,因为他们只备份自上次备份以来有变化的那些数据块。而且,通过RMAN提供的接口,第三方的备份与恢复软件如veritas将提供更强大的备份与恢复的管理功能。通过RMAN,也提供了其它更多功能,如数据库的克隆、采用RMAN建立备用数据库、利用RMAN备份与移动裸设备(RAW)上的文件等工作将变得更方便简单。9i的RMAN通过增强的自动配置与管理功能,以及特有的块级别的恢复,将使备份与恢复工作变得更加快捷与完美。

这是来自百度百科给我的介绍

接下来我们直接开始干!!!!

第一步:首先介绍一下先进入Rman

1.本地连接方式

rman target /

2.远程连接方式

rman target sys/oracle@orcl

第二步:关于rman的一些指令

这句sql的意思就是对单实例数据库或RAC中的当前实例执行日志切换。

SQL ‘ALTER SYSTEM SWITCH LOGFILE’;

建议参考更多资料了解:下面是一个有关链接

http://www.itpub.net/thread-287031-1-1.html

显示rman的默认配置

SHOW ALL;

#default 表示该条配置仍然是初始的默认配置。

如果我们想把某条更改过的配置再置为初始应该怎么办呢

我们可以使用这个命令

configure ... clear;

CONFIGURE RETENTION POLICY CLEAR;

第三步:看一下备份的配置

1、CONFIGURE RETENTION POLICY 配置备份保留策略

两种保留策略:

基于时间:

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF n DAYS;

基于冗余数量:

CONFIGURE RETENTION POLICY TO REDUNDANCY n;

也可以取消备份保留策略:

CONFIGURE RETENTION POLICY TO NONE;

2、CONFIGURE BACKUP OPTIMIZATION 配置备份优化

如果优化设置打开,将对备份的数据文件、归档日志或备份集运行一个优化算法。

备份优化,包括OFF 和ON 两个状态

打开备份优化:

CONFIGURE BACKUP OPTIMIZATION ON;

关闭备份优化:

CONFIGURE BACKUP OPTIMIZATION OFF;

3、CONFIGURE DEFAULT DEVICE TYPE 配置IO 设备类型

RMAN 支持的 IO 设备类型有两种:磁盘(DISK)和磁带(SBT),默认情况下为磁盘。
使用磁盘设备:

CONFIGURE DEFAULT DEVICE TYPE TO DISK;

使用磁带设置:

CONFIGURE DEFAULT DEVICE TYPE TO SBT;

在这里需要注意的一点是:如果IO 设备发生变化,相关配置项也需要修改。例如:

RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 2; 

4、CONFIGURE CONTROLFILE AUTOBACKUP 配置控制文件自动备份

是否自动备份,包含两个状态:OFF 和ON
打开自动备份

CONFIGURE CONTROLFILE AUTOBACKUP ON;

禁止自动备份

CONFIGURE CONTROLFILE AUTOBACKUP OFF;

同时可以通过如下配置指定备份的控制格式,路径。例如:

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'E:/backup/%F';

在备份期间,将产生一个控制文件的快照,用于控制文件的读一致性,这个快照可
以通过如下配置:

`CONFIGURE SNAPSHOT CONTROLFILE NAME TO

'E:/BACKUP/ZTEST.ORA';`

5、CONFIGURE DEVICE TYPE 设置并行备份
RMAN 支持并行备份与恢复,也可以在配置中指定默认的并行程度。例如:

CONFIGURE DEVICE TYPE DISK PARALLELISM 2;

指定在以后的备份与恢复中,将采用并行度为2,同时开启2个通道进行备份与恢复,当然也可以在run 中指定通道来决定备份与恢复的并行程度。
默认情况下,自动分配通道的并行度为1,如果你通过设置PARALLELISM 设置了

并行通道为2,那么在run 块中,如果你没有单独通过ALLOCATE CHANNEL 命令指定通道,它会默认使用2 条并行通道,如果你在run 命令块中指定了数个ALLOCATE CHANNEL,那么rman 在执行备份命令时会以你设置的channel 为准,而不管configure中配置了多少个并行通道。

需要注意的一点是,在backup 命令中有一个 FILESPERSET 参数该参数是指
rman建立的每个备份集中所能包含的备份片段(即磁盘文件)的最大数,该参数默认值为64,如果在执行backup 命令时没有指定该参数值,那么rman 会仅使用第一个通道来执行备份,其它通道将处于空闲状态。filesperset 值不要小于你设定的通道数。

6、CONFIGURE DATAFILE BACKUP COPIES 设置备份文件冗余度

7、CONFIGURE MAXSETSIZE 配置备份集的最大尺寸
该配置限制通道上备份集的最大尺寸。单位支持bytes,K,M,G。默认值是unlimited。

RMAN> show channel; // 通道分配 RMAN> show device type; // IO 设备类型 RMAN> show retention policy; // 保存策略 RMAN> show datafile backup copies; // 多个备份的拷贝数目 RMAN> show maxsetsize; // 备份集大小的最大值 RMAN> show exclude; // 不必备份的表空间 RMAN> show backup optimization; // 备份的优化 

第四步:备份信息的查看

1.列出备份信息

列出数据库中所有文件的备份信息:

RMAN>LIST BACKUP OF DATABASE;

列出指定表空间的备份信息:

RMAN>LIST COPY OF TABLESPACE 'SYSTEM';

二.删除备份信息

1.删除陈旧备份

当使用 RMAN 执行备份操作时,RMAN 会根据备份冗余策略确定陈旧备份。

RMAN> delete obsolete;

2.删除 EXPIRED 备份

执行 crosscheck 命令核对备份集,如果备份集丢失或者损坏,那么会将该备份集标记

为 EXPIRED 状态。为了删除相应的备份记录,可以执行 delete expired backup 命令。

RMAN> delete expired backup;

3.删除 EXPIRED 副本

RMAN> delete expired copy;

4.删除特定备份集

RMAN> delete backupset 19;

5.删除特定备份片

RMAN> delete backuppiece 'd:\backup\DEMO_19.bak';

6.删除所有备份集

RMAN> delete backup;

7.删除特定映像副本

RMAN> delete datafilecopy 'd:\backup\DEMO_19.bak';

8.删除所有映像副本

RMAN> delete copy;

9.在备份后删除输入对象

RMAN> delete archivelog all delete input;

RMAN> delete backupset 22 format = ''E:\backup\%u.bak'' delete input; 

rman简单的一些操作就到这里吧

下面我们进行一个实验操作系统:WINDOWS 2007

ORACLE版本:10G

ORACLE_SID:ZXTEST

首先我进入数据库管理员最高的权限

`SQLPLUS /NOLOG

CONNECT / AS SYSDBA`

我的目标数据库

ZXTEST

第一步准备工作

找到我们的数据库表空间TABLESPACE所在位置

select * from dba_data_files;

创建表空间

`CREATE TABLESPACE demo

DATAFILE 'C:\app\admin\oradata\ZXTEST\DEMO.DBF'

SIZE 20M AUTOEXTEND ON NEXT 20M

MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL

SEGMENT SPACE MANAGEMENT AUTO;`

创建用户

CREATE USER zhb IDENTIFIED BY zhbzhb** **DEFAULT TABLESPACE DEMO** **TEMPORARY TABLESPACE TEMP** **QUOTA UNLIMITED ON DEMO;

给用户授权

`GRANT CONNECT,DBA,RESOURCE,EXP_FULL_DATABASE,IMP_FULL_DATABASE
TO zhb WITH ADMIN OPTION;

GRANT CREATE ANY INDEX,CREATE ANY TABLE,DELETE ANY TABLE,
CREATE SESSION,CREATE TABLE,CREATE VIEW,UNDER ANY TABLE,
UNLIMITED TABLESPACE TO zhb WITH ADMIN OPTION;`

我们再创建一个Rman (基于catalog)

把我们的备份数据放这里

创建表空间

CREATE TABLESPACE space_for_backup DATAFILE 'C:\app\admin\oradata\ZXTEST\space_for_backup.DBF' SIZE 50M;

创建用户

CREATE USER rman IDENTIFIED BY rman TEMPORARY TABLESPACE TEMP DEFAULT TABLESPACE space_for_backup QUOTA UNLIMITED ON space_for_backup;

给用户授权

GRANT CONNECT,RESOURCE,RECOVERY_CATALOG_OWNER TO rman;

第二步开始玩起来---备份阶段

创建恢复资料数

登录到恢复资料数据库

RMAN>connect catalog rman/rman;

创建恢复资料 (如果没有这个,你注册目标数据库的时候一定会报错的)

RMAN>CREATE CATALOG TABLESPACE space_for_backup;

注册目标数据库

知道怎么进入rman的把上面已经说过了

`RMAN>connect catalog rman/rman;

RMAN>connect target /;

RMAN>register database;注册目标数据库

RMAN>report schema;查看注册是否成功
`

注册目标数据库

查看注册是否成功

开始备份实例

-----全库备份

注意这里C盘指定的文件夹需要提前创建好不然会找不到的
`
RMAN>connect catalog rman/rman;

RMAN>connect target /;

RMAN>backup database format 'c:\backup\db0_%s_%p_%t';`

-----备份表空间

`RMAN>connect catalog rman/rman;

RMAN>connect target /;

RMAN> backup tablespace demo format 'c:\backup\exoa_%s_%p_%t';`

-----备份归档日志

RMAN> backup archivelog all format 'c:\backup\archive_%U';

-----备份控制文件

`RMAN>connect catalog rman/rman;

RMAN>connect target /;

RMAN> backup current controlfile format 'c:\backup\controlfile_%s_%p_%t';`

-----备份参数文件SPFILE
`RMAN>connect catalog rman/rman;

RMAN>connect target /;

RMAN> backup spfile format 'c:\backup\spfile_%s_%p_%t';`

好了该备份的基本都已经备份好了,接下来就是要恢复了

恢复实例

恢复数据库(可以将数据库文件全部删除,模拟数据库损坏现象)

SQL> connect / as sysdba;

已连接到空闲例程。

startup mount;

ORACLE 例程已经启动。

RMAN> connect catalog rman/rman;

还原数据库

connect target /;

恢复数据库

recover database;

数据库已更改。

alter database open;

恢复表空间(可以将表空间文件文件删除,模拟表空间损坏现象) 这些刚才我们都做了备份

已连接到空闲例程。

connect / as sysdba

例程已经启动。

startup

`connect catalog rman/rman;

connect target /;`

`run

{

restore tablespace demo;

switch datafile all;

recover tablespace demo;

}`

alter tablespace exoa online;

数据库已更改。

alter database open;

表空间已更改

alter tablespace exoa online;

posted @ 2020-06-04 23:45  后山人  阅读(2508)  评论(0编辑  收藏  举报