對操作系統進行備份和還原也許是最常用的實際業務環境升級後因多方面原因存在嚴重問題這時很可能需要還原到升級前的狀態因此數據庫建立備份並能進行還原就很有意義本文是一個使用C#(Visual Studio )結合Oracle客戶端完成還原點的建立與恢復的完整例子
明確還原目標
在建立還原點時首先要明確還原對象我們所提及的還原並不是簡單地對數據庫某個時間點整個數據庫的備份與還原因為在升級後發生的實際業務數據是不能進行還原的
會引起重要問題的主要是程序在數據庫中體現在包函數和存儲過程以及與流程相關的參數方案等核心字典數據與界面層的一致性而具體業務中產生的數據如收費項目收費明細等是不能進行還原的明確還原目標後問題的解決就有方向性了
要建立還原點首先要了解數據庫中關鍵對象的存放位置對於包函數等可以在Oracle的數據庫視圖user_source中找到
備份建立還原對象列表
在建立C#的工程之後今天我們利用配置文件nfigxml設定了相應的導出對象Oracle連接等內容如圖
這樣參數就可以在CONFIG中進行調整了在進行備份時我們首先要取得相關的程序列表下面的語句可以找到我們需要的導出對象
selectdistinctusnameustypefromuser_sourceuswhereustypein(PROCEDUREFUNCTIONPACKAGEPACKAGEBODY);
可以使用 configurationAppSettings來取得配置文件中的設置如導出對象數據庫連接回滾目錄如
ls_configs=(string)(configurationAppSettingsGetValue(導出對象typeof(string))); 首先針對導出對象所定義的串進行拆分ls_typeinfo存放需要導出的類型並建立Oracle的數據庫連接再根據需要取得數據查詢結果
ls_querysql=SelectdistinctUsName
ustypeFromUser_SourceUswhereustypein(+ls_typeinfo+)orderbyusNameusType;
OracleCommandCommandText=ls_querysql;
OracleCommandCommandType=CommandTypeText;
//如何解析commandText的值
OracleDataReadermyReader=OracleCommandExecuteReader(CommandBehaviorCloseConnection);
while(myReaderRead())
//使用OracleDateReader前進到下一條記錄 通過循環獲得信息列表存放到對象列表listPrcInfo中它包括兩個項目分別就是對象名strName對象類別strType
備份有進度地產生各個對象體
生成了對象列表後再根據每個對象名和對象類別來讀取內容相對來說就比較簡單只要使用以下方法
ls_querysql = Select usline ustext From User_Source Us where usname = + listPrcInfo[i]strName + and ustype=+listPrcInfo[i]strType+ order by usline ; OracleCommandCommandText = ls_querysql; OracleCommandCommandType = CommandTypeText;//如何解析commandText的值 來讀取對象的程序內容並按照我們在CONFIG中所對應的各種文件擴展名來保存文件:
.NET編程免費提供,內容來源於互聯網,本文歸原作者所有。