rman 备份.
/* 查询备份 */
RMAN log=D:\rman.txt
RMAN> connnect catalog rman/888888@rman
RMAN> target sys/sys@src
RMAN> list incarnation;
RMAN> report schema;
RMAN> resync catalog;
RMAN> list backup of database completed after 'sysdate-1';
RMAN> list backup of archive log from 'sysdate-1';
RMAN LIST
=========
list backup; // 显示已备份的数据文件
list controlfile; // 显示已备份的控制文件
list archivelog all; // 显示已备份的日志文件
rman 删除
DELETE BACKUPSET
================
run {
allocate channel for delete type disk;
change backupset 303 delete;
release channel;
}
RMAN CONFIGURATION
==================
sql 'alter session set NLS_LANGUAGE="SIMPLIFIED CHINESE"';
sql 'alter session set NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"';
1).
/* 创建表空间. */
SQLPLUS> create tablespace 表空间名 datafile '要创建的表空间路径' size 表空间大小M;
SQLPLUS> create user 用户名 identified by "密码" default tablespace 表空间名 temporary tablespace temp
quota unlimited on 表空间名;
SQLPLUS> grant resource, connect to 用户名;
SQLPLUS> grant recovery_catalog_owner to 用户名;
rman target sys/sys@database catalog 用户名/密码@rman
RMAN> create catalog tablespace 表空间名;
RMAN> register database;
反注册
sqlplus /nolog
SQLPLUS> conn 用户名/密码@rman
SQLPLUS> select * from db;
db_key db_id
RMAN> execute dbms_rcvcat.unregisterdatabase(db_key, db_id);
connect sys/sys@wavetop as sysdba
create tablespace test
datafile 'D:\test2/test.dbf'
size 60M;
create user test
identified by "test"
default tablespace test
temporary tablespace temp
quota unlimited on test;
grant recovery_catalog_owner to test;
grant connect, resource to test;
exit
/* 创建恢复目录 */
connect rcvcat bao/bao@rman
create catalog tablespace bao;
exit
2).
/* rman 里注册数据库 */
rman target sys/sys@src catalog bao/bao@rman
connect target sys/sys@src
connect rcvcat bao/bao@rman
register database;
exit
3).
/* rman 里删除数据库 */
=======================
connect target sys/sys@BAO1
connect rcvcat RMAN_User/RMAN_User@wavetop
delete force noprompt backup;
delete force noprompt obsolete;
exit
rman 备份:
/* 0 级备份 */
===============================
connect target sys/sys@BYT
connect rcvcat gg/gg@bao1
run {
allocate channel c0 type disk
maxpiecesize = 1073741824
format 'e:/cvsroot/BYT_1235971239_%U.OD0';
backup
incremental level 0
skip inaccessible
tag Backup_Level0
database;
release channel c0;
allocate channel c0 type disk
maxpiecesize = 1073741824
format 'e:/cvsroot/BYT_1235971239_%U.ocl';
backup
skip inaccessible
tag Backup_Controlfile
current controlfile;
release channel c0;
}
exit
/* 1 级备份 */
===========================
connect target sys/sys@BYT
connect rcvcat gg/gg@bao1
run {
allocate channel c0 type disk
maxpiecesize = 1073741824
format 'e:/cvsroot/backup3/client/bin/OraExp/BYT_1235971617_%U.OD1';
backup
incremental level 1
skip inaccessible
tag Backup_Level1
database;
release channel c0;
allocate channel c0 type disk
maxpiecesize = 1073741824
format 'e:/cvsroot/backup3/client/bin/OraExp/BYT_1235971617_%U.ocl';
backup
skip inaccessible
tag Backup_Controlfile
current controlfile;
release channel c0;
}
exit
/* 2 级备份 */
========================
connect target sys/sys@BYT
connect rcvcat gg/gg@bao1
run {
allocate channel c0 type disk
maxpiecesize = 1073741824
format 'e:/cvsroot/backup3/client/bin/OraExp/BYT_1235971748_%U.OD2';
backup
incremental level 2
skip inaccessible
tag Backup_Level2
database;
release channel c0;
allocate channel c0 type disk
maxpiecesize = 1073741824
format 'e:/cvsroot/backup3/client/bin/OraExp/BYT_1235971748_%U.ocl';
backup
skip inaccessible
tag Backup_Controlfile
current controlfile;
release channel c0;
}
exit
/* 日志备份 */
======================
connect target sys/sys@BYT
connect rcvcat gg/gg@bao1
run {
allocate channel c0 type disk
maxpiecesize = 1073741824
format 'e:/cvsroot/BYT_1235971840_%U.oar';
sql 'alter system archive log current';
backup
skip inaccessible
tag Backup_Archivelog
archivelog all delete input;
release channel c0;
allocate channel c0 type disk
maxpiecesize = 1073741824
format 'e:/cvsroot/BYT_1235971840_%U.ocl';
backup
skip inaccessible
tag Backup_Controlfile
current controlfile;
release channel c0;
}
exit
/* 备份控制文件 */
BACKUP CONTROL FILE
===================
run {
allocate channel c0 type disk
format 'f:\oraexp\oradb1_%s_%U.ctl';
setlimit channel c0 kbytes 204800;
backup
skip inaccessible
current controlfile;
}
rman 还原
/* 完全恢复. */
=========================
connect target sys/sys@BAO1
connect rcvcat test/88@wavetop
run {
shutdown immediate;
startup mount;
allocate channel c0 type disk;
restore database;
recover database;
release channel c0;
sql 'alter database open';
}
exit
/* 不完全恢复 */
INCOMPLETE RESTORE DATABASE
===========================
run {
shutdown immediate;
startup nomount;
allocate channel c0 type disk;
restore controlfile until scn 180447;
release channel c0;
startup mount;
allocate channel c0 type disk;
restore database until scn 180393;
recover database until scn 180445;
sql 'alter database open resetlogs';
}
run {
Set until logseg 51 thread 1;
Allocate auxiliary channel dl type disk;
Duplicate target database to bao;
}
====================================================================================================================
====================================================================================================================
====================================================================================================================
RMAN LIST
=========
list backup; // 显示已备份的数据文件
list controlfile; // 显示已备份的控制文件
list archivelog all; // 显示已备份的日志文件
RMAN CONFIGURATION
==================
sql 'alter session set NLS_LANGUAGE="SIMPLIFIED CHINESE"';
sql 'alter session set NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"';
BACKUP LEVEL 0
===============
run {
allocate channel c0 type disk
format 'f:\oraexp\oradb1_%s_%U.od0';
setlimit channel c0 kbytes 204800;
backup
incremental level 0
skip inaccessible
database;
release channel c0;
}
BACKUP ARCHIVELOG
=================
run {
allocate channel c0 type disk
format 'f:\oraexp\oradb1_%s_%U.oar';
setlimit channel c0 kbytes 204800;
sql 'alter system archive log current';
backup
skip inaccessible
archivelog all delete input;
}
BACKUP CONTROL FILE
===================
run {
allocate channel c0 type disk
format 'f:\oraexp\oradb1_%s_%U.ctl';
setlimit channel c0 kbytes 204800;
backup
skip inaccessible
current controlfile;
}
DELETE BACKUPSET
================
allocate channel for delete type disk;
change backupset 24 delete;
release channel;
COMPLETE RESTORE DATABASE
=========================
run {
shutdown immediate;
startup mount;
allocate channel c0 type disk;
restore database;
recover database;
sql 'alter database open';
release channel c0;
}
INCOMPLETE RESTORE DATABASE
===========================
run {
shutdown immediate;
startup nomount;
allocate channel c0 type disk;
restore controlfile until scn 180447;
release channel c0;
startup mount;
allocate channel c0 type disk;
restore database until scn 180393;
recover database until scn 180445;
sql 'alter database open resetlogs';
}
===================================================================================================================================
RMAN 的list 命令
1 列出对应物 RMANlist incarnation;
2 列出备份
2.1概述可用的备份RMANlist backup summary;
B 表示 backup
F 表示 FULL
A 表示 archive log
0 1 表示 incremental backup
S 说明备份状态 (AAVAILABLEX EXPIRED )
2.2按备份类型列出备份RMAN>list backup by file;
按照 数据文件备份,归档日志备份,控制文件备份,服务器参数文件备份列出
2.3列出具体备份RMAN>list backup;
2.4列出过期备份RMAN>list expired backup;
2.5列出表空间和数据文件备份
list backup of tablespace
list backup of datafile 输出和list backup 相似
如:
RMAN>list backup of tablespace user_tbs;
RMAN>list backup of datafile 3;
2.6列出归档日志备份
RMAN>list archivelog all;简要信息
RMAN>list backup of archivelog all;具体信息
2.7列出控制文件和服务器参数文件
RMAN>list backup of controfile;
RMAN>list backup of spfile;
=====================================================
=====================================================
RMAN 的 report命令
1. 报告最近没有被备份的数据文件
RMANreport need backup days=3;
2. 报告备份冗余或恢复窗口
RMANreport needbackup redundancy=2;
RMANreport need backup recovery window of 2 days;
3. 报告数据文件的不可恢复操作
RMANreport unrecoverable;
4. 报告数据库模式
RMANreport schema;
5. 报告丢弃的备份
假如使用了保存策略,备份会标记为丢弃状态 RMANreport obsolete;删除丢弃状态备份RMANdelete obsolete;
=====================================================
=====================================================
RMAN的crosscheck 命令
1 备份集有两种状态A(Available,RMAN认为该项存在于备份介质上)X(Expired,备份存在于控制文件或恢复目录中,但是并没有物理存在于备份介质上)
2 crosscheck 的目的是检查RMAN 的目录以及物理文件,假如物理文件不存在于介质上,将标记为Expired。假如物理文件存在,将维持Available。假如原先标记为Expired的备份集再次存在于备份介质上(如恢复了损坏的磁盘驱动器后),crosscheck将把状态重新从Expired标记回Available。
3 crosscheck 输出分两部分。第一部分列出确定存在于备份介质上的所有备份集片,第二部分列出不存在于备份介质上的备份集片,并将其标记为Expired。当设置备份保存策略后,一个备份过期,crosscheck之后标记为丢弃的备份状态依旧为availabel,要删除丢弃备份delete obsolete。
4 示例:
crosscheck backup
crosscheck backup of datafile 1;
crosscheck backup of tablespace users;
crosscheck backup of controfile;
crosscheck backup of controlfile;
crosscheck backup tag='SAT_BACKUP';
crosscheck backup completed after 'sysdate - 2'
crosscheck backup completed between 'sysdate - 5' and 'sysdate -2 '
crosscheck backup device type sBT;
crosscheck archivelog all;
crosscheck archivelog like '%ARC00012.001'
crosscheck archivelog from sequence 12;
crosscheck archivelog until sequence 522;
=====================================================
=====================================================
RMAN 的validate 命令
1 validate 命令验证备份集片是否能够被还原
2 list backup summary; 得到了备份集得主键ID如40,然后validate backupset 40;
=====================================================
=====================================================
RMAN 的备份保存策略以及change ,delete命令
0.带delete参数的change 命令删除备份集,从备份介质,并且从控制文件和恢复目录中删除。
change backupset 117,118 delete;
change backuppiece 1304 delete;
change archivelog until logseq =544 delete;
1.两类策略:恢复窗口备份保存策略(recovery windows backup retension policy)基于时间
备份冗余备份保存策略(backup redundancy backup retension policy) 基于备份的数量
两类策略互相排斥
2.即使使用了备份保存策略,备份到期并不删除,只是在RMAN目录中标记为丢弃,看到的状态依旧为available;
要查看标记为丢弃的备份 report obsolete,只有使用delete obsolete才真正物理删除。
3.configure retension policy to recovery window of 7 days;
configure retension policy to redundancy 3;
显示结果 show all;
4.查看到期丢弃的备份时,可能需要手工保存一些备份 ,可以使用change 命令带keep 参数,使用这个命令后,那些被修改的备份将被认为是个long-term backup,不在受保存策略影响也就是说delete obsolete 也不删除。
5.要使备份时候不受保存策略影响 ,使用带keep参数的backup 命令
backup database keep forever;
backup database keep 5 days;
6.change 命令功能
可以修改备份为永久保存并将以及该备份的相关的日志保存下来,保证总能将备份恢复到当前时间点
change backupset 31 keep forever logs;
可以设置备份丢弃的新日期,将备份在多保存7 天,7 天后将删除
change backupset 32 keep until time 'sysdata + 7' logs;
7.change 可以将备份集设置为unavailable
change backupset 33 unavailable;
标记为unavailable状态的备份集并不参与crosscheck;
=====================================================
=====================================================
恢复目录的记录删除
1. $Oracle_HOME/rdbms/admin/prgrmanc.sql 脚本定期删除恢复目录中具有DELETED状态的记录
2. 要删除旧的对应物记录incarnation.必须从DBINC 表中删除这些对应物,使用RC_DATABASE_INCARNATION 视图来确定要删除的对应物。记录要删除的每个对应物的DBINC_KEY
随后启动SQL*Plus,执行delete from dbinc where dbinc_key=2;
=====================================================
=====================================================
手工同步恢复目录
resync catalog;
Oracle同步恢复目录的时候,首先创建快照控制文件,然后比较这个文件和恢复目录,完成后,Oracle 更新恢复目录,使恢复目录和控制文件同步
=====================================================
=====================================================
在RMAN 中存储脚本
1,连接到目标数据库和恢复目录
rman target / catalog rman/rman@rman9i
2,创建脚本
RMANcreate script. my_bk_script
2{backup database plus archivelog;}
create script. my_bk_script
3,打印脚本
RMANprint script. my_bk_script;
printing stored scipt:my_bk_script
{backup database plus archivelog;}
4,运行这个脚本,备份目标数据库
RMANrun {execute scipt my_bk_script;}
5 删除脚本
RMANdelete script. my_bk_script;
=====================================================
=====================================================
archivelog模式下的完全恢复
step1:set oracle_sid=recover
rman target rman_backup/passWord
configure controlfile autobackup on;
step2:backup database plus archivelog delete input;
step3:shutdown immediate;
step4:重命名所有的数据文件和控制文件,不重命名联机重做日志。
step5: startup nomount;
set DBID=****
restore controlfile from autobackup;
alter database mount;
step6: restore database;
recover database;
alter database open resetlogs;
表空间恢复
sql"alter tablespace users offline";
sql"alter tablespace tools offline";
restore tablespace users,tools;
recover tablespace users,tools;
sql"alter tablespace users online";
sql"alter tablespace tools online";
数据文件恢复
sql"alter database datafile 3 offline";
sql"alter database datafile 'd:oracleoradatausers01.dbf' offline";
restore datafile 3
restore datafile 'd:oracleoradatausers01.dbf';
recover datafile 3
recover datafile 'd:oracleoradatausers01.dbf';
sql"alter database datafile 3 online";
sql"alter database datafile 'd:oracleoradatausers01.dbf'online";
=====================================================
=====================================================
切换当前的incarnation 回到resetlogs 前RESET DATABASE TO INCARNATION inc_key
=====================================================
=====================================================
RMAN 高级恢复
1 基于时间点的恢复
run
{
set until time "to_date('07/01/02 15:00:00','mm/dd/yy hh24:mi:ss')"'
restore database;
recover database;
alter database open resetlogs;
}
2 基于SCN 的恢复
startup mount;
restore database UNTIL SCN 10000;
recover database UNTIL SCN 10000;
alter database open resetlogs;
3 基于日志序列的恢复
startup mount;
restore database UNTIL SEQUENCE 100 thread 1;
recover database UNTIL SEQUENCE 100 thread 1;
alter database open resetlogs;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7755871/viewspace-735114/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7755871/viewspace-735114/