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 进程——例如,当前写入相关数据库的所有用户的 session 是否会被终止?我想(或至少希望)不会,但我无法找到文档来证实这一点。
最佳答案
EXP 和 IMP 不是合适的备份和恢复工具。它们用于在 Oracle 数据库之间交换数据和数据结构。它们的替代品 Data Pump(EXPDP 和 IMPDP)也是如此。
导出卸载到一个文件,这样它就不会影响系统上的任何用户。但是,如果您想要一组一致的数据,并且有任何其他用户连接到系统,则需要使用 CONSISTENT=Y 参数。
有趣的是,Data Pump 没有 CONSISTENT 参数。它将表(或表分区)卸载为单个事务,但保证所有数据库对象的一致性的唯一方法是使用 FLASHBACK_SCN 参数(或将所有用户踢出系统)。
"It is all in aid of DR."
作为 DR 解决方案,这将起作用,但有以下条件。
- 用户将丢失自上次导出以来的所有数据(显而易见)
- 您需要确保导出在所有对象之间保持一致
- 导入需要时间。如果您有很多表或大量数据,则需要很多时间。加索引等
还要记住导出统计数据和数据。
关于c# - 这个过程会影响数据库的可用性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15974772/