通过代码从 .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 数据库的主要内容,如果未能解决你的问题,请参考以下文章