1 备份恢复参数文件
RMAN> backup spfile format '/tmp/bak/spfile_%U_%T.ora'
关闭数据库,并删除参数文件(…/dbs路径下的ora文件)
RMAN> shutdown immediate;
rm $ORACLE_HOME/dbs/*.ora
启动数据库报错,恢复配置文件
RMAN> startup nomount
RMAN> startup mount
database is already started
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of startup command at 06/15/2019 13:47:50
ORA-00205: error in identifying control file, check alert log for more info
RMAN> restore spfile from '/tmp/bak/spfile_08u45o34_1_1_20190615.ora';
Starting restore at 15-JUN-19
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=3 device type=DISK
channel ORA_DISK_1: restoring spfile from AUTOBACKUP /tmp/bak/spfile_08u45o34_1_1_20190615.ora
channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete
Finished restore at 15-JUN-19
重新启动数据库成功
RMAN> startup force
2 备份恢复控制文件
RMAN> backup current controlfile format '/tmp/bak/control_%U_%T.ctl';
关闭数据库删除控制文件
RMAN> select name from v$controlfile;
/fdisk1/data/ordata1400/ORCL1400/controlfile/o1_mf_gh6v41fk_.ctl
/fdisk1/data/fast_recovery/ORCL1400/controlfile/o1_mf_gh6v41gz_.ctl
[mingjie.gmj@ecs /tmp/bak]$ rm /fdisk1/data/ordata1400/ORCL1400/controlfile/o1_mf_gh6v41fk_.ctl
[mingjie.gmj@ecs /tmp/bak]$ rm /fdisk1/data/fast_recovery/ORCL1400/controlfile/o1_mf_gh6v41gz_.ctl
重启数据库报错开始恢复
RMAN> startup force;
Oracle instance started
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of startup command at 06/15/2019 14:00:36
ORA-00205: error in identifying control file, check alert log for more info
RMAN> restore controlfile from '/tmp/bak/control_09u45omg_1_1_20190615.ctl';
Starting restore at 15-JUN-19
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=122 device type=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/fdisk1/data/ordata1400/ORCL1400/controlfile/o1_mf_gh6v41fk_.ctl
output file name=/fdisk1/data/fast_recovery/ORCL1400/controlfile/o1_mf_gh6v41gz_.ctl
Finished restore at 15-JUN-19
RMAN> startup mount;
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open RESETLOGS;
3 备份恢复数据(完全恢复)
日志都在
RMAN> backup database format '/tmp/bak/database_%U_%T.dbf';
创建表在test表空间
RMAN> select name from v$datafile;
RMAN> create tablespace test_tbl datafile '/fdisk1/data/ordata1400/ORCL1400/datafile/test_tbl.dbf' size 10M;
RMAN> create table scott.t2(id number) tablespace test_tbl;
RMAN> insert into scott.t2 values (1);
RMAN> select file_name from dba_data_files where TABLESPACE_NAME='TEST_TBL';
/fdisk1/data/ordata1400/ORCL1400/datafile/test_tbl.dbf
查询日志序列和当前日志文件
SQL> alter system switch logfile;
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /tmp/
Oldest online log sequence 1
Next log sequence to archive 2
Current log sequence 2
删除数据文件,启动数据库,用基础备份+日志即可恢复数据文件
RMAN> startup force
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open;
4 备份恢复数据(dbca删除后恢复)
备份参数文件、控制文件、全库
RMAN> backup spfile format '/tmp/bak/spfile_%U_%T.ora';
RMAN> backup current controlfile format '/tmp/bak/control_%U_%T.ctl';
RMAN> backup database format '/tmp/bak/database_%U_%T.dbf';
DBCA删除实例(或者手动去删DATA下面的所有文件)
RMAN启动实例
mkdir $ORACLE_BASE/ORCL1400/adump
rlwrap rman target /
RMAN> startup
startup failed: ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/home/mingjie.gmj/databases/oracle1400/base/dbhome_1/dbs/initorcl1400.ora'
starting Oracle instance without parameter file for retrieval of spfile
Oracle instance started
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of startup command at 06/15/2019 14:47:07
ORA-00205: error in identifying control file, check alert log for more info
RMAN> restore spfile from '/tmp/bak/spfile_0du45qp9_1_1_20190615.ora';
RMAN> restore controlfile from '/tmp/bak/control_0eu45qq1_1_1_20190615.ctl';
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open resetlogs;
ps.手动修改spfile
-- 有静态lsnrctl的话删掉,缺什么目录看这个文件
strings spfileorcl1400.ora >1.ora
vi 1.ora
sqlplus / as sysdba
startup nomount pfile='?/dbs/1.ora'
create spfile from pfile='?/dbs/1.ora';
5 备份策略
5.1 概念
RMAN备份分全备和增备,增备分0、1、2等级。
差异增量备份(Differential Incremental Backup)模式(默认):
LV0:全备。
LV1:最近一次LV0或LV1至今的变化。
LV2:最近一次LV0或LV1或LV2至今的变化。
优缺点:速度较快、因为仅存储少量变化的块、但需要更长的时间来恢复
累计增量备份(Cumulative Incremental Backup)模式:
LV0:全备。
LV1:最近一次LV0至今的变化(不论LV0到本次LV1是否还有其他LV1备份)。
LV2:最近一次LV0或LV1至今的变化(相当于dirfferential incremental backup的LV1)。
优缺点:主要优势是恢复时间较短、缺点是备份时间长和磁盘开销大
备份命令如下:
零级备份
backup incremental level 0 database;
一级差异增量
backup incremental level 1 database;
一级累计增量
backup incremental level 1 cumulative database;
5.2 脚本备份全库
--校验日志的可用性
RMAN>crosscheck archivelog all;
--核对所有备份集
RMAN>crosscheck backup;
--删除保存策略过过期的,包括备份集和归档日志,有交互式操作。
RMAN>delete obsolete;
--删除保存策略过过期的,包括备份集和归档日志,无交互式操作。
RMAN>delete noprompt obsolete;
--删除7天前的归档日志备份
RMAN> delete archivelog all completed before 'sysdate-7';