对操作系统进行备份和还原也许是最常用的。实际业务环境升级后,因多方面原因存在严重问题,这时很可能需要还原到升级前的状态。因此数据库建立备份并能进行还原就很有意义。本文是一个使用C#(Visual Studio 2008)结合Oracle客户端完成还原点的建立与恢复的完整例子。
明确还原目标
在建立还原点时,首先要明确还原对象,我们所提及的还原并不是简单地对数据库某个时间点整个数据库的备份与还原,因为在升级后发生的实际业务数据是不能进行还原的。
会引起重要问题的主要是程序,在数据库中体现在包、函数和存储过程以及与流程相关的参数、方案等核心字典数据与界面层的一致性。而具体业务中产生的数据如收费项目、收费明细等,是不能进行还原的,明确还原目标后,问题的解决就有方向性了。
要建立还原点,首先要了解数据库中关键对象的存放位置,对于包、函数等可以在Oracle的数据库视图user_source中找到。
备份:建立还原对象列表
在建立C#的工程之后,今天我们利用配置文件app.config.xml,设定了相应的“导出对象”,“Oracle连接”等内容,如图001:
这样参数就可以在CONFIG中进行调整了。在进行备份时,我们首先要取得相关的程序列表,下面的语句可以找到我们需要的导出对象:
selectdistinctus.name,us.typefromuser_sourceuswhereus.typein('PROCEDURE','FUNCTION','PACKAGE','PACKAGEBODY');
可以使用 configurationAppSettings来取得配置文件中的设置,如导出对象、数据库连接、回滚目录,如:
ls_configs=(string)(configurationAppSettings.GetValue("导出对象",typeof(string)));
首先针对“导出对象”所定义的串进行拆分,ls_typeinfo存放需要导出的类型,并建立Oracle的数据库连接,再根据需要取得数据查询结果:
ls_querysql="SelectdistinctUs.Name,
us.typeFromUser_SourceUswhereus.typein("+ls_typeinfo+")orderbyus.Name,us.Type";
OracleCommand1.CommandText=ls_querysql;
OracleCommand1.CommandType=CommandType.Text;
//如何解析commandText的值
OracleDataReadermyReader=OracleCommand1.ExecuteReader(CommandBehavior.CloseConnection);
while(myReader.Read())
//使用OracleDateReader前进到下一条记录 通过循环,获得信息列表存放到对象列表listPrcInfo中,它包括两个项目,分别就是:对象名strName,对象类别strType。
31/3123>