1

(如果您讨厌冗长的解释,请阅读下面我的问题)

我们遇到了一些由不合作的供应商销售的软件的问题(不幸的是,我们是该产品的唯一客户)。该软件的平台是 Oracle。在晚上,该应用程序会运行一系列夜间进程。偶尔一些夜间进程崩溃,导致我们争先恐后地恢复数据库并将工作延续到第二天晚上。当然,这会导致用户心痛,这会影响到管理,直至 IT。我们责备供应商,他们责备我们。至少有一些额外的日志记录来帮助我们定位问题会很好。

我们已经缩小到几个可能的问题。奇怪的是,当我们从故障前恢复备份并在测试盒上重新运行每晚的进程时,它永远不会失败。因此,这使我们相信:

  • 我们尚未检测到的测试盒和生产盒之间的差异
  • 软件有点奇怪
  • 导出前的生产数据和恢复的数据有所不同
  • ??

这让我想到了我期待已久的问题(关于上面的“C”):

是否有什么会导致生产数据与备份数据不同(使用“exp”从命令行派生)?

我想我很怀疑,但只是想消除上述选项之一。

4

1 回答 1

0

这不太可能是由 imp/exp 所做的任何事情引起的(尽管 imp/exp 可能会按顺序很好地加载您的数据并具有新的索引,因此测试数据库具有更好的性能并避免一些应用程序内存泄漏) . 更有可能是测试数据库和应用程序的初始状态是干净且无竞争的,而生产系统将整天运行,因此处于不同的状态(内存加载了各种东西),甚至可能运行其他进程会阻止您的某些进程并导致应用程序失败。

在运行进程之前,您可能会尝试关闭并重新启动数据库和应用程序。这为您提供了与测试相同的起点。您可能希望在生产中重建索引和统计信息等,以消除此处的问题。您还需要通过应用程序或在同一数据库中运行的任何其他内容消除可能与流程冲突的任何其他工作。

如果 Oracle 没有崩溃并且警报日志中没有问题,则应用程序存在问题并需要调查。监视应用程序服务器的内存或进程问题,并让供应商记录发生的事情(告诉他们,如果他们对此很棘手,您需要它来查找 Oracle 错误)。

于 2012-09-12T07:56:36.593 回答