qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

JMeter入门(3):录制JMeter脚本

 一般自己手动的设置JMeter会比较麻烦,如果一边操作页面,提交表单,一边能够自动生成JMeter的脚本,则非常方便;
  BadBoy:录制JMeter脚本;
  Donwload URL:http://www.badboy.com.au/download/add
  BadBoy界面如下:
  我们可以在地址输入栏中输入你要访问的页面,比如www.baidu.com,然后查询xiazdong后,点击:停止录制;
  然后点击"File --> Export to JMeter"即可生成JMeter脚本;
  打开后生成如下结构:


  我们只需要运行即可模拟刚才查询"xiazdong"的过程,当然我们可以同时开启1000个线程模拟1000个用户在查询xiazdong;
  图形结果效果如下:
相关文章:
JMeter入门(2):一个简单实例

posted @ 2013-11-18 13:50 顺其自然EVO 阅读(282) | 评论 (0)编辑 收藏

QTP中利用DOM实现拖动浏览器滚动条

  有的时候需要在测试的过程中需要模拟拖到浏览器的滚动条,我们可以通过Dom调用DocumentElement下的ScrollTop方法实现.
  步骤:
  (1)通过DOM获取Page的body高度,这个高度是滚动条滚动的最大范围
  MaxHeight=Pageobj.Object.body.ClientHeight
  (2)通过DOM调用Page的DocumentElement下的ScrollTop方法,为ScrollTop方式传入参数,实现滚动
  Pageobj.Object.DocumentElement.ScrollTop=ScrollHeight(注:ScrollHeight为需要滚动到的位置,单位为像素(PX))
  以下是封装的一个拖到滚动条的函数:
'**********************************************************
'功能:拖到浏览器纵向滚动条
'参数:Pageobj - 需要推动的Page对象
'     ScrollPercentage - 滚动条滚动相对于page高度的百分比(如:0.1表示移动到十分之一处)
'作者:**
'时间:2013-11-08
'**********************************************************
Function DragScrollBar(Pageobj,ScrollPercentage)
'判断ScrollPercentage是否为数字
If IsNumeric(ScrollPercentage) Then
'判断Pageobj对象是否存在
If Pageobj.Exist Then
'获取浏览器body的高度
MaxHeight =  Pageobj.Object.body.ClientHeight
'若ScrollPercentage大于等于1,则滚动条移动到浏览器底部
If  ScrollPercentage>=1Then
ScrollHeight = MaxHeight
'若ScrollPercentage小于1,则滚动条移动到ScrollHeight位置
ElseIf (ScrollPercentage>0 And ScrollPercentage<1) Then
ScrollHeight = MaxHeight * ScrollPercentage
'若ScrollPercentage小于0,则滚动条移动到浏览器顶部
Else
ScrollHeight = 0
End If
'根据ScrollHeight移动浏览器滚动条
Pageobj.Object.DocumentElement.ScrollTop = ScrollHeight
Else
Msgbox "Pageobj对象未找到"
End If
Else
Msgbox "ScrollPercentage参数不正确,必须为数字"
End If
End Function

 实例:
  测试需求:
  (1)打开http://www.baidu.com/more/
  (2)拖到打开界面中的滚动条到窗口的60%处
'关闭IE浏览器
Systemutil.CloseProcessByName "iexplore.exe"
'打开http://www.baidu.com/more/
Systemutil.Run "iexplore.exe","http://www.baidu.com/more/"
Set Browserobj = Browser("title:=百度产品大全")
Set Pageobj =Browserobj.Page("title:=百度产品大全")
'等待浏览器打开完成
While Browserobj.Object.Busy
Wend
'调用DragScrollBar拖到浏览器滚动条到百分之六十处
Call DragScrollBar(Pageobj,"0.6")
版权声明:本文出自 ChinaTNT 的51Testing软件测试博客:http://www.51testing.com/?306685
原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。

posted @ 2013-11-18 13:49 顺其自然EVO 阅读(1128) | 评论 (0)编辑 收藏

