Oracle RMAN简单操作

oracle备份恢复有flashback和RMAN. RMAN是一种高效的实用的备份恢复工具,可以将工作人员从繁重的工作

中解脱出来,同时给数据库安全方面提供很大的保障。

RMAN备份有noarchivelog模式和archivelog模式。其中noarchivelog模式必须要关闭数据库才能执行备份,而

且只能恢复到备份时候的时间点,对于备份之前某个时间点却无能为力;archivelog模式时,Oracle允许数据库

打开和运行的同时备份每个单独的表空间和数据文件,也可以在不同时刻备份选择的数据库部分,相当灵活。

这里简单说下RMAN在archivelog模式下的备份与恢复

catalog准备工作:

1.创建两数据库,为了方便,数据库名和监听器名与实例名是一致的,

其中一个库做为目标数据库,另一个库作为恢复目录数据库。

2.登陆两数据库并startup。

3.登陆恢复目录数据库,创建表空间, 创建用户(密码和用户名相同),然后为用户赋予所有权限。

4.使用RMAN工具连接catalog, 执行rman catalog 新建用户/新建用户@catalog库,将新建表空间和用户关联。

5.同时连接目标数据库和catalog :rman target sys/oracle@目标库 catalog 新建用户/新建用户@catalog库。

6.注册一下数据库,catalog创建成功。

开启archivelog模式:使用sqlplus工具登进去后,以挂载的方式开启数据库,然后alter database archivelog,

接着open即可。

RMAN备份数据库首先需要创建脚本,创建脚本有命令行方式和文本方式。脚本有全局脚本和本地脚本,

这里以全局脚本为例

创建脚本global_del_obso:

RMAN> create global script global_del_obso comment ‘A script for obsolete backup and delete it’

{

allocate channel ch1 device type disk;

delete obsolete recovery window of 7 days;

release chanel ch1;

}

s1

创建脚本golbal_arch:

RMAN> create global script global_arch comment‘A script for archievlog and delete it’

{

allocate channel ch1 device type disk;

sql “alter system rchivelog current”

set limit channel ch1 readate=10240;

set limit channel ch1 bytes=2048000;

backup as compressed backupset rchivelog all delete input format‘/opt/oracle/product/dbs/arch_%d_%U’

release channel chI;

}

s2

s3

创建脚本glbbal_inc0:

RMAN>create global script global_inco

Comment ‘A script for backup ddibase using incremental levelo’

{

excute global script global_del_obso;

allocate channel ch1 device type disk;

set limit channel ch1 readate=10240;

set limit channel ch1 kbytes=2048000;

backup as compressed backupset incremental level database

formate=’/opt/app/oracle/inco_%d_%U;

tag=’inc0’

excute global script global_arch;

}

s4

执行脚本global_inc0,如此完成了数据的完全备份。

现在执行一个操作,将prod下的表空间users01.dbf改名为users01.dbf.bak,

看RMAN是否能够恢复。

s7

在做恢复之前还需要创建一个恢复脚本

RMAN> create global script recover_tablespace comment ‘a script for recover tablespace’

{

allocate channel ch1 device type disk;

sql “alter tablespace users offline immediate”;

restore tablespace users;

sql “alter tablespace users online”;

}

执行这个脚本recover_tablespace

run { execute global script recover_tablspace; }

s8

查看prod下的表空间users01.dbf是否出现

s9

如此可见,表空间恢复成功,其他文件恢复以后说明。

Leave a Reply