rman
rman>connect target /
rman target sys/oracle@up @'/backup/rman_scrp.rcv' log /backup/rman_bk.log append
DEMO (DBID=3454034721)
rman target /
rman>report schema;
rman备份片格式
%a 数据库活动id
%c 备份片拷贝数
%d 库名
%D 天(DD)
%e 归档序列号
%F c-iiiiiiiiii-YYYYMMDD-QQ ,iiiiiiiiii是数据库id号,QQ是1-256的序列
%I dbid
%p 备份集中的备份片号
%s 备份集号
%t 时间戳
%T YYYYMMDD
%u 八字符表示的备份集创建时间
%U %u_%p_%c
rman>show all;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 1 DAYS;
CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
configure channel device type disk | [SBT] format '//%%%.bkp';
CONFIGURE CONTROLFILE AUTOBACKUP ON;
list copy;
list expired copy;
list copy of datafile 4;
list copy of tablespace users;
list copy of database;
list backup;
list backup summary;
list backupset;
list expired backup;
list archivelog all;
report schema;
report obsolete;
report obsolete redundancy=3;
report need backup days xxx;
copy datafile '' to '';
copy current controlfile to '';
backup spfile;
backup current controlfile;
backup datafile 4;
backup tablespace users;
backup database;
backup archivelog all;
backup archivelog all delete input;
backup archivelog sequence between 10 and 12 delete input;
delete [noprompt] obsolete;
delete noprompt obsolete REDUNDANCY=2;
backup tablespace users;
还原user数据文件到新的位置
run{
allocate channel device type disk c1;
sql 'alter tablespace users offline';
set newname for datafile '/tmp/users01.dbf' to '/oracle/oradata/up/users01.dbf';
restore tablespace users;
switch datafile all;
recover tablespace users;
sql 'alter tablespace users online';
}
--全库还原恢复:
--init
db_name=orcl
shared_pool_size=80m
compatible=10.2.0.1.0
db_recovery_file_dest='/backup'
db_recovery_file_dest_size=2g
rman>restore spfile from '//.bkp';
sql>startup force nomount
rman>restore controlfile from '//.bkp';
rman>alter database mount;
run{
set newname for datafile '/opt/oracle/oradata/orcl/system01.dbf' to '/oracle/oradata/orcl/system01.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/undotbs01.dbf' to '/oracle/oradata/orcl/undotbs01.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/sysaux01.dbf' to '/oracle/oradata/orcl/sysaux01.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/users01.dbf' to '/oracle/oradata/orcl/users01.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/example01.dbf' to '/oracle/oradata/orcl/example01.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/undo01.dbf' to '/oracle/oradata/orcl/undo01.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/t001.dbf' to '/oracle/oradata/orcl/t001.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/t002.dbf' to '/oracle/oradata/orcl/t002.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/t003.dbf' to '/oracle/oradata/orcl/t003.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/test01.dbf' to '/oracle/oradata/orcl/test01.dbf';
set newname for datafile '/opt/oracle/oradata/orcl/demo01.dbf' to '/oracle/oradata/orcl/demo01.dbf';
restore database;
switch datafile all;
}
log_archive_dest_1='location=/backup'
restore archielog all;
run{
set archivelog destination to '/home/oracle';
restore archivelog from sequence 8 until sequence 11;
}
-----------------提取archivelog-----------------
declare
devtype varchar2(256);
done boolean;
begin
devtype :=dbms_backup_restore.deviceallocate(type=>'',ident=>'c1');
dbms_backup_restore.restoresetarchivedlog;
dbms_backup_restore.restorearchivedlogrange;
dbms_backup_restore.restorebackuppiece(done=>done,handle=>'/backup/ORCL_6_1_20100206_710262379.bkp');
dbms_backup_restore.devicedeallocate;
end;
/
------------------提取controlfile和spfile-----------------
declare
devtype varchar2(256);
done boolean;
begin
devtype :=dbms_backup_restore.deviceallocate(type=>'',ident=>'c1');
dbms_backup_restore.restoresetdatafile;
-- dbms_backup_restore.restorespfileto(sfname=>'/backup/spfileorcl.ora');
dbms_backup_restore.restorecontrolfileto(cfname=>'/disk12/rawdb/ctl1');
dbms_backup_restore.restorebackuppiece(done=>done,handle=>'/oracle/flash_recovery_area/DEMO/autobackup/2010_02_07/o1_mf_s_710342918_5pwmw758_.bkp');
dbms_backup_restore.devicedeallocate;
end;
/
--------------------提取datafile--------------------------
declare
devtype varchar2(256);
done boolean;
begin
devtype :=dbms_backup_restore.deviceallocate(type=>'',ident=>'c1');
dbms_backup_restore.restoresetdatafile;
dbms_backup_restore.restoredatafileto(dfnumber=>7,toname=>'/backup/t001.dbf');
dbms_backup_restore.restoredatafileto(dfnumber=>8,toname=>'/backup/t002.dbf');
dbms_backup_restore.restorebackuppiece(done=>done,handle=>'/backup/ORCL_4_1_20100206_710260038.bkp');
dbms_backup_restore.devicedeallocate;
end;
/
-------------------------------------------------------------
ERROR at line 1:
ORA-19568: a device is already allocated to this session
ORA-06512: at "SYS.DBMS_BACKUP_RESTORE", line 170
ORA-06512: at "SYS.DBMS_BACKUP_RESTORE", line 145
ORA-06512: at line 5
exec dbms_backup_restore.devicedeallocate;
conn / as sysdba
并行备份:
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
backup
(datafile 5 channel c1)
(datafile 4 channel c2);}
控制备份片大小:
run{
allocate channel c1 type disk;
set limit channel c1 kbytes=10000;
backup datafile 4 format '/backup/%s_%p.bkp';
}
run{
allocate channel c1 type disk maxpiecesize=100m;
backup tablespace system;
}
run{
allocate channel c1 type disk maxpiecesize=100m;
backup database format '/backup/%d_%s_%p_%T_%t.bkp' filesperset=20;
backup format '/backup/%d_%e_%s_%p_%T_%t.bkp' archivelog all delete input;
delete noprompt obsolete;
}
backup database not backed up format '/backup/%d_%s_%p_%T_%t.bkp' filesperset=3;
压缩备份集:
backup tablespace system;
backup as compressed backupset tablespace system;
backup as compressed backupset duration 00:05 minimize load tablespace system;
校验:
backup validate database;
backup validate archivelog all;
restore datafile 4 validate;
restore tablespace users validate;
restore database validate;
不完全恢复:
run{
set until scn 239874;
restore database;
recover database;
alter database open resetlogs;
}
块级别修复:
select count(*) from scott.test;
blockrecover datafile 4 block 138;
增量备份:
backup incremental level 0 tablespace users;
backup incremental level 2 tablespace users;
backup incremental level 2 cumulative tablespace users;
backup incremental level 1 tablespace users;
backup incremental level 2 tablespace users;
backup incremental level 2 cumulative tablespace users;
backup incremental level 0 tablespace users;
恢复目录:
1.create tablespace rmantbs datafile '/oracle/oradata/up/rmantbs.dbf' size 50m;
2.drop user rman cascade;
create user rman identiifed by rman;
grant connect,resource,recovery_catalog_owner to rman;
3.rman catalog rman/rman@151
--(创建catalog相关表)
rman>create catalog;
rman>exit
4.rman target / catalog rman/rman@151
rman target sys/oracle@up catalog rman/rman
rman>register database;
rman target / catalog rman/rman@151
rman>register database;
alter database open resetlogs;
rman>reset database;
alter tablespace add datafile '';
rman>resync catalog;
RMAN>
select * from rc_backup_set;
select * from rc_backup_piece;
select * from rc_backup_files;
exec dbms_rcvman.setdatabase(null,null,null,3454034721,null);
select TABLESPACE_NAME,FILE#,NAME from RC_DATAFILE;
select * from db;
create script. b0 {backup tablespace users;}
replace script. b0 {backup tablespace users;}
run{execute script. b0;}
print script. b0;
select SCR_NAME from scr;
run{
set newname for datafile '/tmp/ttt.dbf' to '/dev/raw/raw1';
restore datafile 8;
recover datafile 8;
}
chkconfig --add rawdevices
service rawdevices start
chkconfig --list | grep rawdevices
raw /dev/raw/raw1 /dev/sda13
/ect/sysconfig/rawdevices/
/dev/raw/raw1 /dev/sda13
/etc/rc.local
chown oracle.oinstall /dev/raw/raw1
log_a
最大性能:主库做了,从库可做就做
最高可用:主库的数据操作传到从库,从库必须做 需要stanby联机日志
最高保护:所有的数据在从库写成功,主库才能继续数据操作