首页 > 数据库 > Oracle > 数据库重演(rac转单机)
一、 测试背景
二、 测试概况
l 时间、地点
l 测试主要目的
l 主要工作内容
三、 测试环境
测试环境
数据库环境
四、 测试步骤及结果
五、总结
我公司核心数据库采用的是centos操作系和oracle 11g数据库。备份方式采用了物理备份以及逻辑备份两种方式,将备份放在本地。生产环境为rac,测试环境为单实例文件系统,
需要将生产rac的备份转为测试环境单实例的oracle数据库。
此次测试模拟生产数据库、主机发生灾难后的数据恢复全过程,为灾难恢复提供经验。
时间:2016年7月
地点:北京中数智汇有限公司
验证数据库备份在主机发生灾难后的可恢复性
验证数据库备份的有效性
物理备份恢复:
测试数据随机选择生产一个月内的物理备份,本次数据库重演测试选择20151226日的
备份数据进行测试环境的上的演练。
逻辑备份恢复:
测试数据随机选择生产一个月内的逻辑备份,本次数据库重演测试选择20151229日的
备份数据进行测试环境的上的演练。
|
机器类型 |
Os类型 |
主机名称 |
Ip地址 |
备注 |
|
Dell |
6.6 |
Node |
192.168.11.17 |
将生产rac备份的恢复成单实例 |
注:物理备份压缩后大概33G左右,逻辑备份10G左右
1)根据备份还原参数文件
RMAN> restore spfile
to '/backup/tt1.txt' from '/backup/ RmanBackup /full_DAAS_894574806_325_1';
RMAN> shutdown
immediate
2)修改参数文件
[oracle@node
backup]$strings tt.txt >tt1.txt
[oracle@node backup]$ vi
tt1.txt
*.memory_target=20000M
*.audit_file_dest='/u01/app/oracle/admin/DAAS/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/data/DAAS/control01.ctl','/data/DAAS/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='DAAS'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP)
(SERVICE=DAASXDB)'
*.job_queue_processes=1000
*.open_cursors=350
*.parallel_max_servers=8
*.processes=1500
*.remote_login_passwordfile='exclusive'
*.session_cached_cursors=300
undo_tablespace='UNDOTBS1'
undo_tablespace='UNDOTBS2'
注:需要创建adump目录和控制文件的目录
Startup nomount
pfile='tt1.txt'
3)创建spfile文件
Create spifle from
pfile='/backup/tt1.txt';
或者 create spfile from memory;
Startup force
注:将数据库启动到nomount 状态;
restore controlfile from
'/backup/RmanBackup/20151226/ctl_DAAS_899504029_1030_1';
注:将数据库启动到mount状态
将备份集注册到数据库中:
catalog start with
'/backup/20160625';
1)restore 数据文件
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;
allocate channel c6 type
disk;
set newname for datafile
'+DG1/daas/system01.dbf' to '/data/DAAS/system01.dbf';
set newname for datafile
'+DG1/daas/sysaux01.dbf' to '/data/DAAS/sysaux01.dbf';
set newname for datafile
'+DG1/daas/undotbs01.dbf' to '/data/DAAS/undotbs01.dbf';
set newname for datafile
'+DG1/daas/users01.dbf' to '/data/DAAS/users01.dbf';
set newname for datafile
'+DG1/daas/undotbs02.dbf' to '/data/DAAS/undotbs02.dbf';
set newname for datafile
'+DG1/daas/gsinfo_data01.dbf' to '/data/DAAS/gsinfo_data01.dbf';
set newname for datafile
'+DG1/daas/apex01.dbf' to '/data/DAAS/apex01.dbf';
set newname for datafile
'+DG1/daas/datafile/mgmt_ecm_depot_ts.272.890044487' to '/data/DAAS/mgmt_ecm_depot_ts.272.890044487';
set newname for datafile
'+DG1/daas/datafile/mgmt_tablespace.283.890044487' to
'/data/DAAS/mgmt_tablespace.283.890044487';
set newname for datafile
'+DG1/daas/datafile/mgmt_ad4j_ts.284.890044489' to
'/data/DAAS/mgmt_ad4j_ts.284.890044489';
restore database skip tablespace DATAMART ;
switch datafile all;
}
2)recover 数据文件
recover database skip tablespace DATAMART ;
recover database skip
tablespace DATAMART until scn 6711709887;
3)恢复redo文件
alter database rename
file '+DG1/daas/redo01a.log' to '/data/DAAS/redo1a.log';
alter database rename
file '+DG1/daas/redo01b.log' to '/data/DAAS/redo1b.log';
alter database rename
file '+DG1/daas/redo03a.log' to '/data/DAAS/redo3a.log';
alter database rename
file '+DG1/daas/redo03b.log' to '/data/DAAS/redo3b.log';
alter database rename
file '+DG1/daas/redo02a.log' to '/data/DAAS/redo2a.log';
alter database rename
file '+DG1/daas/redo04a.log' to '/data/DAAS/redo4a.log';
alter database rename
file '+DG1/daas/redo04b.log' to '/data/DAAS/redo4b.log';
alter database rename
file '+DG1/daas/redo02b.log' to '/data/DAAS/redo2b.log';
alter database rename
file '+DG1/daas/redo05a.log' to '/data/DAAS/redo5a.log';
alter database rename
file '+DG1/daas/redo05b.log' to '/data/DAAS/redo5b.log';
alter database rename
file '+DG1/daas/redo06a.log' to '/data/DAAS/redo6a.log';
alter database rename
file '+DG1/daas/redo06b.log' to '/data/DAAS/redo6b.log';
alter database open resetlogs;
如果报错如下:
·
o
§
§
§
§
§
§
§
·
o
-----------------------------------------
----------------*
1 500M CLEARING_CURRENT
3 500M CLEARING
5 500M CLEARING
4 500M CLEARING
6 500M CLEARING
2 500M CLEARING_CURRENT
6 rows selected.
SQL> alter database
clear logfile group 1;
Database altered.
SQL> alter database
clear logfile group 2;
Database altered.
SQL> alter database
open resetlogs;
1)删除老的表空间文件
alter database tempfile
'+DG1/daas/temp01.dbf' drop;
2)添加新位置临时表空间文件
alter tablespace temp
add tempfile '/data/DAAS/temp01.dbf' size 20G autoextend on maxsize unlimited;

