c# - 这个过程会影响数据库的可用性吗?

标签 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 进程——例如,当前写入相关数据库的所有用户的 session 是否会被终止?我想(或至少希望)不会,但我无法找到文档来证实这一点。

最佳答案

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

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

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


"It is all in aid of DR."

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

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

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

关于c# - 这个过程会影响数据库的可用性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15974772/

相关文章:

mysql - 2个表之间的简单关系

c# - 字符串到字节数组

c# - 指定 Xaml 中开始和结束标记之间的属性

c# - 为什么 LocalTime 显示服务器时间而不是浏览器时间?

.net - 如何仅在生产时限制网站使用 SSL,但在本地没有 ssl 的情况下继续工作

c# - 有没有什么办法可以聚焦(选项卡控件)图片框?

c# - 初始化私有(private)成员 c#

c# - 忽略 ShouldBeEquivalentTo 中的内部属性

mysql - 无法弄清楚如何连接表

c# - DISTINCT 查询不起作用,它会给我重复的输出列