gpt4 book ai didi

sql - 如何使用 Oracle 数据库实现源代码控制自动化

转载 作者:行者123 更新时间:2023-12-02 01:13:24 25 4
gpt4 key购买 nike

我在一个具有数百个模式和多个开发人员的 Oracle 实例中工作。我们有一个开发实例,开发人员可以在测试或生产之前集成他们的工作。

我们希望对在此集成开发数据库中运行的所有 DDL 进行源代码控制。目前,这是通过产品 Red Gate 完成的,我们在对数据库进行更改后手动运行该产品。 Redgate 查找架构中的内容与上次 checkin 源代码管理的内容之间的更改,并制作差异脚本并将其放入源代码管理中。

然而,问题当然是运行 regdate 可能需要一些时间,并且人们很少运行它或根本不运行它来进行小的更改。此外,redgate 一次只会查看一个模式,并且针对所有模式手动运行它以确保它们是最新的将非常耗时。然而,如果源代码控制的代码不可靠,它就变得不太有用......

理想的情况是拥有一些软件,可以定期(甚至每天一次)或在运行 DDL 时触发,从所有地方更新源代码控制(最好是 github,因为其他团队也使用它)模式。

我似乎看不到任何现有的软件可以简单地用来执行此操作。

这样做有问题吗? (无需解决多个开发人员在同一天覆盖彼此的工作的问题,因为我们在单独的流程中对此进行了介绍)有人这样做吗?谁能推荐一种方法来做到这一点?

最佳答案

我们在 PL/SQL 函数、Python 脚本和 shell 脚本的帮助下完成此操作:

  • PL/SQL 函数可以生成整个模式的 DDL 并将其作为 CLOB 返回
  • Python 脚本连接到数据库,获取 DDL 并将其存储在文件中
  • shell 脚本运行源代码管理来添加修改(我们在这里使用 Bazaar)。

您可以在PasteBin上看到脚本:

shell 脚本:

python schema_exporter.py
d=$(date +%Y-%m-%d__%H_%M_%S)
bzr add
bzr st | grep -q -E 'added|modified' && commit -m "Database objects on $d"
exit 0

此 shell 脚本配置为每天从 cron 运行。

关于sql - 如何使用 Oracle 数据库实现源代码控制自动化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29360699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com