PMP ,专注于WEB功能测试、性能测试、安全测试的研究,从事全面质量管理工作。曾任多家公司测试经理、测试主管。在电子政务、银行、电商、跨境电商、直播电商领域工作多年,曾获得某龙头集团公司公测一等奖,曾任职某头部直播电商公司测试团队负责人,具有业务敏感性,擅长从0到1搭建测试团队,具有海外工作经历,以及质量管理体系搭建。邮箱:89233502@qq.com

发布新日志

  • oracle数据库备份

    2014-05-21 12:49:15

    oracle数据库备份

    1. 文件查看

      数据文件、控制文件、日志文件查看如下:

      select file#, status, enabled, name from V$datafile;--查看数据文件

      select * from v$controlfile;--控制文件

      select * from v$logfile;--日志文件

      2. 三种备份方法

      1)导入/导出(import/export

      1.支持类型: table, user tablespace full database

      2. 导入导出例子:

    exp system/manager@TEST file=d:\export.dmp full=y--将数据库TEST完全导出(全库备份),用户名system 密码manager 导出到D:\daochu.dmp

    exp system/manager@TEST file=d:\export.dmp wner=(system,sys)--systemsys的表导出

    exp aichannel/aichannel@TEST file= d:export.dmp tables= (tab1tab2)--tab1表和tab2表导出

    imp system/manager@TEST file=d:\export.dmp tables=(tab1,tab2);--export.dmptab1表和tab2表导入

    imp system/manager@TEST file=d:\export.dmp;

      3. 注意:若用户权限不够时需要修改权限

      --先以system/manager登录

      --授予权限

      grant exp_full_database, imp_full_database to username;

      2)冷备份(非归档模式)

      1. 步骤:shutdown数据库---> copy文件---> start数据库

      2.  例子:

    connect tigger/sccot as sysdba;

    shutdown immediate;

    cp d:/test*.dbf d:export   --cp 文件  目标文件夹    数据文件

    cp d:/test*.ctl d:export   --控制文件

    cp d:/test*.log d:export   --日志文件

    startup;

      3)热备份(归档模式)

      1. 说明:前提条件是数据库运行在归档模式(oracle数据库安装默认运行在非归档模式)

      2. 将数据库转换为归档模式如下:(注意数据库必须已装载到此实例并且不在任何实例中打开)

      --需先关闭数据库并加载数据库

    shutdown immediate;

    startup mount;--startup nomount 启动实例;startup mount 启动实例加载数据库; startup 启动实例加载数据库打开数据库)

    alter database archivelog;--数据库必须已装载到此实例并且不在任何实例中打开

      3. 归档相关操作

    archive log list;--查看是否出于归档模式;

    alter system set log_archive_start =true scope =spfile; --启用主动归档

    select name from v$archived_log; --查询归档日志

    alter system set log_achive_start=false scope=spfile;--将数据库切换为归档模式

    archive log stop;

    archive log start;

     4. 热备份具体步骤如下:

    shutdown immediate;

    startup mount;

    alter database archivelog;

    alter database open;

    alter tablespace users begin backup; --设置备份模式;

    host copy d:\oracle\*.dbf d:\export;--拷贝

    alter tablespace users end backup ;--结束备份状态

    alter system switch logfile--切换日志,使用当前日志归档

      5. 不足之处:不能出错

      6. 优点:备份时数据库仍然可以使用,备份时间短

      3.RMAN备份和恢复工具(rocovery manager

      1)说明:

      1.RMAN ORACLE提供的一个备份与恢复的工具,可以用来执行完全或不完全的数据库恢复。

      2.RMAN不能用于备份初始化参数文件和口令文件。

      3. 与传统工具相比,RMAN具有独特的优势:跳过未使用的数据块。当备份一个RMAN备份集时,RMAN不会备份从未被写入的数据块,而传统的方式无法获知那些是未被使用的数据块。

      4. RMAN可以进行增量备份(增量备份是针对于上一次备份(无论是哪种备份):备份上一次备份后,所有发生变化的文件)

      2)例子:

      --准备工作:

      connect tiger/sccot;

      startup mount

      alter database archivelog

      alter database open

      --查看备份相关信息

      list backupset;

      --备份全库

      backup database;

      --备份表空间

      backup tablespace tp1;

      --备份全库删除旧的归档日志

      backup databse plus archivelog delete input;--备份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志

  • 数据库测试

    2008-10-17 12:36:30

    数据库测试
       随着软件业的迅猛发展,我们的开发也从以前的单层结构进入了三层架构甚至现在多层架构的设计,而数据库从以前一个默默无闻的后台仓库,逐渐成为了数据库系统,而数据库开发设计人员成为了炙手可热的核心人员。以前我们往往把数据库操作写在应用层,从而提高各个模块的独立性和易用性,而现在越来越多的数据库操作被作为存储过程直接放在数据库上进行执行来提高执行效率和提高安全性。

      数据库开发既然在软件开发的比重逐步提高,随之而来的问题也突出。我们以前往往重视对代码的测试工作,随着流程技术的日益完善,软件质量得到了大幅度的提高,但数据库方面的测试仍然处于空白。我们从来没有真正将数据库作为一个独立的系统进行测试,而是通过对代码的测试工作间接对数据库进行一定的测试。随着数据库开发的日益升温,数据库测试也需要独立出来进行符合自身特点的测试工作。数据库开发和应用开发并没有实质上的区别,所以软件测试的方法同样适用于数据库测试。

      从测试过程的角度来说我们也可以把数据库测试分为:

      系统测试

      传统软件系统测试的测试重点是需求覆盖,而对于我们的数据库测试同样也需要对需求覆盖进行保证。那么数据库在初期设计中也需要对这个进行分析,测试.例如存储过程,视图,触发器,约束,规则等我们都需要进行需求的验证确保这些功能设计是符合需求的.另一方面我们需要确认数据库设计文档和最终的数据库相同,当设计文档变化时我们同样要验证改修改是否落实到数据库上。

      这个阶段我们的测试主要通过数据库设计评审来实现。

      集成测试

      集成测试是主要针对接口进行的测试工作,从数据库的角度来说和普通测试稍微有些区别对于数据库测试来说,需要考虑的是:

      数据项的修改操作;
      数据项的增加操作;
      数据项的删除操作;
      数据表增加满;
      数据表删除空;
      删除空表中的记录;
      数据表的并发操作;
      针对存储过程的接口测试;
      结合业务逻辑做关联表的接口测试;
      同样我们需要对这些接口考虑采用等价类、边界值、错误猜测等方法进行测试。

      单元测试

      单元测试侧重于逻辑覆盖,相对对于复杂的代码来说,数据库开发的单元测试相对简单些,可以通过语句覆盖和走读的方式完成系统测试相对来说比较困难,这要求有很高的数据库设计能力和丰富的数据库测试经验。而集成测试和单元测试就相对简单了。

      而我们也可以从测试关注点的角度对数据库进行分类:

      功能测试
      对数据库功能的测试我们可以依赖与工具进行。

      DBunit
      一款开源的数据库功能测试框架,可以使用类似与Junit的方式对数据库的基本操作进行白盒的单元测试,对输入输出进行校验。

      QTP
      大名鼎鼎的自动测试工具,通过对对象的捕捉识别,我们可以通过QTP来模拟用户的操作流程,通过其中的校验方法或者结合数据库后台的监控对整个数据库中的数据进行测试。个人觉得比较偏向灰盒。

      DataFactory
      一款优秀的数据库数据自动生成工具,通过它你可以轻松的生成任意结构数据库,对数据库进行填充,帮助你生成所需要的大量数据从而验证我们数据库中的功能是否正确。这是属于黑盒测试

      数据库性能

      虽然我们的硬件最近几年进步很快,但是我们需要处理的数据以更快的速度在增加。几亿条记录的表格在现在是司空见惯的,如此庞大的数据量在大量并发连接操作时,我们不能像以前一样随意的使用查询,连接查询,嵌套查询,视图,这些操作如果不当会给系统带来非常巨大的压力,严重影响系统性能。

      性能优化分4部分:

      1.物理存储方面
      2.逻辑设计方面
      3.数据库的参数调整
      4.SQL语句优化

      我们如何对性能方面进行测试呢,业界也提供了很多工具。

      通过数据库系统的SQL语句分析工具,我们可以分析得到数据库语句执行的瓶颈,从而优化SQL语句。

      Loadrunner
      这个不用多说,我们可以通过对协议的编程来对数据库做压力测试。

      Swingbench(这是一个重量级别的feature,类似LR,而且非常强大,只不过专门针对oracle而已)

      数据库厂商也意识到这点,例如:

      oracle11g已经提供了real application test,提供数据库性能测试,分析系统的应用瓶颈。

      还有很多第三方公司开发了SQL语句优化工具来帮助你自动的进行语句优化工作从而提高执行效率。

      安全测试

      软件日益复杂,而数据又成为了系统中重中之重的核心,从以往对系统的破坏现在更倾向于对数据的获取和破坏。而数据库的安全被提到了最前端。自从SQL 注入攻击被发现,冒失万无一失的数据库一下从后台变为了前台,而一旦数据库被攻破,整个系统也会暴露在黑客的手下,通过数据库强大的存储过程,黑客可以轻松的获得整个系统的权限。而SQL的注入看似简单缺很难防范,对于安全测试来说,如何防范系统被注入是测试的难点。业界也有相关的数据库注入检测工具,来帮助用户对自身系统进行安全检测。

      对于这点来说业界也有标准,例如ISO IEC 21827,也叫做SSE CMM 3.0,是CMMISO的集成的产物,专门针对系统安全领域的另外一方面,数据库的健壮性,容错性和恢复能力也是我们测试的要点,我们也可以发现功能测试,性能测试,安全测试,是一个由简到繁的过程,也是数据库测试人员需要逐步掌握的技能,这也是以后公司对数据库测试人员的要求

Open Toolbar