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

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

有帮助吗?

解决方案

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

  • SYNONYM
  • TYPE(表列可能取决于用户定义的类型)
  • DB_LINK
  • SEQUENCE
  • TABLE-TABLE
  • 台式奶粉
  • TABLE-INDEX
  • TABLE-CONSTRAINT(您可能希望现有索引强制实施PK约束)
  • 表注释
  • 包装
  • 功能
  • 步骤
  • 查看
  • 表引用约束
  • TABLE-TRIGGER
  • 表索引(功能性)
  • 材料视图
  • 材料视图日志
  • 作业

其他提示

我将创建一个脚本,以适当的顺序启动您的脚本,具体取决于它们的实现方式。

  • 表/序列
  • 视图/类型
    • (通常带有force选项,因此如果有生成顺序,则会创建它们 问题或对“代码”类型或其他视图和类型的依赖)
    • 包/过程/功能/触发器
      • (如果这些文件是按不依顺序创建的,它们仍然会创建,但是无效)
      • 外键约束

        完成重新编译无效对象后,请启动rdbms / admin / utlrp重新编译无效对象。

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

  1. 运行您当前的脚本来创建数据库
  2. 创建一个空白模式
  3. 使用Red Gate的架构比较将您的数据库与空白架构进行比较
  4. 保存脚本(应该以依赖顺序)

以下是针对不同类型的数据库对象运行安装脚本的顺序的一般指南: 通用标签

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top