2012-05-24 48 views
1

我想通过.Net代码来备份或恢复我的oracle数据库。 我搜索了很多,但没有找到任何正确的解决方案。 像我们通过执行查询在SQL服务器中备份。从.net通过代码备份Oracle数据库

backup database :DatabaseName to disk = ':DestinationPath 

同样我想在Oracle中做。

+0

我很确定Oracle手册能够告诉你什么是正确的命令。 – Filburt

+1

您可以使用Oracle Data Pump:http://www.oracle-base.com/articles/10g/oracle-data-pump-10g.php。您可能必须从控制台脚本执行此操作,而不是使用Oracle中的数据库脚本。 – mservidio

+2

@mservidio:dataPump也可以通过SQL启动。这是(过时的)exp/imp工具的最大优势 –

回答

0

我发现一个简单的方法把oracle数据库虽然代码的备份。 我通过代码从用户获取凭证并动态创建exp/imp命令的批处理文件。 并使用进程类运行此批处理命令。

谢谢大家的回复。

+1

你能给我解决这个问题的代码吗 – GowthamanSS

4

您可以像使用EXP/IMP或较新的Oracle数据泵的Oracle工具创建数据库导出(备份),但是,你必须执行这些数据库之外,在命令行/终端窗口。有关详细信息,请参阅此处:http://www.oracle-base.com/articles/10g/oracle-data-pump-10g.php

更新:我站好了。数据泵作业可以通过PL/SQL启动。谢谢@马匹不带姓名。

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

+3

您可以使用'dbms_datapump'软件包通过SQL启动数据泵导出:http://docs.oracle.com/cd/B28359_01/appdev.111/ b28419/d_datpmp.htm#i1007277 –

+0

@a_horse_with_no_name - 只是为了迂回,您可以通过PL/SQL而不是SQL来启动DataPump导出作业(对于使用自治事务并从SQL中调用的函数,除外)。 –

+0

@JustinCave:是的,好点。但是通常可以运行SQL的接口/驱动程序也可以运行PL/SQL。 –

-1
OledbCommand cmd=new OledbCommand ("backup database databasename to disk ='C:\databasename.bak'",con); 

con.open(); 

cmd.ExecutenonQuery(); 

con.close(); 
+0

这不是问题。 Oracle备份数据库命令无效。 –

+0

谢谢哥们..我知道了...... :) – Abhi

1

小心:a DataPump或Exp Export不是real Oracle备份,您应该测试以确保您可以从您正在创建的转储文件进行恢复。 Oracle对SQL Server的BACKUP DATABASE命令最接近的是RMAN,即便如此,情况也完全不同。但从批处理文件中调用是非常有用的。我既是SQL Server和Oracle的DBA,每个引擎执行备份的方式也是最大的差异之一。 Exp和Imp更类似于SQL的bcp命令(但功能更强大)。 Exp不会备份您的控制文件或AchiveLogs,并且在发生灾难时您可能需要这些文件。使用Exp时,确保使用CONSISTENT = Y选项(FLASHBACK_TIME用于更新的DataPump导出)。 SQL Server备份更直截了当,并且更容易恢复。