共计 5375 个字符,预计需要花费 14 分钟才能阅读完成。
这篇文章主要介绍了如何利用 RMAN 备份重建数据库,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。
有时数据库由于某些原因需要全部销毁重建,之前的 RMAN 备份是存在的,希望利用,如系统被重建而导致数据库重建,或者数据库备份后需要恢复到其它机器上。
一、重建前的准备
1、准备测试用表
在 RMES 用户下创建测试用表,插入并提交数据
create table
rmes.r_rmantest_t(a varchar2(30)) tablespace rmes;
insert into
rmes.r_rmantest_t values(Before rman backup
commit;
做一次检查点操作,保证数据写入到数据文件中
alter system
checkpoint;
2、准备备份路径
创建数据文件备份路径 e:\rman_bak\mes
创建控制文件和初始化参数文件备份路径 e:\rman_bak\mes\control_bak
创建联机日志文件备份路径 e:\rman_bak\mes\redolog
3、配置 RMAN 备份参数
登录 RMAN,查看并配置 RMAN 的备份参数
show all;
控制文件和 spfile 文件自动备份设为 on,并配置备份路径
CONFIGURE CONTROLFILE
AUTOBACKUP ON;
CONFIGURE
CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO e:\rman_bak\mes\control_bak\%F
配置数据文件备份路径
CONFIGURE
CHANNEL DEVICE TYPE DISK FORMAT e:\rman_bak\mes\%d_%u_%c_%T
确认备份参数的更改
show all;
4、全备份
backup as
compressed backupset database plus archivelog;
5、更新测试用表
完成备份后再插入一条记录到测试表中
insert into
rmes.r_rmantest_t values(After rman backup
commit;
不做检查点,这样数据只记录在联机日志中,不会马上写入数据文件。
6、备份联机日志文件
在操作系统下将联机日志文件复制到备份目录 e:\rman_bak\mes\redolog
所有的备份都已完备,现在可以在本机上用 DBCA 销毁数据库,或者将备份文件转出到其他机器上进行数据库重建。
二、重建数据库
1、重建实例服务
在操作系统命令提示符下执行 oradim 命令,创建名为 mes 的服务,并设置环境变量
C:\ oradim
-new -sid mes
C:\ set
oracle_sid=mes
2、还原服务器参数文件并重建丢失的目录
登陆 RMAN
C:\Users\Administrator rman
target /
恢复管理器: Release 11.2.0.4.0
– Production on 星期四 5 月 3 16:55:47 2018
Copyright (c) 1982, 2011,
Oracle and/or its affiliates. All rights
reserved.
已连接到目标数据库 (未启动)
使用之前的备份,在非加载模式下还原 spfile 服务器参数文件
RMAN startup nomount
启动失败: ORA-01078: failure
in processing system parameters
LRM-00109:
???????????????? C:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\INITMES.ORA
在没有参数文件的情况下启动 Oracle
实例以检索 spfile
Oracle 实例已启动
系统全局区域总计 1068937216 字节
Fixed Size 2288080 字节
Variable Size 285214256 字节
Database Buffers 775946240 字节
Redo Buffers 5488640 字节
RMAN restore spfile
from e:\rman_bak\mes\control_bak\C-2056489697-20180503-01
启动 restore 于 2018-05-03
16:58:49
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=396
设备类型 =DISK
通道 ORA_DISK_1: 正在从
AUTOBACKUP e:\rman_bak\mes\control_bak\C-2056489697-20180503-01 还原 spfile
通道 ORA_DISK_1: 从
AUTOBACKUP 还原 SPFILE 已完成
完成 restore 于 2018-05-03
16:58:50
创建 pfile 文件
RMAN sql create pfile
from spfile
sql 语句: create pfile from
spfile
Windows 中该文件默认位置为 %ORACLE_HOME%\database\INITmes.ORA
打开 pfile 文本文件,将文件中提及的目录创建起来,如本例中需要保证以下目录存在
C:\Oracle\admin\mes\adump\
D:\ORADATA\MES\
E:\FAST_RECOVERY_AREA\MES\
E:\fast_recovery_area\mes\archivelog\
3、还原控制文件
用还原的服务器参数文件重启实例到非加载模式,还原控制文件
RMAN shutdown abort
Oracle 实例已关闭
RMAN startup nomount
已连接到目标数据库 (未启动)
Oracle 实例已启动
系统全局区域总计 1286066176 字节
Fixed Size 2280896 字节
Variable Size 771752512 字节
Database Buffers 503316480 字节
Redo Buffers 8716288 字节
RMAN restore
controlfile from e:\rman_bak\mes\control_bak\C-2056489697-20180503-01
启动 restore 于 2018-05-03
17:06:41
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=156
设备类型 =DISK
通道 ORA_DISK_1: 正在还原控制文件
通道 ORA_DISK_1: 还原完成, 用时:
00:00:02
输出文件名 =D:\ORADATA\MES\CONTROL01.CTL
输出文件名 =E:\FAST_RECOVERY_AREA\MES\CONTROL02.CTL
完成 restore 于 2018-05-03
17:06:43
4、还原数据库
用还原的控制文件加载数据库
RMAN alter database
mount;
数据库已装载
释放的通道: ORA_DISK_1
还原数据库
RMAN restore
database;
启动 restore 于 2018-05-03
17:19:26
使用通道 ORA_DISK_1
通道 ORA_DISK_1:
正在开始还原数据文件备份集
通道 ORA_DISK_1:
正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件
00001 还原到 D:\ORADATA\MES\SYSTEM01.DBF
通道 ORA_DISK_1: 将数据文件
00002 还原到 D:\ORADATA\MES\SYSAUX01.DBF
通道 ORA_DISK_1: 将数据文件
00003 还原到 D:\ORADATA\MES\UNDOTBS01.DBF
通道 ORA_DISK_1: 将数据文件
00004 还原到 D:\ORADATA\MES\USERS01.DBF
通道 ORA_DISK_1: 将数据文件
00005 还原到 D:\ORADATA\MES\EXAMPLE01.DBF
通道 ORA_DISK_1: 将数据文件
00006 还原到 D:\ORADATA\MES\CMES01.DBF
通道 ORA_DISK_1: 将数据文件
00007 还原到 D:\ORADATA\MES\RMES01.DBF
通道 ORA_DISK_1: 将数据文件
00008 还原到 D:\ORADATA\MES\HMES01.DBF
通道 ORA_DISK_1: 将数据文件
00009 还原到 D:\ORADATA\MES\INDX01.DBF
通道 ORA_DISK_1: 将数据文件
00010 还原到 D:\ORADATA\MES\FDA01.DBF
通道 ORA_DISK_1: 正在读取备份片段
E:\RMAN_BAK\MES\MES_85T1VQN6_1_20180503
通道 ORA_DISK_1: 段句柄 =
E:\RMAN_BAK\MES\MES_85T1VQN6_1_20180503 标记 = TAG20180503T163757
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时:
00:00:56
完成 restore 于 2018-05-03
17:20:23
期间可能会遭遇 ORA-19693:已包括备份片段的错误提示,这个是由于控制文件中的备份信息被重复编目所致。可以先将备份文件路径改名,然后进行一次交叉检查 crosscheck backup,再用 delete
expired backup 删除和注销备份信息,之后再进行重新编目注册备份 catalog start with …,经此处理后再进行 restore 还原应该可以解决问题。
5、拷回联机日志文件
确认联机日志文件应当存放的位置
17:16:07 SYS @ mes AS
SYSDBA select member from v$logfile;
MEMBER
————————————————————
D:\ORADATA\MES\REDO03.LOG
D:\ORADATA\MES\REDO02.LOG
D:\ORADATA\MES\REDO01.LOG
在操作系统下将备份在 e:\rman_bak\mes\redolog 中的联机日志文件拷回到指定的联机日志目录中。
6、恢复并打开数据库
如果之前使用了块改变跟踪,则应当在执行恢复前先取消块改变跟踪,因为块改变跟踪的 DBF 数据文件已不存在,RMAN 备份时不会去备份它
alter database
disable block change tracking;
恢复数据库
RMAN recover
database;
启动 recover 于 2018-05-03
17:21:18
使用通道 ORA_DISK_1
正在开始介质的恢复
线程 1 序列 7 的归档日志已作为文件
D:\ORADATA\MES\REDO01.LOG 存在于磁盘上
线程 1 序列 8 的归档日志已作为文件
D:\ORADATA\MES\REDO02.LOG 存在于磁盘上
归档日志文件名 =D:\ORADATA\MES\REDO01.LOG
线程 =1 序列 =7
归档日志文件名 =D:\ORADATA\MES\REDO02.LOG
线程 =1 序列 =8
介质恢复完成, 用时: 00:00:01
完成 recover 于 2018-05-03
17:21:23
打开数据库,重置联机日志序列
RMAN alter database
open resetlogs;
数据库已打开
7、验证数据的恢复
查看测试用表,验证数据是否完整恢复
17:18:45 SYS @ mes AS
SYSDBA select * from rmes.r_rmantest_t;
A
——————————
Before rman backup
After rman backup
至此,完成了 mes 数据库的重新创建和恢复。
8、RMAN 异地恢复需要注意的问题
根据备份文件存放的目录位置,修改指向后再还原
catalog start
with e:\rman_bak\mes
restore
database;
从 10g 恢复到 11g 环境时需注意:
1)恢复前执行预升级工具脚本 utlirp.sql
2)恢复数据库
3)以 startup upgrade 方式打开数据库
4)执行升级脚本 catupgrd.sql
如果事先没有执行预升级脚本,则执行以上脚本时会报错,因为表 registry$database 缺少 TZ_VERSION 字段。解决方法是修改表 registry$database,增加 tz_version 字段,number 类型,并重新插入记录
truncate
table registry$database;
insert
into registry$database
(platform_id,platform_name,edition,tz_version)
values
((select platform_id from v$database),
(select
platform_name from v$database),
null,
(select version
from v$timezone_file));
之后再执行升级脚本 catupgrd.sql 就没有问题了。
感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“如何利用 RMAN 备份重建数据库”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!