1、RMAN基本概念和命令
backup spfile format '/app/rmanbak/spfile_%d_%I_%T_%t.ora';
list backup of spfile completed before 'sysdate';
restore spfile from '/app/rmanbak/spfile_ORCL_1651659091_20230203_1127818641.ora';
RMAN> backup current controlfile format '/app/rmanbak/control_%d_%I_%T_%t_%s_%p.ctl';
list backup of controlfile;
select name from v$controlfile;
--模拟数据插入
SQL> insert into t1 values(1,'Tome');1 row created.
SQL> commit;
--查询控制文件位置
SQL> select name from v$controlfile;
--删除控制文件
SQL> host rm /app/oracle/oradata/ORCL/control01.ctl
SQL> host rm /app/oracle/oradata/ORCL/control02.ctl
RMAN> restore controlfile from '/app/rmanbak/control_ORCL_1651659091_20230203_1127833229_267_1.ctl';
RMAN> alter database mount;
RMAN> recover database;
数据库恢复完成之后,必须以resetlogs模式才能打开数据库。
--打开数据库
RMAN> alter database open;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of sql statement command at 02/03/2023 15:24:43
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
--以resetlogs模式打开数据库
RMAN> alter database open RESETLOGS;
Statement processed
RMAN> copy datafile 1 to '/home/oracle/rmanback/system01.dbf';
RMAN> list copy;
list copy of datafile 1;
select file_id,file_name from dba_data_files order by 1;
SQL> host rm /app/oracle/oradata/ORCL/system01.dbf
备份时限制备份片的大小
RMAN> RUN{
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 100M;
BACKUP datafile 1 FORMAT '/app/rmanbak/DATAFILE_SYSTEM_%d_%s_%p_%T';
CONFIGURE CHANNEL DEVICE TYPE DISK clear;
};
备份时压缩备份集
RMAN> backup as compressed backupset datafile 1 format='/app/rmanbak/DATAFILE_SYSTEM_%d_%s_%p_%T.dbf';
list backup of datafile 1;
RMAN> run {restore datafile 1;
recover datafile 1;
alter database open;}
恢复数据文件时改变数据文件的位置
report schema;
backup datafile 2 format '/app/rmanbak/DATAFILE_TEST_%d_%s_%p_%T.dbf';
SQL> host rm /app/oracle/oradata/ORCL/test01.DBF
SQL> startup force;
RMAN> run {set newname for datafile 2 to '/app/oracle/datafile/test.dbf';
restore datafile 2;
switch datafile all;
recover datafile 2;
alter database open;}
report schema;
删除rman上周备份,之后再次备份数据库
vi /home/oracle/scripts/rman_backup.sh
#!/bin/bash
source /home/oracle/.bash_profile
rman target / log /home/oracle/scripts/log/accor_full_bak_`date +"%Y%m%d"`.log << EOF
run
{
report obsolete;
delete noprompt obsolete;
delete noprompt backup completed before 'sysdate-7';
allocate channel c1 device type disk format '+FRADG/*****/BACKUPSET/%U';
allocate channel c2 device type disk format '+FRADG/*****/BACKUPSET/%U';
allocate channel c3 device type disk format '+FRADG/*****/BACKUPSET/%U';
allocate channel c4 device type disk format '+FRADG/*****/BACKUPSET/%U';
allocate channel c5 device type disk format '+FRADG/*****/BACKUPSET/%U';
backup as compressed backupset database;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
release channel c5;
}
exit
EOF
https://blog.csdn.net/liang921119/article/details/129441679
https://blog.csdn.net/liang921119/category_12171421.html
网友评论