7、验证数据
--源端
Spool /backup/count.sql
select 'select count(*) from
'|| table_name||';'
from user_tables;
Spool off
select count(*) from
gsinfo.t_order where to_char(submit_time,'yyyy-mm-dd hh24:mi:ss') between
'2016-06-25 00:00:00' and '2016-06-25 22:00:00';
COUNT(*)
----------
743113
--目标端
在gsinfo下执行count.sql 进行数据统计
select count(*) from
gsinfo.t_order where to_char(submit_time,'yyyy-mm-dd hh24:mi:ss') between
'2016-06-25 00:00:00' and '2016-06-25 22:00:00';
COUNT(*)
----------
743113
步骤:
create directory data as
'/backup';
grant read,write on
directory data to system;
create bigfile
tablespace data datafile '/database/test/data01.dbf' size 30G autoextend on
maxsize unlimited extent management local segment space management auto;
alter database default
tablespace data;
create user gsinfo identified by oracle;
grant create session to
gsinfo;
grant resource to
gsinfo;
5、导入备份
impdp \'/ as sysdba\'
directory=data dumpfile= gsinfo_20151229.dmp
schemas=gsinfo
6、验证数据
--源端
Spool /backup/count.sql
select 'select count(*) from
'|| table_name||';'
from user_tables;
Spool off
--目标端
在gsinfo下执行count.sql 进行数据统计
物理备份:
物理备份在测试环境正常恢复,物理备份重演成功。
逻辑备份:
逻辑备份在测试环境正常恢复,逻辑备份重演成功。
建议:最好将生产数据库的备份每个月又一次在测试环境至少重演一次,保证数据库备份的有效性。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30345407/viewspace-2130315/ ,如需转载,请注明出处,否则将追究法律责任。