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 天;
release chanel ch1;
}
创建脚本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;
}
创建脚本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;
}
执行脚本global_inc0,如此完成了数据的完全备份。
现在执行一个操作,将prod下的表空间users01.dbf改名为users01.dbf.bak,
看RMAN是否能够恢复。
在做恢复之前还需要创建一个恢复脚本
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; }
查看prod下的表空间users01.dbf是否出现
如此可见,表空间恢复成功,其他文件恢复以后说明。