此过程会影响数据库可用性吗?

时间:2013-04-12 15:03:50

标签: c# .net database oracle backup

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进程 - 例如,当前写入相关数据库的所有用户的会话是否会被终止?我想(或者至少希望)没有,但是我找不到证明这一点的文件。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

您可以改为使用EXPDP,但导出文件是在服务器而不是客户端计算机上写的。

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

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

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

答案 2 :(得分:1)

EXP和IMP不是正确的备份和恢复工具。它们用于在Oracle数据库之间交换数据和数据结构。对于他们的替换数据泵(EXPDP和IMPDP)也是如此。

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

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


  

“这都是DR的帮助。”

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

  1. 自上次导出(显而易见)
  2. 后,用户将丢失所有数据
  3. 您需要确保导出在所有对象中保持一致
  4. 进口需要时间。如果你有很多表或大量数据,很多时候。加索引等
  5. 还要记住导出统计数据和数据。