通过代码从 .net 备份 Oracle 数据库

Posted

技术标签:

【中文标题】通过代码从 .net 备份 Oracle 数据库【英文标题】:Backup of Oracle database from .net through code 【发布时间】:2012-05-24 12:50:46 【问题描述】:

我想通过 .Net 代码备份或恢复我的 oracle 数据库。 我搜索了很多,但没有找到任何正确的解决方案。 就像我们通过执行查询在 SQL Server 中进行备份一样。

backup database :DatabaseName to disk = ':DestinationPath

我想在 Oracle 中做同样的事情。

【问题讨论】:

我很确定 Oracle 手册会告诉你什么是正确的命令。 您可以使用 Oracle 数据泵:oracle-base.com/articles/10g/oracle-data-pump-10g.php。您可能必须从控制台脚本执行此操作,而不是 Oracle 中的数据库脚本。 @mservidio:dataPump 也可以通过 SQL 启动。这是与(过时的)exp/imp 工具相比的最大优势 【参考方案1】:

您可以使用诸如 exp/imp 或更新的 Oracle 数据泵之类的 Oracle 实用程序来创建数据库导出(备份),但您必须在数据库之外的命令行/终端窗口中执行这些操作。更多信息请参见:http://www.oracle-base.com/articles/10g/oracle-data-pump-10g.php

更新:我的立场已得到纠正。数据泵作业可以通过 PL/SQL 启动。谢谢@a-horse-with-no-NAME。

本文展示了如何从 sql 启动数据泵作业:http://docs.oracle.com/cd/B19306_01/server.102/b14215/dp_api.htm#i1006925

【讨论】:

可以使用dbms_datapump 包通过SQL 启动数据泵导出:docs.oracle.com/cd/B28359_01/appdev.111/b28419/… @a_horse_with_no_name - 只是为了迂腐,您可以通过 PL/SQL 而不是 SQL 来启动 DataPump 导出作业,对(好吧,禁止使用自主事务并从 SQL 调用的函数)。 @JustinCave:是的,好点。但通常一个让你运行 SQL 的接口/驱动程序也会让你运行 PL/SQL。【参考方案2】:

小心:DataPump 或 Exp 导出不是 真正的 Oracle 备份,您应该进行测试以确保您可以从您正在创建的 Dump 文件中恢复。 Oracle 与 SQL Server 的 BACKUP DATABASE 命令最接近的是 RMAN,即便如此,它也完全不同。但是从批处理文件调用非常有用。我同时是 SQL Server 和 Oracle 的 DBA,每个引擎执行备份的方式是最大的区别之一。 Exp 和 Imp 更类似于 SQL 的 bcp 命令(但更强大)。 Exp 不会备份您的 Controlfile 或 AchiveLogs,在发生灾难时您可能需要这些。使用 Exp,请确保使用 CONSISTENT=Y 选项(FLASHBACK_TIME 用于较新的 DataPump 导出)。 SQL Server 备份更直接,更容易恢复。

【讨论】:

【参考方案3】:

我找到了一种通过代码备份 oracle 数据库的简单方法。 我通过代码从用户那里获取凭据,并动态地制作 exp/imp 命令的批处理文件。 并使用进程类运行此批处理命令。

感谢大家的回复。

【讨论】:

【参考方案4】:
OledbCommand cmd=new OledbCommand ("backup database databasename to disk ='C:\databasename.bak'",con);

con.open();

cmd.ExecutenonQuery();

con.close();

【讨论】:

这不是问题。 backup database 命令对 Oracle 无效。 谢谢哥们。我知道了... :) 这家伙正在为Oracle寻求帮助。

以上是关于通过代码从 .net 备份 Oracle 数据库的主要内容,如果未能解决你的问题,请参考以下文章

oracle 11g 从+DATA迁移到+newdata ASM 磁盘组迁移

备份 TDE 加密的 oracle 数据库

oracle热备份恢复时,要先关闭数据库吗

怎么从oracle数据库备份数据库

如何Oracle 数据库备份与恢复

Linux下通过脚本自动备份Oracle数据库并删除指定天数前的备份