Java Web应用的生命周期

 Java Web应用的生命周期。三个阶段:启动,运行,终止。
  无论是web还是servlet他们的生命周期都是有容器来控制的。
  启动:
  1. 把web.xm 加载到内存中
  2. 为web应用创建一个ServletContext对象
  3. 对所有的Filter进行初始化。
  4. 对那些需要在启动时初始化的servlet初始化。
  运行:
  在这个阶段所有的servlet处于待命状态,等待客户端的请求。如果客户端的请求servlet不存在,则初始化对应的servlet。
  销毁:
  1.销毁所有处于运行状态的servlet
  2.销毁所有处于运行状态的Filter
  3.销毁与web应用相关的对象,如servletContext,释放应用占用的资源

posted @ 2013-11-18 13:45 顺其自然EVO 阅读(200) | 评论 (0)编辑 收藏

Android数据库安全permission

 android是基于linux操作系统,linux本身就提供了强大的安全机制。
  1. 应用程序沙箱,将你的代码、数据与其他app隔离
  2. 应用框架层提供了“鲁棒”的加密、权限以及安全的进程间通信机制
  3. ASLR, NX, ProPolice, safe_iop, OpenBSD dlmalloc, OpenBSD calloc, and Linux mmap_min_addr 来处理共享内存的风险
  这片文章主要讲的是大家不要乱用这个权限相关的东西
  使用权限:
  如果你的应用程序可以不使用任何权限当然是最好的,曾经安装一个单机游戏,看到不需要任何权限的的时候就感觉很舒服。
  举例:做应用过程中需要建立一个唯一标识。有很多种方法,主要是通过访问设备信息,有获得imei的 有获得wifi的mac地址的等等,这就需要程序中获得电话操作(imei)或者是wifi操作的权限。比如写了一个应用,当用户看到你需要访问电话的权限的时候就会感觉很奇怪了,我安装一个游戏为啥需啊哟电话的权限啊?其实只是为了获得一个唯一标识。
  定义权限:
private void insertGroup() {
// Internal storage where the DexClassLoader writes the optimized dex file to.
final File optimizedDexOutputPath = getDir("outdex", Context.MODE_PRIVATE);
// Initialize the class loader with the secondary dex file.
DexClassLoader cl = new DexClassLoader(dexInternalStoragePath.getAbsolutePath(),
optimizedDexOutputPath.getAbsolutePath(),
null,
getClassLoader());
Class libProviderClazz = null;
try {
// Load the library class from the class loader.
// 载入从网络上下载的类的全类名
libProviderClazz =
cl.loadClass("com.kunpeng.pim.GroupDao");
// Cast the return object to the library interface so that the
// caller can directly invoke methods in the interface.
// Alternatively, the caller can invoke methods through reflection,
// which is more verbose and slow.
Class<?>[] argTypes = {Context.class};
Constructor<?> constructor = libProviderClazz.getConstructor(argTypes);
IGroupDao lib = (IGroupDao) constructor.newInstance(this);
// Display the toast!
lib.addGroup("test");
} catch (Exception exception) {
// Handle exception gracefully here.
exception.printStackTrace();
}

posted @ 2013-11-18 13:42 顺其自然EVO 阅读(242) | 评论 (0)编辑 收藏

嵌入式操作系统一些基本概念

何为嵌入式系统?
  嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中。简单的说就是系统的应用软件与系统的硬件一体化,类似与BIOS的工作方式。具有软件代码小,高度自动化,响应速度快等特点。特别适合于要求实时的和多任务的体系。
  嵌入式实时多任务操作系统
  实时多任务操作系统(Real Time Operating System)是根据操作系统的工作特性而言的。实时是指物理进程的真实时间。实时操作系统是指具有实时性,能支持实时控制系统工作的操作系统。首要任务是调度一切可利用的资源完成实时控制任务,其次才着眼于提高计算机系统的使用效率,重要特点是要满足对时间的限制和要求。
  实时多任务操作系统与分时多任务操作系统
  它们有明显的区别。具体的说,对于分时操作系统,软件的执行在时间上的要求,并不严格,时间上的错误,一般不会造成灾难性的后果。而对于实时操作系统,主要任务是对事件进行实时的处理,虽然事件可能在无法预知的时刻到达,但是软件上必须在事件发生时能够在严格的时限内作出响应(系统响应时间),即使是在尖峰负荷下,也应如此,系统时间响应的超时就意味着致命的失败。另外,实时操作系统的重要特点是具有系统的可确定性,即系统能对运行情况的最好和最坏等的情况能做出精确的估计。
  实时操作系统中的重要概念
  系统响应时间(System response time )系统发出处理要求到系统给出应答信号的时间。
  任务换道时间(Context-switching time)是任务之间切换而使用的时间。
  中断延迟(Interrupt latency )是计算机接收到中断信号到操作系统作出响应,并完成换道转入中断服务程序的时间。
  实时操作系统应具有如下的功能:
  1) 任务管理(多任务和基于优先级的任务调度)
  2) 任务间同步和通信(信号量和邮箱等)
  3) 存储器优化管理(含ROM的管理)
  4) 实时时钟服务
  5) 中断管理服务
  实时操作系统的工作特性
  实时操作系统中的任务(Task)等同于分时操作系统中的进程(Process)的概念。系统中的任务有四种状态:运行(Executing),就绪(Ready),挂起(Suspended),冬眠(Dormant)。
  运行:获得CPU控制权。
  就绪:进入任务等待队列。通过调度转为运行状态。
  挂起:任务发生阻塞,移出任务等待队列,等待系统实时事件的发生而唤醒。从而转为就绪或运行。
  冬眠:任务完成或错误等原因被清除的任务。也可以认为是系统中不存在了的任务。
  系统中只能有一个任务在运行状态。各任务按级别通过时间片分别获得对CPU的访问权。

