`
libin0019
  • 浏览: 234318 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

还原测试环境的两种方法

阅读更多

一、测试环境

数据库:Oracle10g

前台:Dojo

二、恢复测试环境的三种方法:

1、采用虚拟机,将Web应用及数据库都放到虚拟机上,通过快照的方式恢复测试环境(最好)

2、开启数据库的

三、实现方式

1.Ant方式(以编程方式动态调用Ant文件)

 

(1)新建Java文件,内容如下:

package com.neusoft.server;
import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DefaultLogger;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.ProjectHelper;

/** 
 * <p>Description: [还原数据库]</p>
 * @author  <a href="mailto: xxxx@xxxxxx.com">xxxx</a>
 * @version $Revision$ 
 */ 
public class FlashBack {
	private Project project;
	private File buildFile;
	private ProjectHelper helper;

	/**
	 * <p>Discription:[构造器方法描述]</p>
	 * @coustructor 方法.
	 */
	public FlashBack() {
		buildFile = new File("build.xml");
		project = new Project();
		DefaultLogger consoleLogger = new DefaultLogger();
		consoleLogger.setErrorPrintStream(System.err);
		consoleLogger.setOutputPrintStream(System.out);
		consoleLogger.setMessageOutputLevel(Project.MSG_INFO);
		project.addBuildListener(consoleLogger);
		project.fireBuildStarted();
		project.init();
		helper = ProjectHelper.getProjectHelper();
	}
	
	/**
	 * <p>Discription:[闪回数据库]</p>
	 * @param time
	 * @return
	 * @author:[xxxx]
	 * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
	 */
	public boolean flashBack(String time) {
	    //验证时间格式
	    Pattern p = Pattern.compile("\\d{4}-\\d{2}-\\d{2}:\\d{2}:\\d{2}:\\d{2}");  
	    Matcher m = p.matcher(time);  
	    boolean tag = false;
	    if(m.matches())
	    {
	    	try {
				project.setProperty("time", time);
				helper.parse(project, buildFile);
				project.executeTarget(project.getDefaultTarget());
				project.fireBuildFinished(null);
				tag = true;
			} catch (BuildException e) {
				project.fireBuildFinished(e);
				e.printStackTrace();
			}
	    }
		return tag;
	}
}

 

(2)新建Ant文件,内容如下:

 

<?xml version="1.0" encoding="UTF-8"?>
<project name="flashBack" default="startVM" basedir="." xmlns:ora="antlib:net.sf.incanto">
	<!-- 虚拟机镜像文件目录-->
	<property name="vmware.dir" value=" E:\\UbuntuVM\\Ubuntu.vmx">
	</property>
	<!-- 虚拟机快照名称,名称之间不允许包含空格-->
	<property name="snapshot" value="Snapshot3">
	</property>
	<!-- 方式1:通过执行SQL语句还原数据库 -->
	<target name="runSql">
		<ora:sqlplus logon="/NOLOG" silent="true" failonerror="true">
			<![CDATA[
        	--首先以DBA身份连接数据库;
        	conn system/tiger as sysdba;
        	--关闭数据库;
        	shutdown immediate;
        	--进入MOUNT状态;
        	startup mount;
        	--开始闪回数据;
        	flashback database to timestamp  to_date('${time}','yyyy-mm-dd:hh24:mi:ss'); 
        	--打开数据库;
        	alter database open resetlogs;
        	--退出;
        	exit;  
            ]]>
		</ora:sqlplus>
	</target>
	<!-- 方式2:通过调用虚拟机的Vmrun命令,还原虚拟机快照-->
	<target name="revertSnap">
		<exec executable="cmd.exe">
			<arg line="/c vmrun -t ws revertToSnapshot ${vmware.dir} ${snapshot}" />
		</exec>
	</target>
	<target name="startVM" depends="revertSnap">
		<exec executable="cmd.exe">
			<arg line="/c vmrun -t ws start ${vmware.dir}" />
		</exec>
	</target>
</project>

参考资料:

 

以编程方式调用 Apache Ant

 

http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0502_gawor/0502_gawor.html

 

2.批处理方式(描述:使用批处理文件调用SQL文件)

(1)新建FlashBack.bat文件,内容如下:

@echo off 
sqlplus /nolog @runSql.sql

(2)新建runSql.sql文件,内容如下:

--首先以DBA身份连接数据库;
conn system/tiger as sysdba;
--关闭数据库;
shutdown immediate;
--进入MOUNT状态;
startup mount;
--开始闪回数据;
flashback database to timestamp  to_date('2011-08-09:16:53:01','yyyy-mm-dd:hh24:mi:ss'); 
--打开数据库;
alter database open resetlogs;
--退出;
exit;  
分享到:
评论

相关推荐

    培训在线教育系统源码开源修复版万岳在线教育系统源码V1.1.4支持录播回看+网课购买+学习测试.zip

    包含语音大班课和视频大班课两种模式,万人可同时在线;语音大班课支持视频、音频、PPT教学方式,而视频大班课主要以讲座形式展现。 包含:直播授课、文字互动、课堂展示、语音互动、教学白板、屏幕共享 双师教学 ...

    测试培训教材

    1、测试流程管理、测试度量方法 按照尽早进行测试的原则,测试人员应该在需求阶段就介入,并贯穿软件开发的全过程。就测试过程本身而言,应该包含以s下几个阶段。  -测试需求的分析和确定。  -测试计划。  -...

    广西大厂长坡 -铜坑锡多金属矿床中 两种黄铁矿的元素地球化学特征 (2010年)

    广西大厂长坡-铜坑锡多金属矿床中的黄铁矿明显有两种类型:条带状黄铁矿和脉状黄铁矿。矿相特征表明,部分黄铁矿可能由胶黄铁矿重结晶而成。黄铁矿的微量元素测试结果表明,样品以沉积成因特征为主,其中具脉状黄铁矿...

    17房产网 v1.0.rar

    1.还原数据库 方法有两种: (1)使用帝国备份 输入**/diguo 进入帝国备份王,账号和密码为admin 123456 进去后首先参数设置,连接好你的mysql数据库之后选择恢复数据这一项,选择目录,然后选择 qing_...

    17房产网 v1.0

    1.还原数据库 方法有两种: (1)使用帝国备份 输入域名/diguo 进入帝国备份王,账号和密码为admin 123456 进去后首先参数设置,连接好你的mysql数据库之后选择恢复数据这一项,选择目录,然后选择 qing_...

    论文研究 - 双环渗透仪

    前两种是瑞典堤坝坝址的土壤,后一种是瑞典东部沿海地区天然沉积物的土壤。 将原位双环渗透仪(DRI)测试与实验室恒定水头渗透率测定进行比较。 这项研究表明,在沙质粉质土壤上进行的DRI测试在实验室结果的范围内...

    PowerShadow 2.6.0511

    有两种模式:一种是保护系统分区,一切对系统的更改在下次启动后全部无效,对非系统分区的更改是有效的,一种是全盘保护模式。 这个软件我正在使用中,超强,不需做任何镜象,也不是还原精灵!它是你原操作系统的...

    无忧招聘系统 v2.0 招聘网站源码

    web文件夹是网站程序,数据库文件有两种后缀,一种是bak的可以直接还原,另一种是附加,可以根据自己环境情况来选择一种。 1:运行环境要求:.net 2.0 需要有[完全信任级别权限] 及MSSQL2005或MSSQL2008 2:IIS创建...

    emaj:E-Maj是PostgreSQL扩展,可跟踪具有回滚功能的表集的更新

    电子杂志 E-Maj:日志和回滚表更新 版本: 执照 该软件是根据GNU通用公共许可证发行... 在这两种环境中,能够检查对表执行的更新的历史记录对于调试工作或用于任何其他目的非常有帮助。 分配 可通过PGXN平台( )获得E

    MAX30100脉搏血氧仪传感器电路+测试程序等-电路方案

    血液中的血色素有两种形态:氧合血红蛋白(HbO2);还原血红蛋白(Hb)。高度饱和的血色素分子包括4个氧分子。典型的健康值为 90至100%,但可以低至60%。 血氧饱和度的测试公式如下: 脉搏血氧仪传感器介绍: 脉搏血氧仪...

    无毒空间(一劳永逸的白名单系统)

    无毒空间完全可以避免未知病毒木马在电脑中运行(包括各种查杀毒软件不认识的带各种“免杀技术”的新恶意软件),我们的测试环境,没有安装查杀毒软件,没有开启防火墙,连微软的漏洞也故意不补,未知的病毒木马都...

    二进制XML存储方案

    二进制XML存储方案BinXML实现方法 BinXML是我个人杜撰出来的名字,不知道是否合适,也不知道是否已存在类似的解决方案。在vcer.net上我将前一段时间的这个BinXML方案贡献出来,希望能够与广大vcer分享。 当时问题的...

    test-database

    在这两种情况下,都使用相同的Liquibase变更集。 建立阶段 码头工人文件分为三个阶段: 'deploy'阶段,将所有必需的文件添加到映像,以运行liquibase update命令 旋转数据库实例的“构建”阶段,应用包含test_data...

    金属材料标准的应用数据库MtrRvw

    3.2 显示试验特征的窗体有两种类型。一种是“专用窗体”,适用热处理工艺检查、化学分析和机械性能试验,通常每一种试验方法都有一个对应的窗体; 另一种是“Miscellaneous”窗体,适用其它检查、测试和试验,包括...

    saidit:Reddit开源叉为SaidIt提供动力

    可以通过两种方式设置Saitit服务器:在独立的物理服务器上,或者通过虚拟机环境(在其他操作系统(例如linux,MacOS或Windows)中运行)进行开发和测试。 设置虚拟机 下载并安装 下载最新的服务器.iso文件“ 64位PC...

    消耗型光纤高温测量仪的研究

    目前,在高温测量中,根据测量探头是否与被测对象接触,测温仪器分为接触式和非接触式两种。接触式测温是感温元件直接与被测对象接触,感受其温度,如热电偶测温仪,优点是测温可靠,缺点是采用贵金属,价格昂贵,抗...

    软件设计规范

    所谓抽象,就是具体化,是范围的界定和比对(两种具体化对象之间的比对)。如果范围界定的完整,那么比对建立的联系就是普遍联系,普遍联系也就是所谓抽象原则。 评价标准。软件架构需要评测。这种评测是“在商言商...

Global site tag (gtag.js) - Google Analytics