从PHP进行Oracle完整备份

从PHP进行Oracle完整备份,php,oracle,oracle9i,oracle-call-interface,Php,Oracle,Oracle9i,Oracle Call Interface,我使用Oracle后端维护一个PHP驱动的web应用程序。该应用程序与许多第三方应用程序交互,因此信息通过XML文件、Microsoft Access数据库和HTML表单的组合进行管理。目前有80个表,其中包含许多blob和一堆相当好的外键关系。所有程序都在一份(当然)没有人读过的文件中仔细解释。客户对自己的数据感到不安,因此给了他一个估计,并提出了一些可以改进的地方(比如在某些操作中添加预览和确认) 遗憾的是,客户误解了其中一个规范(部分导出将在12个工时内完成),他希望有一个完整的备份和恢复

我使用Oracle后端维护一个PHP驱动的web应用程序。该应用程序与许多第三方应用程序交互,因此信息通过XML文件、Microsoft Access数据库和HTML表单的组合进行管理。目前有80个表,其中包含许多blob和一堆相当好的外键关系。所有程序都在一份(当然)没有人读过的文件中仔细解释。客户对自己的数据感到不安,因此给了他一个估计,并提出了一些可以改进的地方(比如在某些操作中添加预览和确认)

遗憾的是,客户误解了其中一个规范(部分导出将在12个工时内完成),他希望有一个完整的备份和恢复功能,允许他通过web浏览器保存和恢复完整的数据库,而无需DBA干预

在与客户再次争论之前,我想知道,考虑到不需要任何改进(例如,不需要选择要恢复的内容),我是否有任何选择来及时实际实现此功能

生产服务器是运行PHP/5.2.9的Windows server 2003机箱。Oracle服务器是一个运行“Oracle9i 9.2.0.1.0版-64位生产”的远程机箱

(请注意,我不是DBA,因此可能有一些我不知道的众所周知的解决方案。)

Oracle是一个怪物。一旦您意识到备份系统的方式完全取决于系统的配置方式。简单的答案是自动执行任何手动过程-将其作为长时间运行的过程调用(因为这是MSWindows,所以在rman命令前面加上“start”),然后使用轮询来检测何时完成(例如,将rman包装在DOS批处理文件中,该文件记录开始和结束时间)

我很难想出一个比运行在MSWindows上的Oracle更难的问题来提供通用解决方案。对于用户来说,点击按钮可能是件好事,但实现任何事情的自动化都是一件好事


玩得开心:)

最后,我有机会在以后的项目中从PHP实现完整的Oracle备份。我使用了命令行实用程序,从10g开始提供。简言之:

  • 您定义Oracle目录以将关键字映射到物理目录,并向应用程序的Oracle用户授予写入权限
  • 使用适当的参数运行
    expdp
    ,并在单个文件中获得完整的转储
  • 要恢复备份,请运行
    impdp
  • 还建议使用而不是运行命令,因为您可以在Windows上
    绕过shell
    if,并对进程进行细粒度控制


    对于这个问题,10g之前的替代方案是“exp”/“imp”组合。

    哦,天哪。。。这一切都指向了与客户的另一个争论。我将用12个小时阅读常见问题解答
    :-P
    。不管怎样,谢谢你的链接。这比我能找到的甲骨文官方文档要清楚得多。