posted @ 2013-11-18 13:36 顺其自然EVO 阅读(184) | 评论 (0)编辑 收藏

badboy + jmeter并发性能测试

今天下班时公司安排了一个同事来对项目做集群性能测试,怀着对性能测试的好奇心,下班后没有着急离开,而是等待
  那位同事的到来,然后在旁边学习了下如何使用Badboy和jmeter做性能测试。
  1. 软件介绍
  1.1 Badboy
  Badboy,第一眼看见这个单词,以为是坏孩子的意思,后来一想,它是专门用来给项目找茬来的,取名为Badboy
  倒是平添了几分可爱,呵呵。
  Badboy是用来录制操作过程的,它录制的结果是被jmeter做并发测试的素材使用。
  Badboy首页:http://www.badboy.com.au/
  1.2 Apache jmeter
  Jmeter是Apache下的一个完全基于JAVA开发的测试工具, 可以很方便的用来进行并发测试。
  Jmeter首页:http://jakarta.apache.org/jmeter/
  2. 使用过程
  2.1 录制操作
  (1)打开badboy进行登录的录制工作。(我们来看下163邮箱的登录并发性能如何,嘿嘿。)
  (2)点击登录,然后结束录制,将录制的过程保存下来,保存成jmeter能够使用的格式,Script.jmx:



 2.2 测试并发
  (1)运行Apache Jmeter,文件à打开 ,然后选择刚才保存的录制文件 Script.jmx
  (2)设置模拟并发的线程数量
  (3)添加感兴趣的监听类型
  (4)点击 运行à启动,开始执行并发登录163邮箱操作。


2.3 分析结果

posted @ 2013-11-15 11:14 顺其自然EVO 阅读(375) | 评论 (0)编辑 收藏

JMeter入门(2):一个简单实例

 场景描述:
  自己建立一个服务器端,接受参数:name和age,并将这些数据保存到数据库中;
  http://localhost:8080/Server/SaveServlet?name=xxx&age=xxx
  我们通过JMeter对其进行压力测试
  目标:开1000个线程,每个线程循环1次,全部操作在3秒内完成;
  结构如下:


 结果如下:
相关文章:
JMeter入门(1):JMeter总体介绍及组件介绍

posted @ 2013-11-15 11:13 顺其自然EVO 阅读(364) | 评论 (0)编辑 收藏

