Oracle rman备份和恢复常规操作

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';
发布了27 篇原创文章 · 获赞 2 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/jackgo73/article/details/92084210