2012-05-24 43 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備份更直截了當,並且更容易恢復。