LoadRunner脚本录制流程

 1.1 录制流程
  协议选择→设置录制选项→开始录制→插入命令→停止录制→回放验证
  1.2 协议选择
  单协议or多协议
  C/S架构使用的协议可能比较特殊,若不确定可询问开发人员。
  B/S架构使用的协议基本都是HTTP协议。
  1.3 录制选项
  1、录制准备事项
  Application type:可选择需要录制的对象类型,Internet Applications(录制对象是一个网络应用,基于浏览器)、Win32 Applications(支持Win32的标准客户端)。
  Program to record:设定需要录制的程序名,默认为IE,建议不要使用其他的三方的浏览器进行录制,以免出现不兼容。
  URL Address:录制的地址。
  Working directory:用来指定代码的工作目录。
  Record into Action:设置录制内容的存放位置,vuser_init、Action、vuser_end。
  2、录制选项
  Script:基于Web(HTTP/HTML)协议的Vuser脚本是使用C语言作为标准的。
  Protocols:协议列表。
  Recording:录制选项用于设置Web(HTTP/HTML)使用的录制方式,HTML-based Script(以HTML操作为录制级别)、URL-based Script(会录制到所有的HTTP请求)。
  Date Format Extension:将一些常见的编码格式进行转换,便于后期处理,可针对Body、Headers、Cookies、Query String四种数据段进行转码。
  Port Mapping:提供了对端口映射的处理规则。
  Correlation:打开脚本录制时的自动关联选项。
  1.4 开始录制
  当设置好录制选项后,单击OK按钮启动录制。
  首先会看到Recording Bar,随后会看到IE或者指定的应用程序启动。
  1.5 插入命令
  在录制的过程中可以通过Recording Bar添加一些命令。如切分脚本、添加事务的开始点和结束点、添加集合点、添加注释。
  1.6 结束录制
  录制结束后,单击Stop停止录制,客户端和服务器交互协议会被放在Generation Log内,VuGen随后会对协议交互进行分析,生成脚本。
  1.7 回放验证
  脚本生成后,单击菜单栏上的Run按钮回放脚本。回放中可以在Replay Log日志栏中看到脚本执行的日志信息,当脚本回放完成后,可打开Test Results验证回放结果,Pass状态说明脚本运行正常。

posted @ 2013-11-15 11:13 顺其自然EVO 阅读(3154) | 评论 (0)编辑 收藏

Java内存回收机制

