数据库重演
一、 测试背景
二、 测试概况
l 时间、地点
l 测试主要目的
l 主要工作内容
三、 测试环境
测试环境
数据库环境
四、 测试步骤及结果
五、总结
测试背景
我公司核心数据库采用的是centos操作系和oracle 11g数据库。备份方式采用了物理备份以及逻辑备份两种方式,将备份放在本地。生产环境为rac,测试环境为单实例文件系统,
需要将生产rac的备份转为测试环境单实例的oracle数据库。
此次测试模拟生产数据库、主机发生灾难后的数据恢复全过程,为灾难恢复提供经验。
测试概况
时间、地点
时间:2016年7月
地点:北京中数智汇有限公司
测试主要目的
验证数据库备份在主机发生灾难后的可恢复性
验证数据库备份的有效性
主要工作内容
- 在测试服务器上安装和生产相同版本的oracle软件
- 将生产的oracle的物理备份和逻辑备份分别传到测试服务器上
- 分别验证rman 物理备份和逻辑备份
测试数据
物理备份恢复:
测试数据随机选择生产一个月内的物理备份,本次数据库重演测试选择20151226日的
备份数据进行测试环境的上的演练。
逻辑备份恢复:
测试数据随机选择生产一个月内的逻辑备份,本次数据库重演测试选择20151229日的
备份数据进行测试环境的上的演练。
测试环境
测试环境
机器类型 | Os类型 | 主机名称 | Ip地址 | 备注 |
Dell | 6.6 | Node | 192.168.11.17 | 将生产rac备份的恢复成单实例 |
注:物理备份压缩后大概33G左右,逻辑备份10G左右
测试步骤及结果
- 物理备份恢复
- 恢复参数文件
- 恢复控制文件
- 恢复数据文件
- 打开数据库
- 验证数据
- 将生产备份上传至测试服务器并且解压备份
- 切换实例sid: export ORALCE_SID=DAAS
- rman target / startup nomount
- 还原参数文件并修改文件
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博客 ” ,链接:http://blog.itpub.net/30345407/viewspace-2130315/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30345407/viewspace-2130315/