热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

缩短Oracle数据库迁移过程中的停机时间

欢迎进入Oracle社区论坛,与200万技术人员互动交流进入你可以组合上述方法来迁移模式对象,比如对小表和模式使用导出导入方法,而对大表使用在数据库连接上使用并行直接载入插入法.3.创建索引并激活约束限制(需要系统停机)*第一种方法:使用前面

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 你可以组合上述方法来迁移模式对象,比如对小表和模式使用导出/导入方法,而对大表使用在数据库连接上使用"并行直接载入插入法". 3.创建索引并激活约束限制(需要系统停机) * 第一种方法:使用前面

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

  你可以组合上述方法来迁移模式对象,比如对小表和模式使用导出/导入方法,而对大表使用在数据库连接上使用"并行直接载入插入法".

  3.创建索引并激活约束限制(需要系统停机)

  * 第一种方法:使用前面所述的导出结构文件来顺序创建索引和约束限制

  命令如下:

  imp sys/password file=structure.dmp cOnstraints=y indexes=y full=y ignore=y

  这种方法有问题-使用导入方式,我们实际上不能指定并发的自定义级别来创建索引,也不能指定NOLOGGING属性。即使我们使用不在正式文件中记 录的特殊参数来关闭对磁盘的重做写操作,NOLOGGING属性仍然能提高性能,通过设置更少的检测点和使用更少的CPU.幸运地,存在一个可以绕过这个 问题的导入特性,它运行我们从导出文件中析取出索引创建脚本。

  * 第二种方法:使用导入操作的indexfile选项单独创建索引,然后按照通常方式使用导入创建约束限制。

  很长的索引创建时间可以被极大地缩短,当使用并行执行方式和属性nologging时。由于导入的语法本身不允许我们指定创建索引的方式,我们不得不先得到索引创建脚本,然后根据我们的实际需要修改它们。导入的indexfile选项使用起来非常便利,如下所示:

  命令如下:

  imp sys/password file=structure.dmp cOnstraints=y indexes=y full=y ignore=y \

  show=y indexfile=indexes.sql

  上面的例子对单独的和约束索引创建都产生了SQL 数据定义语言(DDL)命令(对于关键约束限制和唯一约束限制,一些索引也暗含被创建)。请注意参数show=y,它指定了不能对数据库做改变,导出文件 仅仅是从头至尾扫描一遍,其间发生的任何索引创建都被存储到使用indexfile选项指定的indexes.sql脚本中。

  接下来,我们可以使用一个文本编辑器打开这个SQL脚本,然后用NOLOGGING代替LOGGING并对每个大索引创建命令添加PARALLEL 子句。我们也可以在脚本开始处使用更改会话命令来修改某些参数,比如sort_area_size 和 db_file_multiblock_read_count,这两个参数能极大地增加创建索引的速度(更多信息请参见数据库性能调优部分)。修改好以 后,使用sqlplus来运行该脚本。

  命令如下:

  sqlplus sys/password @indexes.sql

  索引文件(indexfile)包含独立索引和外键约束或唯一性约束所需的索引,但是不包含约束限制定义本身。为了创建并激活这些约束限制,我们必须再次对structure.dmp运行导入过程,命令如下:

  命令如下:

  imp sys/password file=structure.dmp cOnstraints=y indexes=n full=y ignore=y

  在上面的命令中我们设置了indexes=n,因为它们在前面的步骤中已经被创建了。同时,因为所有所需的索引都已经存在,创建索引约束应该完成的非常快,由于无需对唯一键/主键创建索引

  4.验证自从数据库结构导出后源数据库中没有对象定义被改变(于步骤2或步骤3同时进行)

  * 查询上面所述的dba_segments并将任何新对象迁移到新数据库中去,如果合适的话(例如使用企业管理器或者Toad来析取单个对象的"数据定义语 言")。不应该有很多新对象或者根本就不应该有新对象,因为数据库结构导出后由于程序服务器的配置就应该被冻结而不能改变。这个任务通常可以和数据迁移或 索引创建同时进行。

  注意:假如你使用"直接载入"并且在相关联表上关闭所有索引的话,不应该产生任何巨大的回滚和重做。这也是为什么在数据载入过程中应关闭主键/惟一键约束限制的原因之一,因为它们都需要索引支持。

[1] [2]


推荐阅读
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • PHP 图形函数中实现汉字显示的方法
    本文详细介绍了如何在 PHP 的图形函数中正确显示汉字,包括具体的步骤和注意事项,适合初学者和有一定基础的开发者阅读。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • Windows环境下Oracle数据库迁移实践
    本文详细记录了一次在Windows操作系统下将Oracle数据库的控制文件、数据文件及在线日志文件迁移至外部存储的过程,旨在为后续的集群环境部署做好准备。 ... [详细]
  • PHP中Smarty模板引擎自定义函数详解
    本文详细介绍了如何在PHP的Smarty模板引擎中自定义函数,并通过具体示例演示了这些函数的使用方法和应用场景。适合PHP后端开发者学习。 ... [详细]
  • MVC模式下的电子取证技术初探
    本文探讨了在MVC(模型-视图-控制器)架构下进行电子取证的技术方法,通过实际案例分析,提供了详细的取证步骤和技术要点。 ... [详细]
  • 本文提供了多种有效的方法来解决RPC(远程过程调用)服务器不可用的问题,包括通过修改注册表、使用SC命令以及利用故障恢复控制台等技术手段。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • Bootstrap Paginator 分页插件详解与应用
    本文深入探讨了Bootstrap Paginator这款流行的JavaScript分页插件,提供了详细的使用指南和示例代码,旨在帮助开发者更好地理解和利用该工具进行高效的数据展示。 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • HTML前端开发:UINavigationController与页面间数据传递详解
    本文详细介绍了如何在HTML前端开发中利用UINavigationController进行页面管理和数据传递,适合初学者和有一定基础的开发者学习。 ... [详细]
  • 在CentOS 7中部署Nginx并配置SSL证书
    本文详细介绍了如何在CentOS 7操作系统上安装Nginx服务器,并配置SSL证书以增强网站的安全性。适合初学者和中级用户参考。 ... [详细]
  • 实现Win10与Linux服务器的SSH无密码登录
    本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ... [详细]
author-avatar
善达集团_187
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有