一、Java对象在内存引用状态
  内存泄露:程序运行过程中,会不断分配内存空间,那些不再使用的内存空间应该即时回收它们,从而保证系统可以再次使用这些内存,如果存在无用的内存没有被回收回来,这就是内存泄漏.
  (1)强引用
  这是java程序中最常见的引用方式,程序创建一个对象,并把这个对象赋给一个引用变量,这个引用变量就是强引用.java程序可通过强引用来访问实际的对象。当一个对象被一个或一个以上的强引用变量引用时,它处于可达状态,它不可能被系统垃圾回收机制回收。
  强引用是Java编程中广泛使用的引用类型,被强引用所引用的Java对象绝不会被垃圾回收机制回收,即使系统内存紧张;即使有些Java对象以后永远也不会被用到,JVM也不会回收被强引用所引用的Java对象.
  由于JVM肯定不会回收强引用所引用的JAVA对象,因此强引用是造成JAVA内存泄漏的主要原因。
  如 ReceiptBean rb=new ReceiptBean(); rb就代表了一种强引用的方式
  (2)软引用
  软引用需要通过SoftReference类来实现,当一个对象只具有软引用时,它可能被垃圾回收机制回收。对于只有软引用的对象而言,当系统内存空间足够时,它不会被系统回收,程序也可以使用该对象;当系统内存空间不足时,系统将回收它.
  软引用通常用在对内存敏感的程序中,软引用是强引用很好的替代。对于软引用,当系统内存空间充足时,软引用与强引用没有太大的区别,当系统内存空间不足时,被软引用所引用的JAVA对象可以被垃圾回收机制回收,从而避免系统内存不足的异常.
  当程序需要大量创建某个类的新对象,而且有可能重新访问已创建老对象时,可以充分使用软引用来解决内存紧张的问题。
  例如需要访问1000个Person对象,可以有两种方式
  方法一 依次创建1000个对象,但只有一个Person引用指向最后一个Person对象
  方法二 定义一个长度为1000个的Person数组,每个数组元素引用一个Person对象.
  对于方法一,弱点很明显,程序不允许需要重新访问前面创建的Person对象,即使这个对象所占的空间还没有被回收。但已经失去了这个对象的引用,因此也不得不重新创建一个新的Person对象(重新分配内存),而那个已有的Person对象(完整的,正确的,可用的)则只能等待垃圾回收
  对于方法二,优势是可以随时重新访问前面创建的每个Person对象,但弱点也有,如果系统堆内存空间紧张,而1000个Person对象都被强引用引着,垃圾回收机制也不可能回收它们的堆内存空间,系统性能将变成非常差,甚至因此内存不足导致程序中止。
  如果用软引用则是一种较好的方案,当堆内存空间足够时,垃圾回收机制不会回收Person对象,可以随时重新访问一个已有的Person对象,这和普通的强引用没有任何区别。但当heap堆内存空间不足时,系统也可以回收软引用引用的Person对象,从而提高程序运行性能,避免垃圾回收.
  当程序使用强引用时,无论系统堆内存如何紧张,JVM垃圾回收机制都不会回收被强引用所引用的Java对象,因此最后导致程序因内存不足而中止。但如果把强引用改为软引用,就完成可以避免这种情况,这就是软引用的优势所在.
  (3)弱引用
  弱引用与软引用有点相似,区别在于弱引用所引用对象的生存期更短。弱引用通过WeakReference类实现,弱引用和软引用很像,但弱引用的引用级别更低。对于只有弱引用的对象而言,当系统垃圾回收机制运行时,不管系统内存是否足够,总会回收该对象所占用的内存。当然,并不是说当一个对象只有弱引用时,它就会立即被回收,正如那些失去引用的对象一样,必须等到系统垃圾回收机制运行时才会被回收.
  总结说明:
  1.弱引用具有很大的不确定性,因为每次垃圾回收机制执行时都会回收弱引用所引用的对象,而垃圾回收机制的运行又不受程序员的控制,因此程序获取弱引用所引用的java对象时必须小心空指针异常,通过弱引用所获取的java对象可能是null
  2.由于垃圾回收的不确定性,当程序希望从弱引用中取出被引用对象时,可能这个被引用对象已经被释放了。如果程序需要使用被引用的对象,则必须重新创建该对象。
  (4)虚引用
  软引用和弱引用可以单独使用,但虚引用不能单独使用,单独使用虚引用没有太大的意义。虚引用的主要作用就是跟踪对象被垃圾回收的状态,程序可以通过检查虚引用关联的引用队列中是否包含指定的虚引用,从而了解虚引用所引用的对象是否将被回收.
  引用队列由java.lang.ref.ReferenceQueue类表示,它用于保存被回收对象的引用。当把软引用,弱引用和引用队列联合使用时,系统回收被引用的对象之后,将会把被回收对象对应的引用添加到关联的引用队列中。与软引用和弱引用不同的是,虚引用在对象被释放之前,将把它对应的虚引用添加到关联的队列中,这使得可以在对象被回收之前采取行动。
  虚引用通过PhantomReference类实现,它完全类似于没有引用。虚引用对对象本身没有大的影响,对象甚至感觉不到虚引用的存在。如果一个对象只有一个虚引用,那它和没有引用的效果大致相同。虚引用主要用于跟踪对象被垃圾回收的状态,虚引用不能单独使用,虚引用必须和队列ReferenceQueue联合使用.


posted @ 2013-11-15 11:12 顺其自然EVO 阅读(199) | 评论 (0)编辑 收藏

