视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
缩短Oracle数据库迁移过程中的停机时间
2020-11-09 08:28:20 责编:小采
文档


欢迎进入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]

下载本文
显示全文
专题