先假设一种情况,假设有一个数据库,数据量是2T。 如果要对这个数据库进行迁移,在不考虑磁盘空间的前提下,要求在最短的时间内完成切换操作。
在不考虑磁盘空间前提下,备份时间,网络传输时间,恢复时间。 这个时间对于7*24*365的系统来说,肯定是没办法承受的。
如果在考虑下备份空间+迁移后的空间。 这个对磁盘的开销也是非常大。
在我的前一篇Blog里,提到了RMAN的异机恢复,这种方法可以缩短我们DB的迁移时间。 但是空间问题还没有解决。在这一篇,我们主要从迁移时间的角度来考虑这个问题。
RMAN 备份异机恢复 并创建新DBID
http://blog.csdn.net/tianlesoftware/archive/2011/03/11/6240983.aspx
在异机恢复中,我们最后对db 是用open resetlogs的方式打开的。
我们先看open resetlogs的影响:
(1)如果current online redo可以访问,那么对其进行归档操作。 然后清空所有online redo 的内容,并将日志的序列设置为1.
(2)如果online redo 不存在,就创建online redo。 这个位置是在控制文件里记录的。 我们在做RMAN 异机恢复的时候,验证过这点。
(3)开始一个新的incarnation,初始化redo thread和 online redo 在控制文件中的记录。
比如:将redo thread 的状态设置为closed,在redo thread的记录中设置当前的log sequence 为1. 设置每个redo thread 的checkpoint 到log sequence 1。
从每个thread 选择一个redo log,并设置其sequence 为1.
(4)在控制文件中更新当前所有的datafile 和online redo logs,及以后的归档文件用新的resetlog SCN 和 time stamp。
注意: open resetlogs 不会充值SCN.
一般用open resetlogs 打开数据库之后,建议立即对数据库进行一次备份。
下面是一个迁移的测试:
1. 在Target 库rman 备份数据库,并将备份copy到Auxiliary库的相同位置
RMAN 的恢复对备份位置有讲究,对于nocatalog模式下,这些备份的位置是写在控制文件里的。所以目录结构要相同。
关于RMAN 的shell 备份脚本,参考:
Nocatalog 下的RMAN 增量备份 shell脚本
http://blog.csdn.net/tianlesoftware/archive/2011/01/26/6164931.aspx
[oracle@qs-dmm-rh1 backup]$ scp * 192.168.2.43:/u01/backup
oracle@192.168.2.43's password:
arch_23m709vi_1_1_20110312 100% 6431KB 6.3MB/s 00:00
ctl_file_24m709vn_1_1_20110312 100% 9568KB 9.3MB/s 00:01
dave_lev0_1rm709u9_1_1_20110312 100% 610MB 12.0MB/s 00:51
dave_lev0_1sm709u9_1_1_20110312 100% 399MB 11.7MB/s 00:34
dave_lev0_1tm709u9_1_1_20110312 100% 4728KB 4.6MB/s 00:00
dave_lev0_1vm709uk_1_1_20110312 100% 1344KB 1.3MB/s 00:01
dave_spfile_25m709vp_1_1_20110312 100% 96KB 96.0KB/s 00:00
2. 在Auxiliary库创建相关的目录,口令文件,和初始化文件。
初始化文件可以直接从Target copy过来。如果目录结构相同的话,都不用修改参数。
3. 用初始化文件将数据库启动到noumout状态。
SQL> startup nomount pfile=?/dbs/initdave.ora
ORACLE instance started.
Total System Global Area 196681728 bytes
Fixed Size 1335444 bytes
Variable Size 83890028 bytes
Database Buffers 109051904 bytes
Redo Buffers 2404352 bytes
4. 恢复控制文件
RMAN> restore controlfile from '/u01/backup/ctl_file_2qm72jcf_1_1_20110312';
Starting restore at 12-MAR-11
using channel ORA_DISK_1
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
output file name=/u01/oradata/control01.ctl
output file name=/u01/oradata/control02.ctl
output file name=/u01/oradata/control03.ctl
Finished restore at 12-MAR-11
5. 将数据库启动到mout状态
SQL> alter database mount;
Database altered.
6. restore 数据库
RMAN> restore database;
Starting restore at 12-MAR-11
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=20 device type=DISK
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/dave/undotbs01.dbf
channel ORA_DISK_1: reading from backup piece /u01/backup/dave_lev0_28m70ar0_1_1_20110312
channel ORA_DISK_1: piece handle=/u01/backup/dave_lev0_28m70ar0_1_1_20110312 tag=DAVE_LEV0
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/dave/users01.dbf
channel ORA_DISK_1: reading from backup piece /u01/backup/dave_lev0_2am70ara_1_1_20110312
channel ORA_DISK_1: piece handle=/u01/backup/dave_lev0_2am70ara_1_1_20110312 tag=DAVE_LEV0
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00002 to /u01/app/oracle/oradata/dave/sysaux01.dbf
channel ORA_DISK_1: reading from backup piece /u01/backup/dave_lev0_27m70ar0_1_1_20110312
channel ORA_DISK_1: piece handle=/u01/backup/dave_lev0_27m70ar0_1_1_20110312 tag=DAVE_LEV0
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/dave/system01.dbf
channel ORA_DISK_1: reading from backup piece /u01/backup/dave_lev0_26m70ar0_1_1_20110312
channel ORA_DISK_1: piece handle=/u01/backup/dave_lev0_26m70ar0_1_1_20110312 tag=DAVE_LEV0
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:25
Finished restore at 12-MAR-11
7. recover 数据库
RMAN> recover database;
Starting recover at 12-MAR-11
using channel ORA_DISK_1
starting media recovery
channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=24
channel ORA_DISK_1: reading from backup piece /u01/backup/arch_2cm70as8_1_1_20110312
channel ORA_DISK_1: piece handle=/u01/backup/arch_2cm70as8_1_1_20110312 tag=ARC_BAK
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
archived log file name=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_24_745352047.dbf thread=1 sequence=24
channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=25
channel ORA_DISK_1: reading from backup piece /u01/backup/arch_2dm70as8_1_1_20110312
channel ORA_DISK_1: piece handle=/u01/backup/arch_2dm70as8_1_1_20110312 tag=ARC_BAK
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
archived log file name=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_25_745352047.dbf thread=1 sequence=25
unable to find archived log
archived log thread=1 sequence=26
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 03/12/2011 00:58:04
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 26 and starting SCN of 1055401
8. 在主库进行一些事务操作
SQL> create table anhui as select * from all_tables;
Table created.
SQL> commit;
Commit complete.
SQL> alter system switch logfile;
System altered.
9. 关闭主库,迅速把主库的归档文件和online redo 复制到Auxiliary库
[oracle@qs-dmm-rh1 archivelog]$ scp * 192.168.2.43:/u01/archivelog
oracle@192.168.2.43's password:
1_26_745352047.dbf 100% 1509KB 1.5MB/s 00:00
[oracle@qs-dmm-rh1 dave]$ scp redo* 192.168.2.43:/u01/app/oracle/oradata/dave/
oracle@192.168.2.43's password:
redo01.log 100% 50MB 16.7MB/s 00:03
redo02.log 100% 50MB 12.5MB/s 00:04
redo03.log 100% 50MB 12.5MB/s 00:04
[oracle@qs-dmm-rh1 dave]$
10. 再次recover database
RMAN> recover database;
Starting recover at 12-MAR-11
using channel ORA_DISK_1
starting media recovery
archived log for thread 1 with sequence 26 is already on disk as file /u01/app/oracle/oradata/dave/redo02.log
archived log for thread 1 with sequence 27 is already on disk as file /u01/app/oracle/oradata/dave/redo03.log
archived log file name=/u01/app/oracle/oradata/dave/redo02.log thread=1 sequence=26
archived log file name=/u01/app/oracle/oradata/dave/redo03.log thread=1 sequence=27
media recovery complete, elapsed time: 00:00:05
Finished recover at 12-MAR-11
11. 打开数据库
SQL>alter database open resetlogs;
SQL> select count(*) from dave;
COUNT(*)
----------
71157
12. 重建Temp 表空间
在恢复的时候,会自动创建TEMP 表空间。但是和布豆聊到这个问题的时候,他说这个temp 文件好像没有起到作用。 尤其是数据量大的时候,所以他建议重建添加temp 数据文件。
SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/dave/temp01.dbf
SQL> alter tablespace temp add tempfile '/u01/app/oracle/oradata/dave/temp02.dbf ' size 8192M;
Tablespace altered.
SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/dave/temp01.dbf
/u01/app/oracle/oradata/dave/temp02.dbf
SQL> alter database tempfile '/u01/app/oracle/oradata/dave/temp01.dbf' offline;
Database altered.
SQL> alter database tempfile '/u01/app/oracle/oradata/dave/temp01.dbf' drop including datafiles;
Database altered.
SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/dave/temp02.dbf
---------------------------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1 群:62697716(满); DBA2 群:62697977(满) DBA3 群:62697850(满)
DBA 超级群:63306533(满); DBA4 群: 83829929 DBA5群: 142216823
聊天 群:40132017
--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请
分享到:
相关推荐
Rman的异机恢复的作用很多,比如数据库迁移,数据库恢复,基于数据库架构调整的还原恢复(比如从RAC-->>单实例,ASM-->>文件系统),有时候搭建测试环境也会用到,不过,这种情况下相信选择数据库复制方式比较方便。...
说明:本文为Oracle RAC集群转单实例/RMAN异机恢复/RMAN迁移/RMAN备份恢复操作概要方便用户查阅 温馨提示:如果您发现本文哪里写的有问题或者有更好的写法请留言或私信我进行修改优化 步骤 –全库备份(最好停止业务...
利用Rman的全备(当时的控制文件controlfile,pfile/spfile,datafiles,redo log等文件), 将 源数据库上的数据恢复到新机上,或者说是将源数据库(迁移)至新机上。
使用RMAN迁移数据库属于数据库的物理备份与恢复范畴,整个过程中数据库的相关信息是完整地镜像。因此,基于此种方式还原恢复的数据库用于测试会使得与真实的生产环境差异相对较小。本文描述了使用RMAN来还原Oracle ...
rman异机迁移 迁移 ORACLE数据库和应用异构迁移最佳实践_樊文凯 数据库信息收集表-Oracle数据库迁移升级场景-云和恩墨 零停机时间完成Oracle 上云迁移 OGG能够复制迁移包含CLOB字段的table? Oracle数据库迁移从...
10-15 Oracle RMAN备份 恢复 16 华为考试之simpana实验 17 备份组网和备份介质 18 华为备份规划题 19-25 oracle主备容灾 26-27 BCManager 28-30 oracle之存储双活实验 31-38 Oracle RAC搭建 迁移 37 suse异构...
同 endian 格式的系统间迁移数据的步骤。 第一步是从源系统拷贝一份 full backup 到目标系统。之后,使用一系列的增量备份(每一份都比前一份要小),这样在停 机前可以做到目标系统的数据和源系统“几乎”一致。...
同 endian 格式的系统间迁移数据的步骤。 第一步是从源系统拷贝一份 full backup 到目标系统。之后,使用一系列的增量备份(每一份都比前一份要小),这样在停 机前可以做到目标系统的数据和源系统“几乎”一致。...
Rman备份和恢复 204 实验116:rman的连接,report和list命令 204 实验117:rman的copy命令 205 实验118:rman的backup命令 206 实验119:rman的backup备份增量级别 206 实验120:rman的backup备份片大小的限制 209 ...
RAC双节点迁移至单实例数据+备份恢复+rhel6.9 二课程特色 1.???????以生产需求为导向,以生产为驱动 2.???????手把手教学,手把手实践。 3.???????贴近生产,贴近实战。 4.???????绝不浪费大家时间,绝对物有所值,...
Oracle RMAN 单实例异机迁移恢复(版本:11GR2) Oracle存储过程性能分析案例 Oracle技术加油站:快速处理紧急性能问题的工具与经验 Oracle诊断性能问题时常用脚本工具 PostgreSQL日常工作分享 PostgreSQL实践分享 ...
12.7其他备份恢复技术 12.7.1用户管理备份 12.7.2导入导出工具数据泵 12.7.3跨平台数据迁移 12.7.4可传输表空间 12.7.5使用RMAN工具复制数据库 12.8本章小结 第13章 RAC恢复 13.1恢复技术基础 13.1.1恢复...
oracle常用操作技巧,包括oracle安装步骤、网络配制、EM、备份、RMAN的备份与恢复、逻辑备份、闪回、ASM(管理存储软件)、数据迁移、安全控制、oracle安装及常规操作、SQL语句、函数、SQL语句、权限、体系结构、空间...
在源数据库上,将使用RMAN备份到OSS中。 然后,在目标端,RMAN将通过正确的还原/恢复过程帮助从备份实例化数据库。 为了使停机时间最少,将使用0级+ 1级备份数。 该工具已使用Ansible编写,并使用Python(/ modules...
CruiseYoung提供的带有详细书签的电子书籍目录 ... OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-... 12.1 使用同等联接和非同等联接编写SELECT语句访问多个表的数据 398 12.1.1 联接的类型 398 12.1.2 ...
CruiseYoung提供的带有详细书签的电子书籍目录 ... 对应的书籍资料见: OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051... 12.1 使用同等联接和非同等联接编写SELECT语句访问多个表的数据 398 12.1.1 联接的类型...
7.2.7 用备份控制文件进行恢复 187 7.3 编写数据库备份脚本 188 7.4 备份归档重做日志 189 7.5 Oracle Data Pump简介 190 7.6 使用Oracle Data Pump Export 191 7.7 使用Oracle Data Pump Import 195 7.8 ...