热门标签 | 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]


推荐阅读
  • 本文介绍了一个基于 Java SpringMVC 和 SSM 框架的综合系统,涵盖了操作日志记录、文件管理、头像编辑、权限控制、以及多种技术集成如 Shiro、Redis 等,旨在提供一个高效且功能丰富的开发平台。 ... [详细]
  • MySQL Debug 模式的实现与应用
    本文详细介绍了如何启用和使用 MySQL 的调试模式,包括编译选项、环境变量配置以及调试信息的解析。通过实际案例展示了如何利用调试模式解决客户端无法连接服务器的问题。 ... [详细]
  • 如何从python读取sql[mysql基础教程]
    从python读取sql的方法:1、利用python内置的open函数读入sql文件;2、利用第三方库pymysql中的connect函数连接mysql服务器;3、利用第三方库pa ... [详细]
  • 本文详细介绍了IBM DB2数据库在大型应用系统中的应用,强调其卓越的可扩展性和多环境支持能力。文章深入分析了DB2在数据利用性、完整性、安全性和恢复性方面的优势,并提供了优化建议以提升其在不同规模应用程序中的表现。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 在安装 SQL Server 时,选择混合验证模式可以提供更高的灵活性和管理便利性。如果您已经安装了 SQL Server 并使用单一的 Windows 身份验证模式,可以通过以下步骤将其更改为混合验证模式。 ... [详细]
  • 本文介绍了在 SQL Server 2012 客户端中格式化 SQL 查询语句的多种方法,包括内置功能和第三方工具,帮助用户提高代码可读性和维护性。 ... [详细]
  • 邮件(带附件,模拟文件上传,跨服务器)发送核心代码1.测试邮件发送附件接口***测试邮件发送附件*@parammultipartFile*@return*@RequestMappi ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
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社区 版权所有