(如果您讨厌长篇解释,请阅读下面的问题)
我们遇到了一些不合作供应商销售的软件的问题(不幸的是我们是该产品的唯一客户)。该软件的平台是Oracle。晚上,该应用程序运行一系列夜间进程。偶尔会有一些夜间进程崩溃,导致我们争抢恢复数据库并继续工作直到第二天晚上。当然,这会导致用户心痛,这会让管理层陷入困境,直至IT。我们责怪供应商,他们责备我们。至少有一些额外的日志记录可以帮助我们找到问题。
我们已经缩小到几个可能的问题。奇怪的是,当我们从故障发生之前恢复备份并在测试盒上重新运行夜间进程时,它永远不会失败。所以这让我们相信:
这引出了我期待已久的问题(与上面的“C”有关):
是否存在导致生产数据与备份数据不同的任何内容(使用“exp”从命令行派生)?
我想我很怀疑,但只想消除上面的一个选项。
答案 0 :(得分:0)
这可能不是由imp / exp做的任何事情引起的(尽管可能是imp / exp按顺序很好地加载你的数据并且有新的索引,因此测试数据库具有更好的性能并避免一些应用程序内存泄漏建起来)。更可能的是,测试数据库和应用程序的初始状态是干净且无争用的,而生产系统将一整天都在运行,因此处于不同的状态(内存中加载了各种各样的东西)甚至可能运行其他进程会阻止某些进程并导致应用程序失败。
在运行进程之前,您可能会尝试关闭并重新启动数据库和应用程序。这为您提供了与测试中相同的起点。您可能希望重建索引和统计信息以及类似于生产以消除此处的问题。您还需要通过应用程序或在同一数据库中运行的任何其他内容来消除可能与进程冲突的任何其他工作。
如果Oracle没有崩溃并且警报日志中没有问题,那么应用程序就会出现问题并需要调查。监视应用程序服务器是否存在内存或进程问题,并让供应商记录正在发生的事情(告诉他们如果他们对此有点刺激就需要查找Oracle错误)。