gpt4 book ai didi

database - 升级或迁移后是否有验证数据库模式是否正确的好方法?

转载 作者:搜寻专家 更新时间:2023-10-30 19:42:19 26 4
gpt4 key购买 nike

我们有一些客户正在从一个数据库版本升级到另一个版本(具体来说是从 Oracle 9i 到 Oracle 10g 或 11g)。在一个案例中,一位客户导出了旧数据库并将其导入到新数据库中,但由于某种原因没有创建索引和约束。他们可能是故意这样做以加快导入过程,但我们仍在调查原因。

真正的问题是,有没有一种简单的方法可以验证导入后数据库的结构是否完整?我们可以在结构上做某种校验和吗?我们意识到我们可以执行大量查询以查看是否所有表、索引、别名、 View 、序列等都存在,但这可能难以编写和维护。

更新

感谢建议使用商业和/或 GUI 工具的答案,但我们确实需要一些免费的东西,我们可以将其与我们的产品打包在一起。它还必须是命令行或脚本驱动的,以便我们的客户可以在任何环境(unix、linux、windows)中运行它。

最佳答案

假设一个单一的模式,像这样 - 在迁移之前将 USER_OBJECTS 转储到一个表中。

 CREATE TABLE SAVED_USER_OBJECTS AS SELECT * FROM USER_OBJECTS

然后在迁移后进行验证

 SELECT object_type, object_name FROM SAVED_USER_OBJECTS
MINUS
SELECT object_type, object_name FROM USER_OBJECTS

一个问题是,如果您有意在版本之间删除对象,您还需要从 SAVED_USER_OBJECTS 中删除。如果存在错误版本的对象,这也不会被接受。

如果您有多个模式,那么每个模式都需要相同的东西,或者使用 ALL_OBJECTS 并提取/比较相关的用户模式。

您还可以对整个模式的 object_type||object_name 进行哈希/校验和(之前保存/之后比较),但计算成本与比较索引上的两个表没有太大区别。

关于database - 升级或迁移后是否有验证数据库模式是否正确的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3576475/

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