Oracle Rman 自动备份与恢复
岁月如梦 Lv4

Oracle环境:Oracle 11gR2

配置步骤:

一、配置rman自动备份:

1、打开归档模式并修改归档路径:

具体步骤参考以下链接:
关于Oracle归档模式

归档模式配置结果如下:
image

2、创建本地rman备份存储目录:

1
2
3
4
5
6
7
8
mkdir /rmanbak
cd /rmanbak
mkdir datafile
mkdir controlfile
mkdir log
chown -R oracle:oinstall datafile
chown -R oracle:oinstall controlfile
chown -R oracle:oinstall log

3、配置rman备份参数:

rman配置

1
2
3
4
5
6
[oracle@ora11g]$ rman target/

RMAN> show all;
--如果配置不对,输入以下命令变更状态
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/rmanbak/controlfile/%F';

image

备份数据文件

1
RMAN> backup database format '/rmanbak/datafile/data_%U.dbf';

备份控制文件

1
RMAN> backup current controlfile format '/rmanbak/controlfile/control_%f.dbf';

完备脚本(待调整)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash

export ORACLE_SID=ora11g
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/product/11.2.0/db_1

$ORACLE_HOME/bin/rman target / << EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
allocate channel c5 type disk;
crosscheck archivelog all;

backup as compressed backupset database format '/rmanbak/datafile/full_dbbackup_%T_%d_%U';

sql 'alter system archive log current';
backup as compressed backupset filesperset 10 format '/rmanbak/datafile/Arch_%d_%T_%s.bak' archivelog all;

delete noprompt obsolete;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
release channel c5;
}
EOF

备份参数文件(数据迁移到新服务器中)

源库查看参数文件路径
1
2
SQL> show parameter spfile;
--查看可得到路径:/oracle/app/oracle/product/11.2.0/db_1/dbs/spfileora11g.ora

image

确认目标库是否有源库参数文件的路径,没有则需创建
1
2
3
4
5
cd /oracle/app/oracle/product/11.2.0/db_1/dbs

#关闭目标库
sqlplus / as sysdba
SQL> shutdown immediate
关于参数文件

init.ora (只要这个参数文件在,下面两个就在,这三个文件是一致的)
spfileora11g.ora (二进制,需要用命令修改)
pfile.ora (文本,直接修改)

如果要数据库迁移到另一个服务器上的数据库中,需要目标库中删除
init.ora 和 spfileora11g.ora 这俩参数文件
然后cp 源库中的这俩文件到目标库中

1
2
3
4
5
6
7
8
--删除目标库中的参数文件
rm init.ora spfileora11g.ora


--拷贝源库参数文件到目标库中
scp /oracle/app/oracle/product/11.2.0/db_1/dbs/init.ora 目标ip://oracle/app/oracle/product/11.2.0/db_1/dbs

scp /oracle/app/oracle/product/11.2.0/db_1/dbs/spfileora11g.ora 目标ip://oracle/app/oracle/product/11.2.0/db_1/dbs

查看下目标库中有没有cat spfileora11g.ora里这三个参数目录,
如果没有查询到,需要在目标库中新建

1
2
3
4
5
6
7
8
9
--审计目录
*.audit_file_dest='/oracle/app/oracle/admin/ora11g/adump'
--控制文件目录
*.control_files='/oradata/ora11g/coCC")"ntrol01.ctl','/oradata/ora11g/control02.ctl'
--安装文件目录
*.diagnostic_dest='/oracle/app/oracle'
--删除目标库中的数据文件及目录
cd $ORACLE_BASE
类似于这个文件目录 /oradata/ora11g

image

修改目标库的 .bash_profile 文件和源库的一致
image

1
2
3
4
5
6
archive log list; 查看归档目录
--删除目标库中的归档文件
然后从源库的归档目录中 复制 到目标库的归档目录中

cd rmanback/datafile
复制到目标库中
备份恢复
1
2
3
4
5
6
7
8
9
10
11
sqlplus / as sysdba
启动到nomount状态,确认参数文件里目录是否都存在
startup nomount;

--RMAN恢复控制文件
oracle$ rman target/
RMAN> restore controlfiles from '/rmanback/datafile/要恢复的控制文件.dbf'

--rman中启动数据库状态到mount状态
RMAN> sql 'alter database mount';
RMAN> restore database;

查看下快速恢复区/审计目录/数据文件目录,这三个目录有没有,没有一定要创建下
image

1
RMAN> crosscheck archivelog all; --校验检查控制文件和实际物理文件的区别

image

如果归档文件校验有问题,将有问题的文件注册下
image
如果报错,那么要手动的将截止日期作为结束点,需要手动下操作就行,归档就结束了

image

1
2
3
4
5
6
7
8
ORACLE开库
RMAN> sql 'alter database open RESETLOGS'

恢复后再确认下

select status from v$instance;

select table_name from user_tables;
 请作者喝咖啡
 评论
评论插件加载失败
正在加载评论插件