我们有大量(2000 多个)脚本用于部署数据库代码。有谁知道是否有一种工具可用于创建符合正确依赖顺序的单个部署脚本?
我知道这可以使用 Redgate 的 SQL 比较来完成,但是如果你有 SQL Server,那就太好了。从 Schema Compare for Oracle 工具的有限信息来看,它似乎没有此功能。
我将按照以下顺序进行(大致基于使用 EXPDP 提取对象的顺序):
我会创建一个脚本以正确的顺序启动您的脚本,具体取决于它们的实现方式。
force
选项,因此如果存在生成顺序问题或对“代码”类型或其他视图和类型的依赖性,则会创建它们)完成重新编译无效对象后,启动 rdbms/admin/utlrp 以重新编译无效对象。
我不确定我是否完全理解您的问题,但您可能想尝试以下方法:
以下是为不同类型的数据库对象运行安装脚本的顺序的一般准则:
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)
首先列出包规范,因为它们将始终有效并且其他对象可能会引用它们。包主体应该是最后创建的对象类型,因为它们可能会引用其他对象类型。由于依赖性问题,我们鼓励您将函数和过程放入包中。