一个大型数据库的迁移过程中,一般只会有很短的停机时间,对于DBA来说,压力可想而之。本文将着重介绍一个缩短停机时间的好方法,详细内容请参考下文。
注:本文中的示例适用于同平台、同版本数据库的迁移。
解决方法如下:
在工作环境中,我们可以通过一个热备份,应用归档恢复数据库到一致的状态,这时数据库可以被只读(read only)打开。
然后我们可以继续应用归档来进行恢复,最后只需要短时间的停机,复制原数据库中的在线日志及归档日志、控制文件到新库中进行恢复,这时只需要极短的时间就可完成恢复。
这个方法可以极大缩短割接时间。下文是一个参考示例的具体步骤:
1.首先,启动数据库
查询归档情况:
SQL> select name from v$archived_log; NAME NAME 已选择15行。 |
归档当前的日志:
SQL> alter system switch logfile; 系统已更改。 |
2.备份数据库
备份脚本:
alter tablespace system begin backup; host copy E:ORACLEORADATAEYGLESYSTEM01.DBF e:oracleorabakSYSTEM01.DBF alter tablespace system end backup; alter tablespace undotbs1 begin backup; host copy E:ORACLEORADATAEYGLEUNDOTBS01.DBF e:oracleorabakUNDOTBS01.DBF alter tablespace undotbs1 end backup; alter tablespace eygle begin backup; host copy E:ORACLEORADATAEYGLEEYGLE01.DBF e:oracleorabakEYGLE01.DBF alter tablespace eygle end backup; |
执行备份:
SQL> @e:a.sql 表空间已更改。 已复制 1 个文件。
已复制 1 个文件。
已复制 1 个文件。
|
3.更改数据并归档部分日志
SQL> insert into eygle.test select *from eygle.test; 已创建224行。 SQL> commit; 提交完成。 SQL> alter system switch logfile; 系统已更改。 SQL> insert into eygle.test select *from eygle.test; 已创建448行。 SQL> commit; 提交完成。 SQL> alter system switch logfile; 系统已更改。 SQL> insert into eygle.test select *from eygle.test; 已创建896行。 SQL> commit; 提交完成。 SQL> shutdown immediate; |
4.执行恢复
恢复备份的数据文件,然后启动数据库。
使用当前日志及控制文件:
SQL> startup mount; Total System Global Area 47259136 bytes
ORA-00279: 更改 197393 (在 11/13/2004 23:32:22 生成) 对于线程 1 是必需的
数据库已更改。 SQL> shutdown immediate; Total System Global Area 47259136 bytes
ORA-00279: 更改 197423 (在 11/13/2004 23:32:51 生成) 对于线程 1 是必需的
数据库已更改。 SQL> shutdown immediate; Total System Global Area 47259136 bytes SQL> recover database using backup controlfile until cancel;
指定日志: {=suggested | filename | AUTO | CANCEL} SQL> alter database open resetlogs; 数据库已更改。 SQL> |
注:读者需要注意中间的部分,因为read only的打开并不影响数据库进一步的恢复(恢复可以分步进行)。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
OpenWorld18大会:Ellison宣布数据库的搜寻和破坏任务
在旧金山举行的甲骨文OpenWorld 2018大会中,甲骨文首席技术官(CTO)兼创始人Larry Elli […]
-
ObjectRocket着力发展Azure MongoDB服务
MongoDB吸引了微软公司的注意力,微软公司计划针对运行于该公司2017年发布的Azure Cosmos D […]
-
数据库和数据仓库的区别在哪儿?
目前,大部分数据仓库还是用数据库进行管理。数据库是整个数据仓库环境的核心,是数据存放的地方和提供对数据检索的支持。
-
如何使用服务来平衡Oracle RAC 数据库工作负载
为不同的应用程序配置不同的服务,DBA可以更有效地平衡集群工作负载,在Oracle RAC数据库环境下实现更好的应用程序性能。