Oracle数据库的备份方法

 1、引言
  Oracle数据库的备份方法很多,无论使用那种备份方法,备份的目的都是为了在出现故障后能够以尽可能小的时间和代价恢复系统。比如使用export实用程序导出数据库对象、使用Oracle备份数据库、使用Oracle对称复制、使用Oracle并行服务器、使用Oracle冷备份、使用Oracle热备份等各种备份方法都有其优缺点、适用的场合和相应的软硬件要求。本文主要就用export实用程序导出数据库对象、Oracle冷备份、Oracle热备份这三种最基本的备份方法进行详细的探讨,分析各自的优缺点和适用的场合,并给出自动执行这些备份方案的脚本文件。
  2、三种备份方案的比较
  冷备份
  冷备份是Oracle最简单的一种备份;执行冷备份前必须关闭数据库;然后使用操作系统实用工具或者第三方工具备份所有相关的数据库文件。
  优点:能简单快速地备份。能简单快速地恢复。执行简单。
  缺点:必须关闭数据库,不能进行点恢复。
  热备份
  热备份是当数据库正在运行时进行数据备份的过程。执行热备份的前提是:数据库运行在可归档日志模式。适用于24X7不间断运行的关键应用系统。
  优点:备份时数据库可以是打开的。热备份可以用来进行点恢复。初始化参数文件、归档日志在数据库正常运行时是关闭的,可用操作系统命令拷贝。
  缺点:执行过程复杂。由于数据库不间断运行,测试比较困难。不能用操作系统实用工具拷贝打开的文件。必须使用Oracle提供的ocopy工具来拷贝打开的文件。热备份可能造成CPU、I/O过载,应在数据库不太忙时进行。
  Export导出数据库对象
  冷备份和热备份都备份物理数据库文件,因而被称为物理备份。而export备份的是数据库对象,因此被称为逻辑备份。
  优点:能执行对象或者行恢复。备份和恢复速度更快。能够跨操作系统平台迁移数据库。数据库可一直运行。
  缺点:export并不是冷备份和热备份的替代工具。冷、热备份可保护介质失效。export备份可保护用户或应用错误。
  3、冷备份方案的实施
  3.1 冷备份数据库的步骤
  (1)关闭数据库;
  (2)备份所有相关的数据库文件:初始化参数文件、控制文件(可用select name from v$controlfile;列出所有
  控制文件)、数据文件(可用select name from v$datafile;列出所有数据文件)、Redo日志(可用select member from v$logfile;列出所有redo日志文件)、归档的Redo日志(可用select sequence#,first_time from v$loghist;列出所有归档redo日志文件的顺序号和产生时间)。
  3.2 冷备份数据库的脚本文件coldbackup.bat
  4、热备份方案的实施
  4.1 热备份数据库的前提条件:数据库运行在归档模式
  Oracle数据库的redo日志记录在数据库上进行的所有活动。LGWR后台进程以一种循环方式写这些日志文件,从第一个redo日志到下一个,直到该组的最后一个,然后由从第一个日志写起。
  在非归档模式下,当循环写到最后一个日志文件后,就重写第一个日志。因此,非归档模式下唯一的数据库恢复办法就是使用冷备份。
  在归档模式下,当redo日志满时,一个ARCH后台进程就读取全部redo日志,然后将其写到归档日志。因此,可以使用热备份和点恢复。在归档日志模式下,如果归档日志目的空间已满,数据库活动将暂时停止,只有释放一些空间后,数据库才能继续运行。通常,background_dump_destination将产生一个跟踪文件来显示归档方面的问题。
  Oracle数据库安装默认运行在非归档模式,通过以下步骤可以从非归档模式转换为归档模式:
  (1)编辑参数文件init.ora,设置以下参数
  # 设置数据库自动归档
  log_archive_start = true
  # 设置归档日志文件的目录,该目录必须事先已建立,并有大量可利用的空间
  log_archive_dest_1="location=%oracle_base%\ oradata\%oracle_sid%\archive"
  # 设置归档日志文件名的格式。%s表示顺序号,%t表示线程号。
  log_archive_format = "%oracle_sid%%T%S.ARC"
  (2)在sqlplus上运行以下命令
sqlplus>;connect sys/qazwsx as sysdba
sqlplus>;shutdown immediate;
sqlplus>;startup mount exclusive;
sqlplus>;alter database archivelog;
sqlplus>;alter database open;
sqlplus>;shutdown immediate;
  (3)执行数据库冷备份
  当数据库运行在归档模式下,数据库恢复过程要求使用冷备份时,归档日志是必需的。
  (4)正常启动数据库,并确认数据库运行在归档模式
sqlplus >; startup;
sqlplus >; select * from v$database; 其log_mode会显示数据库是否归档模式
sqlplus >; archive log list; 也会显示数据库是否归档模式

 如果Oracle数据库运行在归档模式,当进行数据库维护时,可能需要暂停数据库的归档,在完成维护后,再重新启动归档模式。通过以下步骤可以从归档模式转换为非归档模式:
sqlplus>;connect sys/qazwsx as sysdba
sqlplus>;shutdown immediate;
sqlplus>;startup mount exclusive;
sqlplus>;alter database noarchivelog;
sqlplus>;alter database open;
sqlplus >; select * from v$database; 其log_mode会显示数据库是否归档模式
sqlplus >; archive log list; 也会显示数据库是否归档模式
  4.2 热备份数据库的步骤
  (1)拷贝init.ora文件到备份目录(参数文件在数据库启动后处于关闭状态)。
  (2)将需要备份的某个表空间置于开始备份模式。
  (3)使用ocopy.exe拷贝表空间,然后将该表空间置于结束备份模式中(ocopy.exe不能用于直接拷贝联机的数据库文件)。
  (4)对数据库中的每个表空间执行步骤2和3(可以通过视图dba_tablespaces和v$datafile查看数据库中有哪些表空间和数据文件)。
  (5)通过在sqlplus上执行archive log list命令获取当前的日志顺序号,从oldest online log sequence开始到current log sequence的联机redo日志应该是热备份的一部分。
  (6)在sqlplus上执行alter system switch logfile;命令来强迫日志切换,以便所有的日志都被归档。
  (7)使用alter database backup controlfile to trace;命令获得控制文件的一个备份,可以到%oracle_base%\admin\%oracle_sid%\udump目录中寻找最新的跟踪文件,其中有重建控制文件的全部命令。
  (8)使用windows nt的命令从%log_archive_dest%中拷贝归档的日志文件到备份目录。
  4.3 热备份数据库的脚本文件hotbackup.bat
  5、使用export作为备份策略
  5.1 export的命令选项说明
  Oracle数据库的exp工具提供tables、users、full database、tablespace四种级别的导出方式,把指定的数据库内容导出到一个或者多个oracle二进制文件中,该文件只允许用imp工具来读取,imp的命令选项可用imp help=y来查阅。
  您可以通过输入 EXP 命令以及各种自变量来控制“导出”的运行方式。要指定参数,您可以使用关键字:
  格式:EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
  实例:EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
  或 TABLES=(T11,T12),如果 T1 是分区表
  USERID 必须是命令行中的第一个参数。
  下列关键字仅用于可传输的表空间
  TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
  TABLESPACES 将传输的表空间列表
  5.2 export备份数据库的脚本文件expbackup.bat
  6、各种备份策略的自动执行方法
  不管是冷备份、热备份,还是export备份;不管是unix平台,还是windows平台,都可以利用at命令来定时、自动执行上述备份策略。AT 命令安排在特定日期和时间运行命令和程序,在windows nt平台上必须首先运行调度服务(schedule),才能使用at命令。
  AT命令用法如下:
  AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]]
  AT [\\computername] time [/INTERACTIVE]
  [ /EVERY:date[,...] | /NEXT:date[,...]] "command"
  \\computername 指定远程计算机。 如果省略这个参数,会计划在本地计算机上运行命令。
  id 指定给已计划命令的识别号。
  /delete 删除某个已计划的命令。如果省略 id,计算机上所有已计划的命令都会被删除。
  /yes 不需要进一步确认时,跟删除所有作业的命令一起使用。
  time 指定运行命令的时间。
  /interactive 允许作业在运行时,与当时登录的用户桌面进行交互。
  /every:date[,...] 每个月或每个星期在指定的日期运行命令。如果省略日期,则默认为在每月的本日运行。
  /next:date[,...] 指定在下一个指定日期(如下周四)运行命令。如果省略日期,则默认为在每月的本日运行。
  "command" 准备运行的 Windows NT 命令或批处理程序。
  举例如下:
  (1) 每周五19:00执行冷备份
  at 19:00 /every:F "coldbak.cmd"
  (2) 每周二20:00执行热备份
  at 20:00 /every:T "coldbak.cmd"
  (3) 每周一、二、三、四、五21:00执行export备份
  at 20:00 /every:M,T,W,Th,F "expbak.cmd"

posted @ 2013-11-15 11:10 顺其自然EVO 阅读(235) | 评论 (0)编辑 收藏

仅列出标题
共394页: First 上一页 182 183 184 185 186 187 188 189 190 下一页 Last 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