Sql 如何将记录从一个DB2数据库移动到另一个DB2数据库?
通常,我们希望清理(删除)生产数据库(DB2)中的记录,并将它们移动到归档数据库(同样是具有相同模式的DB2数据库) 为了完成这个故事,我们的数据库中有很多外键约束。 因此,如果表b中的记录b有一个外键,用于表a中的记录a,并且我们要在生产数据库中删除记录a,那么也必须在生产数据库中删除记录b,并且必须在归档数据库中创建这两个记录 当然,不丢失任何数据是非常重要的。因此,我们不可能删除生产数据库中的记录,而这些记录永远不会插入归档数据库 最好的方法是什么 仅供参考,我已检查,建议的解决方案存在以下缺点Sql 如何将记录从一个DB2数据库移动到另一个DB2数据库?,sql,database,db2,archiving,Sql,Database,Db2,Archiving,通常,我们希望清理(删除)生产数据库(DB2)中的记录,并将它们移动到归档数据库(同样是具有相同模式的DB2数据库) 为了完成这个故事,我们的数据库中有很多外键约束。 因此,如果表b中的记录b有一个外键,用于表a中的记录a,并且我们要在生产数据库中删除记录a,那么也必须在生产数据库中删除记录b,并且必须在归档数据库中创建这两个记录 当然,不丢失任何数据是非常重要的。因此,我们不可能删除生产数据库中的记录,而这些记录永远不会插入归档数据库 最好的方法是什么 仅供参考,我已检查,建议的解决方案存在以
- 加载实用程序,摄取实用程序,导入实用程序:仅处理在存档数据库中插入记录的部分。它不包括全部动作
- 导出实用程序:仅涵盖导出数据的方法(可能由导入实用程序导入*)
- db2move、restore命令、db2relocatedb、ADMIN\u COPY\u SCHEMA、ADMIN\u MOVE\u TABLE和拆分镜像:如果您只想将满足特定条件的特定记录移动到存档数据库中,则不能选择
为了在步骤3中没有外键约束错误:我们还必须确保在步骤1中,我们还将所有具有外键约束的记录导出到导出的记录中,并将所有具有外键约束的记录导出到这些记录中……有用于此的工具(如Optim Archive)这可能更好地满足您没有意识到的需求 在此期间-查看联邦和工具
asntdiff
在存档数据库上,您可以定义与实时数据库的连接(CREATE SERVER
)。使用此定义,您可以定义实时表的昵称(CREATE昵称
)。使用这些昵称,您可以将适当的数据加载到存档表中。您可以使用您喜爱的数据移动实用程序-加载、导入、插入等
加载后,您可以使用带有适当选择条件的asntdiff工具来验证表
一旦您对两个位置的数据都存在感到满意,就可以删除实时数据库中的行
对于外键关系-使用视图SYSCAT.TABDEP查找此类依赖项。您可以在存档数据库中将外键定义为“未强制”(或不定义它们),以避免上一过程中出现错误
无论数据库是什么,数据归档都是一个大而常见的话题。您可能还想了解如何获得更好的性能和控制。询问“最佳”方法的问题用处有限,因为忽略了评估标准。
有时,技术人员和业务人员的评估标准不同
有时,客户公司的多项政策可以确定此类标准,因此了解当地政策、程序或模式至关重要
除了实施团队的技能水平和经验外,操作要求、安全要求和许可要求通常会影响方法
有时,公司会有特定的标准化归档和删除工具,或有时受行业部门甚至行业特定监管要求影响的特定模式
由于stackoverflow是一个面向编程的网站,像您这样的问题可以被认为是离题的,因为您询问的是关于哪种设计方法是可行的,而忽略了许多特定于您的公司/行业的上下文,这些上下文很可能会影响解决方案模式
影响方法的一些典型要求或问题如下:
- 本地安全要求是否允许数据离开Db2环境?(即存储在Db2表之外的磁盘上的数据)。有时这会限制导出或从文件/管道加载的使用)。在RDBMS之外,数据可能存在修改、检查或删除的风险(无论是意外的还是故意的)
- 发生运行时错误时解决方案的可重启性。这通常是一项关键要求。在不同的物理数据库(即使是相同的RDBMS)之间复制数据时,存在许多可能的错误(网络错误、资源问题、并发问题、操作问题等)。解决方案必须保证故障后的任何重新启动从故障点恢复,还是必须进行清理并重新启动整个作业?答案可以决定设计
- 如果两个数据库之间存在联合(或者如果可以在Db2许可条款中添加联合),那么这通常是推送或拉送内容的最简单实用的方法。本地表和远程表似乎位于同一个逻辑数据库中,这简化了该方法。数据永远不需要离开RDBMS。这还简化了失败作业的可重启性。如果需要,它还允许数据保持加密
- 如果SQL复制或基于Q的复制获得许可,则可以将其配置为智能同步源表和目标表,并在适当配置的情况下尊重RI。这种方法需要大量的数据