1

http://rockingtechnology.blogspot.co.uk/2011/06/oracle-backup-and-restore-code-in-cnet.html

根据上述文章中建议的代码,更具体地说:

ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "C:/oracle/product/10.2.0/db_1/BIN/exp.exe";
Process process = Process.Start(psi);
process.WaitForExit();
process.Close();

一旦调用 Process.Start(psi) 并因此执行 exp.exe,我怎么能期望数据库会因从其他地方中断 CRUD 操作而受到影响?

使用 Oracle 的 exp.exe 进程 - 例如,当前写入相关数据库的所有用户的会话是否会被终止?我想(或至少希望)不会,但我无法找到文件来证实这一点。

4

3 回答 3

1

您实际上是在问(旧的)Oracle 导出工具 ( exp)对数据库有什么影响。SELECT这是一个逻辑备份,因此您通常可以按照对数据库运行多个查询的方式来考虑效果。也就是说,其他会话不会被杀死,但正常的锁定机制可能会阻止它们访问数据,直到exp完成它,这可能会导致超时。

于 2013-04-12T15:13:43.003 回答
1

EXP是原始的导出实用程序。它已停产,并且在最新版本 (11g) 中不受支持。

您可以EXPDP改用,尽管导出文件是写在服务器而不是客户端机器上的。

这两个实用程序都向数据库发出标准SELECT命令,并且由于读取器不会干扰 Oracle 中的并发性(写入器不会阻塞读取器,读取器不会阻塞读取器),因此这不会阻塞您的其他数据库操作。

然而,由于它发出语句,它可能会增加资源使用量,尤其是 IO,这可能会影响并发活动的性能。

无论您使用什么工具,您都应该花一些时间了解这些选项(另外,由于您可能希望将其用作逻辑副本,请确保您测试了相应的导入工具IMPIMPDP)。还有一句警告:这些工具不是备份工具。您不应该依赖它们进行备份。

于 2013-04-12T15:16:29.797 回答
1

EXP 和 IMP 不是适当的备份和恢复工具。它们用于在 Oracle 数据库之间交换数据和数据结构。它们的替代品 Data Pump(EXPDP 和 IMPDP)也是如此。

导出卸载到文件,因此它不会影响系统上的任何用户。但是,如果您想要一组一致的数据,如果有任何其他用户连接到系统,则需要使用 CONSISTENT=Y 参数。

有趣的是,Data Pump 没有 CONSISTENT 参数。它将表(或表分区)作为单个事务卸载,但保证所有数据库对象一致性的唯一方法是使用 FLASHBACK_SCN 参数(或将所有用户踢出系统)。


“这一切都是为了帮助博士。”

作为 DR 解决方案,这将起作用,但有以下附带条件。

  1. 用户将丢失自上次导出以来的所有数据(很明显)
  2. 您需要确保所有对象的导出一致
  3. 进口需要时间。如果您有很多表或大量数据,则需要很多时间。加索引等

还要记住导出统计数据和数据。

于 2013-04-12T15:18:39.327 回答