使用Schema Compare for Oracle创建部署脚本

时间:2011-05-04 20:10:12

标签: sql oracle schema compare redgate

我们有一组用于部署数据库代码的大型(2000+)脚本。有谁知道是否有一个工具可用于创建符合正确依赖顺序的单个部署脚本?

我知道这可以使用Redgate的SQL Compare来完成,但是如果你有SQL Server那就很棒。从Schema Compare for Oracle工具的有限信息来看,它似乎没有此功能。

4 个答案:

答案 0 :(得分:3)

我会按照以下顺序(大致基于使用EXPDP提取对象的顺序):

  • SYNONYM
  • TYPE(表格列可能取决于用户定义的类型)
  • DB_LINK
  • SEQUENCE
  • TABLE-TABLE
  • TABLE-GRANT
  • TABLE-INDEX
  • TABLE-CONSTRAINT(您可能希望现有索引强制执行PK约束)
  • TABLE-COMMENTS
  • PACKAGE
  • 功能
  • PROCEDURE
  • VIEW
  • TABLE-REF CONSTRAINTS
  • TABLE-TRIGGER
  • TABLE-INDEX(FUNCTIONAL)
  • 材料化视图
  • 材料化视图日志
  • JOB

答案 1 :(得分:2)

我会创建一个脚本,以正确的顺序启动脚本,具体取决于它们的实现方式。

  • 表/序列
  • 观点/类型
    • (通常使用force选项,以便在生成订单时创建它们 对“代码”类型或其他视图和类型的问题或依赖性)
  • 包/程序/功能/触发器
    • (如果这些是依赖顺序创建的,它们仍会创建,但无效)
  • 外键约束

在重新编译无效对象时,启动rdbms / admin / utlrp重新编译无效对象。

答案 2 :(得分:1)

我不确定我是否已完全理解您的问题,但您可能需要尝试以下操作:

  1. 运行当前脚本以创建数据库
  2. 创建空白架构
  3. 使用Red Gate的架构比较将数据库与空白架构进行比较
  4. 保存脚本(应按顺序排列)

答案 3 :(得分:0)


以下是为不同类型的数据库对象运行安装脚本的顺序的一般准则:

Package specifications

Tables (with constraints and indexes) in proper order

Sequences (because they are most often used by triggers)

Triggers

Synonyms

Views (because they may reference functions, procedures, or synonyms)

Package bodies

Data (optionally disabling all constraints before loading the data and re-enabling them afterwards)

首先列出包规范,因为它们始终有效,其他对象可能引用它们。包体应该是最后创建的对象类型,因为它们可能会引用其他对象类型。由于依赖性问题,我们鼓励您将函数和过程放入包中。