发布新日志

  • DB2:如何使用配置助手( Configuration Aistant )

    2010-07-21 11:25:27

     
    DB2:如何使用配置助手( Configuration Aistant )
    发布者:豆豆网  日期: 2009-11-16 00:00:00 浏览次数:33 (共有0条评论) 查看评论 | 我要评论
     

    目标

      可以使用配置助手( Configuration Assistant )快速轻松地配置远程数据库连接。在本次实验中,将对一个远程 DB2 服务器(也就是您旁边的人的工作站)上的数据库进行编目。您将尝试使用 Search 和 Discover 模式。对数据库进行编目之后,就能够像访问本地数据库一样访问远程数据库。DB2 会在“幕后”执行所有通信过程。

      前提

      首先,确保您的机器上已经安装了 DB2 Express-C V9.5 免费数据库服务器;

      您已经阅读了 “DB2Express-C 快速入门”(中文版) 中的相关内容。

      您已经学习了本系列实验的前几篇文章。

      您熟悉你要连接的远程数据库的基本信息。

      步骤

      1.熟悉以下信息:

      远程数据库信息:

      通信协议(PR) Protocol = TCPIP

      IP 地址(IP)   IP Address or hostname = 192.168.1.1

      端口号(PN)         Instance Port Number = 50000

      数据库名称(DB)         Database Name = SAMPLE

      提示:

      在 Windows 上获取主机名的方法是在命令窗口中输入 hostname

      在 Windows 上获取 IP 地址的方法是在命令窗口中输入 ipconfig

      2.打开“配置助手”。(提示:可以通过 Start 菜单访问它。)

      从开始菜单中找到 IBM DB2 的配置助手,单击启动它,如下图 1 所示。

      图 1. 启动配置助手

    DB2 Express-C 9 DBA 和开发人员实验教程,快速实验 5:如何使用配置助手( Configuration Assistant )

      3.打开“所选”菜单并选择 “使用向导来添加数据库”子菜单。

      4.在向导的“源”页面上,选择“手工配置与数据库的连接”选项。单击“下一步”按钮进入向导的下一页。

      图 2. 选择建立连接的方式

    DB2 Express-C 9 DBA 和开发人员实验教程,快速实验 5:如何使用配置助手( Configuration Assistant )

      

      5.在向导的 “协议” 页面上,选择 TCP/IP 选项。单击 Next 按钮进入向导的下一页。

      图 3. 选择通信协议

    DB2 Express-C 9 DBA 和开发人员实验教程,快速实验 5:如何使用配置助手( Configuration Assistant )

      

      6.在向导的 TCP/IP 页面上,输入在第 1 步中记下来的主机名或 IP 地址。输入在第 1 步中记下来的端口号。单击“下一步”按钮进入向导的下一页。

      图 4. 指定 TCP/IP 通信参数

    DB2 Express-C 9 DBA 和开发人员实验教程,快速实验 5:如何使用配置助手( Configuration Assistant )

      注意:如果在本地 服务文件中有一个条目,其中定义了与远程服务器上实例监听的端口对应的端口号,那么可以使用“服务名称”( Service Name )选项。在使用这个选项时,DB2 会查看本地机器(而不是服务器)上的服务文件。如果要使用这个选项,就必须在这个文件中添加一个条目。

      7.在向导的“数据库”页面的“数据库名称”框中,输入第 1 步中记下来的远程服务器上的数据库名。注意,“数据库别名”(Database Alias )框会自动填上相同的值。数据库别名是本地应用程序用来连接这个数据库的名称。因为您已经定义了一个名为 SAMPLE 的本地数据库,所以 DB2 不允许对同名的另一个数据库进行编目。因此,必须使用另一个别名。对于这个示例,将数据库别名改为 SAMPLE1。如果愿意,可以输入可选的注释。单击“下一步” 按钮进入向导的下一页。

      图 5. 指定要连接的数据库的名称

    DB2 Express-C 9 DBA 和开发人员实验教程,快速实验 5:如何使用配置助手( Configuration Assistant )

      

      8.在向导的“数据源”( Data Source )页面上,可以将这个新数据库(数据源)注册为 ODBC 数据源(这个步骤是可选的)。这会在 Windows ODBC Manager 中注册数据源。对于这个示例,因为不使用 ODBC,所以未选中“为 CLI/ODBC 注册此数据库”。单击 “下一步”按钮进入向导的下一页。

      图 6. 将此数据库注册为数据源

    DB2 Express-C 9 DBA 和开发人员实验教程,快速实验 5:如何使用配置助手( Configuration Assistant )

      

      9.在向导的“节点选项”( Node Options )页面上,指定远程数据库所在的服务器的操作系统。这个实验中的所有工作站都使用 Microsoft Windows。确保在下拉列表中选择 Windows。“实例名称”框应该是 DB2。如果不是,就将它的值设置为 DB2。单击“下一步”按钮进入向导的下一页。

      图 7. 指定节点选项

    DB2 Express-C 9 DBA 和开发人员实验教程,快速实验 5:如何使用配置助手( Configuration Assistant )

      

      10.在向导的“系统选项”( System Options )页面上,检查系统和主机名是否正确,检查操作系统设置。单击“下一步”按钮进入向导的下一页。

      图 8. 指定系统选项

    DB2 Express-C 9 DBA 和开发人员实验教程,快速实验 5:如何使用配置助手( Configuration Assistant )

      11.在向导的“安全性选项”( Security Options )页面上,可以指定希望执行用户身份验证的位置和使用的身份验证方法。选择“使用服务器‘ DBM ’ 中的认证值”( Use authentication value in server’s DBM Configuration )选项。这将使用远程实例的配置文件中 AUTHENTICATION 参数指定的方法。单击“完成”按钮,对远程数据库进行编目并关闭向导。这时应该会出现一个确认框。单击“测试连接”按钮,确认可以成功地连接数据库。另外,这也会确认您提供的用户名和密码是远程服务器上定义的有效用户名和密码(因为服务器的 AUTHENTICATION 参数很可能设置为 SERVER)。如果连接测试成功,就会成功地对远程数据库进行编目。如果测试不成功,那么返回到向导中并检查指定的值是否正确。(单击“更改”按钮返回到向导设置。)如果你还想添加此远程服务器上的其他数据库,单击“添加”按钮继续添加数据库。

      图 9. 指定安全性选项

    DB2 Express-C 9 DBA 和开发人员实验教程,快速实验 5:如何使用配置助手( Configuration Assistant )

      

      图 10. 测试数据库连接

    DB2 Express-C 9 DBA 和开发人员实验教程,快速实验 5:如何使用配置助手( Configuration Assistant )

      图 11. 选择数据库连接类型

    DB2 Express-C 9 DBA 和开发人员实验教程,快速实验 5:如何使用配置助手( Configuration Assistant )

      注:根据需要选择测试的连接类型,一般我们可以选择 JDBC,输入正确的“用户标识”和“密码” 进行测试。

      12.测试连接正确后,我们可以打开 Control Center (控制中心) 并尝试查看刚才编目的远程数据库以及其中的数据库表。

      图 12. 验证数据库编目是否正确

    DB2 Express-C 9 DBA 和开发人员实验教程,快速实验 5:如何使用配置助手( Configuration Assistant )

      

      13.返回到 “配置助手” 并尝试对另一个数据库进行编目,这次使用“搜索网络”( Search the Network )选项(如图 1 中的选项所示)。按照与手工配置连接时相同的方式使用向导。注意,在大型网络上,搜索可能要花费很长时间。

  • oracle 删除用户出错解决方法

    2010-01-04 13:54:14

    问题描述:

    在执行

    drop user AAA;

    删除用户时,出现错误:

    ORA-00604:递归SQL层1出现错误

    ORA-00942:表或视图不存在

    解决办法:

    第一步,设置sql_trace=true,以便在运行sql语句后在D:\oracle\admin\ORADB00\udump下生成跟踪文件。

    alter session sql_trace=true;

    第二步,运行

    drop user AAA;

    出错后,查看最新的跟踪文件,可以看到最后几行中显示在执行

    delete from system.AQ$_INTERNET_AGENT_PRIVS where ....

    时出现的ORA-00942:表或视图不存在这个错误。

    执行

    desc system.AQ$_INTERNET_AGENT_PRIVS

    也显示表不存在

    说明表AQ$_INTERNET_AGENT_PRIVS不存在,只需创建它即可。

    第三步,上网查找表AQ$_INTERNET_AGENT_PRIVS的创建,发现只要运行D:\oracle\ora92\rdbms\admin\catqueue.sql即可。执行

    @D:\oracle\ora92\rdbms\admin\catqueue.sql

    后,再执行

    desc system.AQ$_INTERNET_AGENT_PRIVS
    可以看到该表的结构。

    最后再执行删除用户的操作:

    drop user AAA;

    就可以正常删除用户了

     

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lilijun4143/archive/2008/07/26/2716484.aspx

  • 淺談SQL Server 2005 XQuery新功能(2)

    2009-11-27 11:27:27

    3.3.5 內容函數 (Context Functions) :此類函數在XQuery陳述式所指出的節點中依指定的位置取得資料,其函數說明如表3-5所示。

    3-5 SQL Server 2005 XQuery內容函數

    函數名稱

    說明

    last()

    傳回目前所處理序列中的項目號碼。具體而言,它會傳回序列中最後一個項目的整數索引。序列中第一個項目的索引值為 1

    position()

    傳回整數值,以指出目前所處理的項目序列中內容項目的位置。

    其用法如下:

    Example:

    declare @x xml

    set @x='

    <gun bore="9mm"><item>M92F</item>

    <item>G-19</item>

    <item>MP5</item>

    </gun>

    <gun bore="5.56"><item>M16</item>

    <item>G36C</item>

    <item>M4A1</item>

    <item>M249</item>

    </gun>'

    select @x.query('for $i in /gun[last() ]

    return

    $i/*[position() <=2]')

    Result:

    <item>M16</item>

    <item>G36C</item>

     

    3.3.6 序列的相關函數 (Functions on Sequences) :此類函數在處理XQuery陳述式所指出的節點的資料序列,可做空序列檢查、排除重覆資料等運算,其函數說明如表3-6所示。

    3-6 SQL Server 2005 XQuery序列的相關函數

    函數名稱

    說明

    empty($arg as item() *)

    如果 $arg 的值是空序列,則傳回 True。否則,此函數會傳回 False

    distinct-values($arg as xdt:anyAtomicType*)

    移除 $arg 所指定的時序中的重複值。如果 $arg 是空白時序,則函數會傳回空白時序。

    id($arg as xs:IDREF*)

    傳回含有 xs:ID 值的元素節點序列,這些值符合 $arg 所提供的一或多個 xs:IDREF 值。

    其用法如下:

    Example:

    declare @x xml

    set @x='

    <gun><item>M16</item>

    <item>G36C</item>

    <item>G36C</item>

    <item>M4A1</item>

    <item>M4A1</item>

    <item>M249</item>

    </gun>

    <gun bore="7.62"><item>T74</item>

    <item>AK47</item>

    </gun>'

    select @x.query('

    for $i in distinct-values(/gun[empty(@bore) ]/item)

    return <item>{$i}</item>')

    Result:

    <item>M16</item>

    <item>G36C</item>

    <item>M4A1</item>

    <item>M249</item>

     

    3.3.7 彙總函數 (Aggregate Functions) :針對XQuery中指定的節點的資料,求取其總數,對於數值型資料可以計算其平均、最大值、最小值以及加總等彙總運算,其函數說明如表3-7所示。

    3-7 SQL Server 2005XQuery彙總函數

    函數名稱

    說明

    count($arg as item() *)

    傳回 $arg 指定時序中所包含的項目號碼。

    avg($arg as xdt:anyAtomicType*)

    傳回數字序列的平均值。

    min($arg as xdt:anyAtomicType*)

    從不可部份完成值 $arg 的序列傳回,一個值的項目少於所有其他的值。

    max($arg as xdt:anyAtomicType*)

    從不可部份完成值的序列 $arg 中,傳回其值大於所有其他項目之值的項目。

    sum($arg as xdt:anyAtomicType*)

    傳回數字序列的總和。

    其用法如下:

    Example:

    declare @x xml

    set @x = '<root>

    <item value="1">a</item>

    <item value="3">b</item>

    <item value="2">c</item>

    <item value="5">d</item>

    <item value="4">e</item>

    </root>'

    select @x.query('

    for $i in /root

    return

    <s>count: {count($i/item) };

    avg:{avg($i/item/@value[1]) };

    min:{min($i/item/@value[1]) };

    max:{max($i/item/@value[1]) };

    sum:{sum($i/item/@value[1]) }</s>

    ')

    Result:

    <s>count: 5;

    avg:3;

    min:1;

    max:5;

    sum:15</s>

     

    3.3.8 建構函式函數 (Constructor Functions) :可以讓使用者自行訂義XSD類型,其函數說明如表3-8所示。

    3-8 SQL Server 2005 XQuery建構函式函數

    函數名稱

    說明

    TYP($atomicvalue as xdt:anyAtomicType)

    建構函式函數可由指定輸入,建立任何 XSD 內建或使用者自訂的不可部份完成類型。

     

    3.3.9 Data Accessor函數 (Data Accessor Functions) :取得XQuery所指出的節點資料,其函數說明如表3-9所示。

    3-9 SQL Server 2005 XQuery Data Accessor函數

    函數名稱

    說明

    string($arg as item())

    傳回以字串表示的 $arg 值。

    data ($arg as item() *)

    傳回 $arg 指定的每一個項目的具類型值。

    使用方式如下所示:

    Example:

    declare @x xml

    set @x = '<?xml version="1.0" encoding="UTF-8" ?>

    <!--  This is a comment -->

    <root>

      <a>10</a>

    just text

      <b attr="x">20</b>

    </root>

    '

    select @x.query('string(/) ')

    select @x.query('data(/) ')

    Result:

    --------------------------------------------

    This is a comment 10

    just text

      20

    (1 row(s) affected)

    --------------------------------------------

    10

    just text

      20

    (1 row(s) affected)

     

    3.3.10 布林建構函式 (Boolean Constructor Functions) :產生布林值,其函數說明如表3-10所示。

    3-10 SQL Server 2005 XQuery布林建構函式

    函數名稱

    說明

    true()

    傳回 xs:boolean True。這相當於 xs:boolean("1")

    False()

    傳回 xs:boolean False。這相當於 xs:boolean("0")

    使用方式如下所示:

    Example:

    DECLARE @x XML

    SET @x= '<ROOT><elem attr="aaa">bbb</elem></ROOT>'

    select @x.value('

    if ((/ROOT/elem/@attr) [1] eq "aaa") then

    fn:true()

    else fn:false() ','bit')

    Result:

    1

     

    3.3.11 SQL Server XQuery 擴充函數:使用 sql:column() sql:variable() XQuery 擴充程式函數,在 XML 內繫結非 XML 關聯式資料。column() 用以指定針對儲存在 xml 類型的變數或資料行中之XML執行個體的查詢,當查詢使用另一個非 XML資料行的值,以同時查詢關聯式資料與XML資料。variable() 可以在XQuery陳述式中用使用 Transact-SQL 變數或參數中的值,以將關聯式資料及 XML 資料合併在一起。其函數說明如表3-11所示。

    3-11 SQL Server 2005 XQuery擴充函數

    函數名稱

    說明

    column("columnName")

    讀取同一筆資料中其他非xml資料類型的欄位資料。

    variable("variableName")

    XML 資料執行個體中公開含有 SQL 關聯式值的變數。

    使用方式如下所示:

    Example:

    declare @x xml

    declare @i varchar(10)

    set @i='b'

    set @x = '<root>

    <item value="1">a</item>

    <item value="3">b</item>

    <item value="2">c</item>

    <item value="3">d</item>

    <item value="4">e</item>

    </root>'

    select '4' as v, @x as x into #t

    select @x.query('

    for $i in /root/item

    where data($i) =sql:variable("@i")

    or $i/@value=sql:column("v")

    return

    $i')

    from #t

    Result:

    <item value="3">b</item>

    <item value="4">e</item>

     4. 後記

      很可惜的,SQL Server 2005不支援XQueryLet語法,也無法像在使用Table Join一樣可以直接整合兩個XML文件的資料,雖然可以使用sql:columnsql:variable來引用其他欄位與變數,卻也有種種限制。但種而言之,可以將XML訂為資料型態並引用XQuery來查詢,在關聯式資料庫系統對於XML的支援,已經可以說是跨出一大步了,讓使用者不需要在定義複雜的表格或繕寫剖析程式、甚至另外建置原生型XML資料庫系統,便可以在原有的關聯式資料庫系統架構中整合XML的應用。資訊技術的演進是如此快速,不久的將來各家關聯式資料庫系統會對XML有更完善的整合與支援。 

    參考文獻

    [1] Don Chamberlin, Jonathan Robie, and Daniela Florescu, "Quilt: An XML Query Language for Heterogeneous Data Sources,” Proceedings of WebDB 2000 Conference, in Lecture Notes in Computer Science, Springer-Verlag, 2000.

    [2] SQL Server 2005 Books Online

    查看(407) 评论(0) 收藏 分享 管理

  • 淺談SQL Server 2005 XQuery新功能(1)

    2009-11-27 11:19:53

     

    淺談SQL Server 2005 XQuery新功能

     

    1. 契子

      以往,使用關聯式資料庫系統儲存XML文件的方式可區分為兩種方式。

      第一種是在關聯式資料庫系統中,將XML文件以文字(text)或二進位(binary)資料的格式存入表格的一個大型欄位(large objectLOB),在存取XML文件時只須對此欄位進行資料的輸入、輸出即可。此方式雖然具有設計簡單,不需複雜的表格拆解動作即可處理結構複雜的XML文件等優點,十分適合應用於以整份XML文件作為輸入、輸出的應用,並可直接套用在既有的關聯式資料庫系統之上。但此方式無法在資料庫中直接存取XML中的特定元素(Element)或屬性(Attribute)資料,此時必需輸出整份XML文件,再進行資料剖析(parsing),才能處理XML文件所需要的資料。

      第二種方式是透過事先定義好的對應規則,將XML文件拆解成多個部份存放在不同的表格(Table)。當要取回原本的XML文件時,則透過SQL查詢語言取得各表格的資料,再組合成XML文件。此方式的優點是可快速的處理結構固定的XML文件,並可直接套用在關聯式資料庫系統之上。但當XML文件結構很複雜時,此方法將產生大量的表格。若要將分散在各表格中的資料組合成完整的XML文件,必需透過複雜的資料結合(join)才能達成。此外,一旦對應規則訂定後,若因資料需求的改變而造成XML文件結構需要更動時,則可能需重新定義對應規則。因此,在處理不同結構的XML文件時較無彈性。

      在SQL Server 2005的版本中,新增加了XML的資料型態來儲存XML文件,並可使用XQuery快速的存取XML文件中的資料,等於結合的上述兩種方式的優點,以下筆者簡單介紹XQuerySQL Server 2005XML的支援。

    2. XQuery

      為了制定XML的查詢方式,因此W3C 2000 年的1 月首先提出了XML Query Requiremets,討論對XML 資料做查詢時的需求。於20016W3CJonathan Robie (Software AG) Don Chamberlin (IBM Almaden Research Center) Daniela Florescu (INRIA) 三人共同開發的Quilt語言為基礎定義XQuery,此後XQuery便XML查詢語言的標準,目前最新版本已於2006 6 8 日出版,。

      XQuery 是針對各類XML 資料所設計,不論其儲存為文件或是在關聯式資料庫中。XQuery 其資料模型 ( data model ) 視一個XML 文件為一棵標記樹( label tree ) ,並考慮標記樹中每個節點及所有值之順序關係。其特性是路徑表示法的使用,使用者可以利用路徑表示法在XML 資料中尋找任意長度路徑的資料。因此透過XQuery 的執行,便可取得XML 文件中符合路徑表示法的資料序列,其順序是依照文件中各個元素之間的順序關係而定。另外使用者也可以從資料中取得關於XML 文件schema 的資訊。

    2.1 XQuery Expressions

      一個XQuery 的敘述式為一組FLWOR (發音同 “flower”) 表示法,是由ForLetWhereOrder byReturn子句等結構而成,並以特定的順序組合而成.   FOR 讓變數可以遞迴取得 ( iterate over ) 一個路徑表示法的結果, 而LET 則是將變數直接與某一個的路徑表示法結合( binding ) WHERE 則允許對變數做條件的限制,ORDER BY可依據條件重新排序FOR語法的元素進而影響接下來RETURN的輸出,RETURN 則可以根據原有的、或是建構新的XML元素為查詢的輸出。SQL Server 2005目前僅支援FORWHEREORDER BYRETURN四個語法。 

    3. Using XQuery in SQL Server 2005

    3.1 xml Data Type

      在Microsoft R SQL ServerR 2005以前的版本雖然可以透過「FOR XML」以及「OPEN XML」來處理XML型態的資料,但其主要的工作環境仍舊拘泥在關聯式的架構,無法直接存取XML型態裡面的元素以及屬性的資料。2005這個版本中新增XML資料型態與相關的方法以及函數,大幅提高其對XML的支援。

      「xml Datatype」是一個原生的資料類型可以用來定義欄位、變數與參數的資料型態,它儲存的XML資料必須符合Well-formed的規定,所以在儲存資料的同時它會自動檢查該資料是否符合Well-formed格式。在存取方面可以使用XQueryXML資料的內容進行查詢,也可以使用XML-DML修改XML資料格式與內容。在效能方面可以對xml資料類型建立索引機制 (Indexing) ,以提高查詢效率。

     

    建立xml資料型態的欄位

    CREATE TABLE T1(Col1 int primary key, Col2 xml)

    建立一的xml資料型態的變數

    declare @x xml 

     

      在SQL Server 2005XMLBLOB型態存在,最大可到2GB,而儲存的編碼格式是UTF-16,對於XML中文或多語系亂碼的問題也降低發生的可能,另外還可以針對XML資料欄位建立索引,提高XML資料的查詢效率。 

    3.2 方法(Method)

      SQL Server® 2005針對xml資料類型提供有query() value() exist() modify() 以及nodes() 等五個方法(Methods) 進行資料的存取與維護:

    3.2.1 query():針對xml資料類型的執行個體指定 XQuery。結果為 xml 類型。該方法會傳回不具類型的XML執行個體。

    3.2.2 value():對XML執行XQuery並傳回SQL類型的值,此方法會傳回純量值而非集合。可以使用此方法,從儲存在XML Datatype的欄位資料、參數或變數中的XML資料擷取值,可以指定「SELECT」查詢來結合或比較 XML 資料與非XML資料行的資料。

    3.2.3 exist():用來確認一個查詢陳述式是否有結果。傳回值為10或是NULL1 代表True,即查詢中的 XQuery 運算式傳回非空的結果,也就是,它至少會傳回一個 XML 節點;0 代表False,即查詢傳回空的結果;如果查詢所執行的xml資料類型執行個體包含 NULL,則會傳回 NULL

    3.2.4 modify():此方法使用XML-DML陳述式來來修改 XML類型變數或欄位的內容,如插入、更新或刪除XML資料的節點。modify() 這個方法只能用在「UPDATE」陳述式的「SET」子句中。

    3.2.5 nodes():可以將XML資料切割成多個資料列,以便將部份 XML 文件傳播成資料列集,就如同關聯式資料。每個xml資料類型執行個體都有隱含提供的內容節點。針對儲存在資料行或變數中的 XML 執行個體,這是指文件節點。文件節點是位在每個xml資料類型執行個體最上方的隱含節點。 nodes() 方法的結果,會是一個包含原始 XML 執行個體之邏輯副本的資料列集。在這些邏輯副本中,每個資料列執行個體的內容節點,都會設成可用查詢運算式來識別的節點之一,讓後續的查詢能夠比對這些內容節點來進行導覽。

    3.3 函數(Functions

      SQL Server 2005針對XQuery所提供的函數依其用途可分為個12種類,以下分別介紹這些函數與其用法。

    3.3.1 數值函數 (Functions on Numeric Values) :可以對數值資料進行無條件進位、無條件捨去以及四捨五入運算,其函數說明如表3-1所示。

    3-1 SQL Server 2005 XQuery數值函數

    函數名稱

    說明

    ceiling ($arg as numeric)

    傳回不含小數的最小數字,不小於其引數的值。如果引數是空的序列,它會傳回空的序列。

    floor ($arg as numeric)

    傳回不含小數、不大於其引數值的最大數字。如果引數是空的序列,它會傳回空的序列。

    round($arg as numeric)

    傳回最接近引數且去掉小數部份的數字。如果這樣的數字不止一個,則傳回最接近正無限數的那一個。

    其用法如下:

    Example:

    declare @x xml

    set @x='

    <root>

               <item price="13.5">a</item>

               <item price="15.4">b</item>

    </root>'

    select @x.query('for $i in //item

    return

    <item price="{$i/@price}">

    <name>{data($i) }</name>

    <ceiling>{ceiling($i/@price) }</ceiling>

    <floor>{floor($i/@price) }</floor>

    <round>{round($i/@price) }</round>

    </item>

    ')

    Result:

    <item price="13.5">

      <name>a</name>

      <ceiling>14</ceiling>

      <floor>13</floor>

      <round>14</round>

    </item>

    <item price="15.4">

      <name>b</name>

      <ceiling>16</ceiling>

      <floor>15</floor>

      <round>15</round>

    </item>

     

    3.3.2 字串值相關函數 (Functions on String Values) :對於字串資料可以進行字串連接、字串比較、取得部份字串以及取得字串長度等運算,其函數說明如表3-2所示。

    3-2 SQL Server 2005 XQuery字串值相關函數

    函數名稱

    說明

    concat ($string as xs:string, $string as xs:string [, ...])

    接受零或更多的字串以做為引數,並傳回串連每個引數的值所建立的字串。

    contains ($arg1 as xs:string, $arg as xs:string)

    傳回 xs:boolean 類型的值,指出 $arg1 的值是否包含 $arg2 指定的字串值。

    Substring($sourceString) as xs:string,$startingLoc as xs:decimal [,$length as xs:decimal])

    傳回 $sourceString 值的一部份,從 $startingLoc, 值所指示的位置開始,一直到 $length 值所指示的字元數為止。

    string-length($arg as xs:string)

    傳回字元的字串長度。

    其用法如下:

    Example:

    declare @x xml

    set @x='

    <root>

               <item price="13.5">MP5</item>

               <item price="15.4">G36C</item>

    </root>'

    select @x as x into #t

    select x.query('for $i in //item

    return

    <item price="{$i/@price}">

    <name>{data($i) }</name>

    <concat>{concat("price:", $i/@price,

    "; ceiling:",

    string(ceiling($i/@price))) }</concat>

    <substring>{substring(data($i) ,2,2) }</substring>

    <string-length>{string-length(data($i)) }</string-length>

    </item>

    ')

    from #t

    where x.value('contains((//item/text()) [1],"MP5") ','bit') =1

    Result:

    <item price="13.5">

      <name>MP5</name>

      <concat>price:13.5; ceiling:14</concat>

      <substring>P5</substring>

      <string-length>3</string-length>

    </item>

    <item price="15.4">

      <name>G36C</name>

      <concat>price:15.4; ceiling:16</concat>

      <substring>36</substring>

      <string-length>4</string-length>

    </item>

     

    3.3.3 布林值相關函數 (Functions on Boolean Values) :用來檢查陳述式的結果是否不成立,其函數說明如表3-3所示。

    3-3 SQL Server 2005 XQuery布林值相關函數

    函數名稱

    說明

    not($arg as item() *)

    如果 $arg 的有效布林值為 false,就會傳回 TRUE,而如果 $arg 的有效布林值為 true,就會傳回 FALSE

    其用法如下:

    Example:

    declare @x xml

    set @x='

    <root>

               <item price="13.5">MP5</item>

               <item price="15.4">G36C</item>

    </root>'

    select @x.query('for $i in //item[not(@price="13.5") ]

    return $i')

    Result:

    <item price="15.4">G36C</item>

     

    3.3.4 節點相關函數 (Functions on Nodes) :此類函數可以取得XQuery陳述式所指出的節點的資料值、名稱或是URI等資料,其函數說明如表3-4所示。

    3-4 SQL Server 2005 XQuery節點相關函數

    函數名稱

    說明

    number

    傳回 $arg 所指出的節點數值。

    local-name 函數 (XQuery)

    xs:string 傳回 $arg 名稱的本機部份,它有可能是零長度的字串或是將會有 xs:NCName 的語彙格式。如果沒有提供引數,預設值是內容節點。

    namespace-uri 函數 (XQuery)

    傳回在 $arg 中指定為 xs:string QName 命名空間 URI

     

  • 各数据库中命令行查看大小

    2009-08-24 13:53:23

    oracle

    查看表大小:

    analyze table * compute statistics ;

    select num_rows * avg_row_len/1024/1024 from user_tables where table_name='表名大写';

    查看lob字段大小:

    select sum(dbms_lob.getlength(大对象列名)) from 表名;

    查看表/索引大小:

    select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper("索引名"/"表名");

    神通数据库

    查看表大小:

    select size from sys_class,v_segment_info where id=relid and relname=‘表名’;

    查看lob字段:

    select sum(blob/clob_getlength(大对象列名)) from 表名;

    查看索引大小:

    select * from sys_namespace where nspname='大写模式名';

    select relpages * 8192() from sys_class where relnamespace='oid' and relname='大写索引名';

     

  • ie浏览器中ActiveX的問題的解決辦法

    2009-08-20 14:18:18

    在IE浏览器中点击某个页面无法打开,提示为:當前的安全設置不允許該網站運行ActiveX

    解決辦法:將攔截精靈的攔截都取消掉

    刷新頁面,繼續操作,接著會提示:Windows不允許安裝

    在IE的工具中的Internet選項中,安全頁,自定義級別,將下載未簽名的ActiveX控件的選項改為“提示”

    再次刷新頁面,進行操作,會提示需要安裝ActiveX控件,安裝后即可使用

  • sqlserver问题解决

    2008-12-22 17:25:41

       新安装了sqlserver2005,而后在sqlserver management studio中连接是报错:“在建立与服务器连接时出错。在连接到SQL Server 2005 时,在默认的设 置下SQL Server不允许远程连接可能会导致此失败  error:40 无法打开 到SQL Server的连接”;经多方打探,终于找到了解决方法,与大家一起分享:

    步骤一:在SQLServer 实例上启用远程连接
    1、“开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 外围应用配置”;

    2、在“SQL Server 2005 外围应用配置器”页, 单击“服务和连接的外围应用配置器”;
    3、然后单击展开“数据库引擎”, 选中“远程连接”,在右边选中“本地连接和远程连接”,再选择要使用的协议,( 这个地方应当启用TCP/IP 和命名管道服务!)单击“应用”,您会看到下消息:“直到重新启动数据库引擎服务后,对连接设置所做的更改才会生效。”,单击“确定”按钮返回;
    4、展开“数据库引擎”, 选中“服务”,在右边单击“停止”,等到MSSQLSERVER 服务停止,然后单击“启动”,重新启动MSSQLSERVER 服务。


    步骤二:启用 SQLServer 浏览器服务
    1.指向“开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 外围应用配置器”;
    2.在“SQL Server 2005 外围应用配置器”页, 单击“服务和连接的外围应用配置器”;
    3.然后单击展开“SQL Server Browser”, 选中“服务”,在右边“启动类型”选择“自动”,再单击“启动”,单击“确定”按钮返回;


    步骤三:在Windows 防火墙中为“SQL Server 2005”创建例外
    1.在 Windows 防火墙设置界面中,选择“ 例外” 选项卡,然后单击“添加程序”;
    2.在“添加程序窗口”中单击“浏览”;
    3.然后找到“C:\ProgramFiles\Microsoft Files\Microsoft SQL Server\ MSSQL.1 \MSSQL\Binn\sqlservr.exe”,单击“确定”返回 ;
    注意 : 路径可能会根据 SQL Server 2005 安装不同而不同。 MSSQL.1 是占位符,对应数据库实例ID。
    4.对每个需要打开远程访问的SQL Server 2005 实例,重复步骤 1 至 3。


    步骤四:在Windows 防火墙中为“SQLBrowser”创建例外

    注:Windows防火墙在控制面板中。
    1.在 Windows 防火墙设置界面中,选择“ 例外” 选项卡,然后单击“添加程序”
    2.在“添加程序窗口”中单击“浏览”
    3.然后找到“C:\ProgramFiles\Microsoft Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe”,
    单击“确定”返回
    注意 : 路径可能会根据 SQL Server 2005 安装不同而不同。

    步骤五:在Windows防火墙中添加“端口”

    名称:sqlserver 端口号:1433

    如果这样还不能解决问题,请看看在sqlserver manage ment studio中的服务器名是否为localhost,我就是吃了这样的亏了。希望大家可以在这找到你们想要的答案。

     

     

  • oracle问题解决

    2008-11-28 12:18:55

        前一段时间用过oracle以后就把它关闭,好长时间没有用了,这俩天要用的时候,突然发现连接不上了,系统提示“监听程序无法连接”,而我已经将所有的服务都开启了。最后,终于找到一个高手帮我解决了,原来是我建库的时候选了“归档”格式,而没有给它指定归档路径,以至于归档文件无法归档,造成数据库无法连接。总结一下,专家是这样解决问题的:

    1、在cmd中以sysdba用户登陆:sqlplus / as sysdba;

    2、SQL> startup
    ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它
    SQL> select * from dba_users;
    select * from dba_users
                  *
    第 1 行出现错误:
    ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询


    3、SQL> alter database open;
    alter database open
    *
    第 1 行出现错误:
    ORA-16014: 日志 2 的序列号 54 未归档, 没有可用的目的地
    ORA-00312: 联机日志 2 线程 1:
    'D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\REDO02.LOG'


    4、SQL> archive list;
    SP2-0734: 未知的命令开头 "archive li..." - 忽略了剩余的行。
    SQL> list archivelog;
    SP2-0224: 起始行号无效


    5、SQL> show parameter archi

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    archive_lag_target                   integer     0
    log_archive_config                   string
    log_archive_dest                     string
    log_archive_dest_1                   string
    log_archive_dest_10                  string
    log_archive_dest_2                   string
    log_archive_dest_3                   string
    log_archive_dest_4                   string
    log_archive_dest_5                   string
    log_archive_dest_6                   string
    log_archive_dest_7                   string

     RESETLOGS_CHANGE# RESETLOGS_TIME

    6、SQL> desc v$database;
     名称                                      是否为空? 类型
     ----------------------------------------- -------- ----------------------------
     DBID                                               NUMBER
     NAME                                               VARCHAR2(9)
     CREATED                                            DATE
     RESETLOGS_CHANGE#                                  NUMBER
     RESETLOGS_TIME                                     DATE
     PRIOR_RESETLOGS_CHANGE#                            NUMBER
     PRIOR_RESETLOGS_TIME                               DATE
     LOG_MODE                                           VARCHAR2(12)
     CHECKPOINT_CHANGE#                                 NUMBER
     ARCHIVE_CHANGE#                                    NUMBER
     CONTROLFILE_TYPE                                   VARCHAR2(7)
     CONTROLFILE_CREATED                                DATE
     CONTROLFILE_SEQUENCE#                              NUMBER
     CONTROLFILE_CHANGE#                                NUMBER
     CONTROLFILE_TIME                                   DATE
     OPEN_RESETLOGS                                     VARCHAR2(11)
     VERSION_TIME                                       DATE
     OPEN_MODE                                          VARCHAR2(10)
     PROTECTION_MODE                                    VARCHAR2(20)
     PROTECTION_LEVEL                                   VARCHAR2(20)
     REMOTE_ARCHIVE                                     VARCHAR2(8)
     ACTIVATION#                                        NUMBER
     SWITCHOVER#                                        NUMBER
     DATABASE_ROLE                                      VARCHAR2(16)
     ARCHIVELOG_CHANGE#                                 NUMBER
     ARCHIVELOG_COMPRESSION                             VARCHAR2(8)
     SWITCHOVER_STATUS                                  VARCHAR2(20)
     DATAGUARD_BROKER                                   VARCHAR2(8)
     GUARD_STATUS                                       VARCHAR2(7)
     SUPPLEMENTAL_LOG_DATA_MIN                          VARCHAR2(8)
     SUPPLEMENTAL_LOG_DATA_PK                           VARCHAR2(3)
     SUPPLEMENTAL_LOG_DATA_UI                           VARCHAR2(3)
     FORCE_LOGGING                                      VARCHAR2(3)
     PLATFORM_ID                                        NUMBER
     PLATFORM_NAME                                      VARCHAR2(101)
     RECOVERY_TARGET_INCARNATION#                       NUMBER
     LAST_OPEN_INCARNATION#                             NUMBER
     CURRENT_SCN                                        NUMBER
     FLASHBACK_ON                                       VARCHAR2(18)
     SUPPLEMENTAL_LOG_DATA_FK                           VARCHAR2(3)
     SUPPLEMENTAL_LOG_DATA_ALL                          VARCHAR2(3)
     DB_UNIQUE_NAME                                     VARCHAR2(30)
     STANDBY_BECAME_PRIMARY_SCN                         NUMBER
     FS_FAILOVER_STATUS                                 VARCHAR2(21)
     FS_FAILOVER_CURRENT_TARGET                         VARCHAR2(30)
     FS_FAILOVER_THRESHOLD                              NUMBER
     FS_FAILOVER_OBSERVER_PRESENT                       VARCHAR2(7)
     FS_FAILOVER_OBSERVER_HOST                          VARCHAR2(512)

    7、SQL> select LOG_MODE from v$database;

    LOG_MODE
    ------------
    ARCHIVELOG

    8、SQL> alter database noarchivelog;

    数据库已更改。

    9、SQL> alter database open;

    数据库已更改。

        以上是整个解决的过程,包括命令行的提示,有遇到和我一样的问题的朋友就凑合的看吧,说不定也能解决你们的问题哦!

  • isql命令的参数详解

    2008-10-17 09:04:38

    isql -U login_id -P password -S server isql [-?] | [-L] | [

     { {-U login_id [-P password]} | -E }

     [-S server_name] [-H wksta_name] [-d db_name]

     [-l time_out] [-t time_out] [-h headers]

     [-s col_separator] [-w column_width] [-a packet_size]

     [-e] [-x max_text_size] [-c cmd_end] [-q "query"] [-Q "query"]

     [-n] [-m error_level] [-r {0 | 1}]

     [-i input_file] [-o output_file] [-p] [-b] [-O] ]-?

    显示 isql 开关的语法摘要。

     -L列出在本地配置的服务器和在网络上广播的服务器的名称。

     -U login_id用户登录 ID。登录 ID 区分大小写。

     -P password 是用户指定的密码。如果未使用

     -P 选项,isql 将提示输入密码。如果在命令提示的末尾使用 -P 选项而不带密码,isql 使用默认密码(NULL)。密码区分大小写。   ISQLPASSWORD 环境变量使您得以为当前会话设置默认密码。因此,不需要通过硬编码来在批处理文件中设置密码。如果没有   为 -P 选项指定密码,isql 首先检查 ISQLPASSWORD 变量。如果未设置值,isql使用默认密码 (NULL)。以下示例 在命令提   示处设置LPASSWORD 变量,然后访问 isql 实用工具:C:\>SET ISQLPASSWORD=abracadabraC:\>isql -E使用信任连接而不请   求密码。

     -S server_name

      指定要连接到的 SQL Server 默认实例。isql 不支持连接到 SQL Server 2000 命名实例。如果未指定服务器,isql 将连接   到本地计算机上的 SQL Server 默认实例。如果要在网络上从远程计算机执行 isql,则需要此选项。

     -H wksta_name 是工作站名称。

      工作站名称存储在 sysprocesses.hostname 中并由 sp_who 显示。如果未指定,则采用当前计算机名称。

     -d db_name 启动 isql 时发出一个 USE db_name 语句。

     -l time_out 指定 isql 登录超时之前的秒数。

      如果未指定 time_out 值,则命令无限期地运行。登录到 isql 的默认超时为 8 秒。

     -t time_out 指定命令超时之前的秒数。

      如果未指定 time_out 值,则命令会无限期地运行;登录到 isql 的默认超时为 8 秒。

     -h headers  指定要在列标题之间打印的行数。

      默认为每一查询结果集打印一次标题。使用 –1 指定不打印标题。如果使用 –1,则在参数和设置之间不能空格

      (可以是 -h-1,不能是 -h –1)。

     -s col_separator 指定列分隔符字符,其默认为空格。

      若要使用对操作系统有特殊含义的字符(例如 | ; & < >),请将该字符用双引号 (") 引起来。

     -w column_width 允许用户设置屏幕输出的宽度。默认为 80 个字符。当输出行达到其最大屏幕宽度时,会拆分为多个行。

     -a packet_size 使您得以请求不同大小的数据包。

      packet_size 的有效值介于 512 和 65535 之间。Microsoft Windows NT&reg; 版中的 isql 默认值为 8192  ;另  外,Microsoft MS-DOS&reg; 版中的 isql 默认值为 512,但在该版本中也可以请求更大的数据包。数据包大小的增加   可以提高较大脚本执行的性能,在这种执行中 GO 命令之间 SQL 语句的数量很重要。Microsoft 的测试表明 8192 是大容量   复制操作典型的最快设置。可以请求更大的数据包大小,但是如果请求不能得到批准,则 isql 默认为 512。

     -e 回显输入。

     -x max_text_size 指定返回文本数据的最大长度,以字节为单位。

      长于 max_text_size 的文本值将被截断。如果未指定 max_text_size,则文本数据在 4096 字节处截断。

     -c cmd_end 指定命令终止符。

      默认情况下,通过单独在一行中输入 GO 来终止命令并将其发送到 SQL Server 2000。在重置命令终止时,不要使用对操作   系统有特殊含义的 Transact-SQL 保留字或字符,无论其前面是否有反斜杠。

     -q "query" 启动 isql 时执行查询,但是在查询完成时不退出 isql。

      (注意查询语句不应包含 GO)。如果从批处理文件中发出查询,可使用 %variables。环境 %variables% 也可用。例如:

      SET table = sysobjectsisql /q "Select * from %table%" 将查询用双引号引起来,将查询中嵌入的任何内容用单引号引   起来。

     -Q "query" 执行查询,在查询完成时立即退出 isql。

      将查询用双引号引起来,将查询中嵌入的任何内容用单引号引起来。

     -n 从输入行中删除编号和提示符号 (>)。

     -m error_level 自定义错误信息的显示。

      显示指定的或更高严重级别错误的消息数、状态和错误级别。不显示严重级别低于指定级别的错误的任何信息。用 -1 指定   与消息一起返回所有标题,即使是信息类的消息。如果使用 –1,则在参数和设置之间不能有空格

      (可以是 -m-1,不能是 -m -1)。

     -r {0 | 1} 将消息输出重定向到屏幕 (stderr)。

      如果未指定参数,或指定参数为 0,那么仅重定向严重级别为 17 或更高的错误信息。

      如果指定参数为 1,则将重定向所有消息输出(包括 "print")。

     -i input_file标识包含一批 SQL 语句或存储过程的文件。小于 (<) 比较运算符可以用来代替 –i。

     -o output_file 标识从 isql 接收输出的文件。

      大于 (>) 比较运算符可以用来代替 –o。-p打印性能统计。

     -b 指定错误发生时 isql 退出并返回一个 DOS ERRORLEVEL 值。

      当 SQL Server 错误信息的严重级别为 10 或更高时,返回给 DOS ERRORLEVEL变量的值为 1;否则,返回值为 0。MS-DOS    批处理文件可以测试 DOS ERRORLEVEL 的值并适当处理错误。

     -O指定 isql 还原为早期版本的行为。下列功能停用: EOF 批处理控制台宽度自动调整宽信息

      该选项还将 DOS ERRORLEVEL 的默认值设置为 –1。

  • 数据库测试

    2008-10-16 16:08:38

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

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

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

      系统测试

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

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

      集成测试

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

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

      单元测试

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

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

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

      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,是CMM和ISO的集成的产物,专门针对系统安全领域的另外一方面,数据库的健壮性,容错性和恢复能力也是我们测试的要点,我们也可以发现功能测试,性能测试,安全测试,是一个由简到繁的过程,也是数据库测试人员需要逐步掌握的技能,这也是以后公司对数据库测试人员的要求。

     

  • DB2常用命令

    2008-10-16 15:16:52

    DB2数据库导出表结构与导入、导出表数据
     
    方法一

    在控制中心的对象视图窗口中,选择所要导出表结构的数据表,按住Ctrl或Shift可多选,单击鼠标右键,选择->生成DDL即可。

    方法二

    第一步:打开DB2的命令行工具,在DB2安装目录的BIN文件夹下新建一个文件夹data,并且进入该目录。

    创建该目录: mkdir data
    进入该目录: cd data
    |

    第二步:导出表结构,命令行如下:
    db2look -d dbname -e -a -x -i username -w password -o ddlfile.sql


    执行成功之后,你会在刚才新建的文件夹下找到该sql文件。

    第三步:导出数据,命令行如下:
    db2move databasename export -u username -p password

     

    至此,导出数据结束。

    2导出表中数据

    export to [path(例:D:"TABLE1.ixf)] of ixf select [字段(例: * or col1,col2,col3)] from TABLE1;

    export to [path(例:D:"TABLE1.del)] of del select [字段(例: * or col1,col2,col3)] from TABLE1;

    导入表的数据

    import from [path(例:D:"TABLE1.ixf)] of ixf insert into TABLE1;

    load from [path(例:D:"TABLE1.ixf)] of ixf insert into TABLE1;

    load from [path(例:D:"TABLE1.ixf)] of ixf replace into TABLE1; // 装入数据前,先删除已存在记录

    load from [path(例:D:"TABLE1.ixf)] of ixf restart into TABLE1; // 当装入失败时,重新执行,并记录导出结果和错误信息

    import from [path(例:D:"TABLE1.ixf)] of ixf savecount 1000 messages [path(例:D:"msg.txt)] insert into TABLE1;// 其中,savecount表示完成每1000条操作,记录一次.

    存在自增长字段的数据导入:

    load from [path(例:D:"TABLE1.ixf)] of ixf modified by identityignore insert into TABLE1;// 加入modified by identityignore.

    解除装入数据时,发生的检查挂起.

    SET INTEGRITY FOR TABLE1 CHECK IMMEDIATE UNCHECKED;

    命令只对数据通过约束检查的表有效,如果执行还不能解除,有必要检查数据的完整性,是否不符合约束条件,并试图重新整理数据,再执行装入操作.

    另外,对load和import,字面上的区别是:装入和导入,但仍未理解两者之间的区别.

    只是性能上load显然优于import.(load 需要更多的权限)
    1.启动数据库
        db2start
    2.停止数据库
        db2stop
    3.连接数据库
        db2 connect to o_yd user db2 using pwd
    4.读数据库管理程序配置
        db2 get dbm cfg
    5.写数据库管理程序配置
        db2 update dbm cfg using 参数名 参数值
    6.读数据库的配置
        db2 connect to o_yd user db2 using pwd
        db2 get db cfg for o_yd
    7.写数据库的配置
        db2 connect to o_yd user db2 using pwd
        db2 update db cfg for o_yd using 参数名 参数值
    8.关闭所有应用连接
        db2 force application all
        db2 force application ID1,ID2,,,Idn MODE ASYNC
        (db2 list application for db o_yd show detail)
    9.备份数据库
        db2 force application all
        db2 backup db o_yd to d:
       (db2 initialize tape on \\.\tape0)
       (db2 rewind tape on \\.\tape0)
       db2 backup db o_yd to \\.\tape0
    10.恢复数据库
       db2 restore db o_yd from d: to d:
       db2 restore db o_yd from \\.\tape0 to d:
    11.绑定存储过程
       db2 connect to o_yd user db2 using pwd
       db2 bind c:\dfplus.bnd
     拷贝存储过程到服务器上的C:\sqllib\function目录中
    12.整理表
       db2 connect to o_yd user db2 using pwd
       db2 reorg table ydd
       db2 runstats on table ydd with distribution and indexes all
    13.导出表数据
        db2 export to c:\dftz.txt of del select * from dftz
        db2 export to c:\dftz.ixf of ixf select * from dftz
    14.导入表数据
    import from c:\123.txt of del  insert into ylbx.czyxx
    db2 import to c:\dftz.txt of del commitcount 5000 messages  c:\dftz.msg insert into dftz
    db2 import to c:\dftz.ixf of ixf commitcount 5000 messages c:\dftz.msg insert into dftz
    db2 import to c:\dftz.ixf of ixf commitcount 5000 insert into dftz
    db2 import to c:\dftz.ixf of ixf commitcount 5000 insert_update into dftz
    db2 import to c:\dftz.ixf of ixf commitcount 5000 replace into dftz
    db2 import to c:\dftz.ixf of ixf commitcount 5000 create into dftz   (仅IXF)
    db2 import to c:\dftz.ixf of ixf commitcount 5000 replace_create into dftz  (仅IXF)

    15.执行一个批处理文件
          db2 –tf 批处理文件名
         (文件中每一条命令用 ;结束)
    16.自动生成批处理文件
        建文本文件:temp.sql
        select 'runstats on table DB2.' || tabname || ' with distribution and  detailed indexes all;' from syscat.tables where
    tabschema='DB2' and type='T';
    db2 –tf temp.sql>runstats.sql
    17.自动生成建表(视图)语句
    在服务器上:C:\sqllib\misc目录中
    db2 connect to o_yd user db2 using pwd
    db2look –d o_yd –u db2 –e –p –c c:\o_yd.txt
    18.其他命令
    grant dbadm on database to user bb
    19
    select * from czyxx fetch first 1 rows only
    20
    db2look –d ylbx –u db2admin –w –asd –a –e –o a.txt
    21. 显示当前用户所有表
     list tables
    22. 列出所有的系统表
     list tables for system
    23. 查看表结构
    db2 describe select * from user.tables
    24. 查看死锁明细
    db2 get snapshot for locks on yourdatdabasename 
    用df -k命令看看是否有些文件系统没有空间.

  • 常用数据库连接

    2008-10-16 15:14:06


  • SQL Server

    •  ODBC

      •  Standard Security:
        "Driver={SQL Server};Server=Aron1;Database=pubs;Uid=sa;Pwd=asdasd;"


      •  Trusted connection:
        "Driver={SQL Server};Server=Aron1;Database=pubs;Trusted_Connection=yes;"


      •  Prompt for username and password:
        oConn.Properties("Prompt") = adPromptAlways
        oConn.Open "Driver={SQL Server};Server=Aron1;DataBase=pubs;"


    •  OLE DB, OleDbConnection (.NET)

      •  Standard Security:
        "Provider=sqloledb;Data Source=Aron1;Initial Catalog=pubs;User Id=sa;Password=asdasd;"


      •  Trusted Connection:
        "Provider=sqloledb;Data Source=Aron1;Initial Catalog=pubs;Integrated Security=SSPI;"
        (use serverName\instanceName as Data Source to use an specifik SQLServer instance, only SQLServer2000)
      •  Prompt for username and password:
        oConn.Provider = "sqloledb"
        oConn.Properties("Prompt") = adPromptAlways
        oConn.Open "Data Source=Aron1;Initial Catalog=pubs;"


      •  Connect via an IP address:
        "Provider=sqloledb;Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=pubs;User ID=sa;Password=asdasd;"
        (DBMSSOCN=TCP/IP instead of Named Pipes, at the end of the Data Source is the port to use (1433 is the default))
    •  SqlConnection (.NET)

      •  Standard Security:
        "Data Source=Aron1;Initial Catalog=pubs;User Id=sa;Password=asdasd;"
           - or -
        "Server=Aron1;Database=pubs;User ID=sa;Password=asdasd;Trusted_Connection=False"
           (both connection strings produces the same result)


      •  Trusted Connection:
        "Data Source=Aron1;Initial Catalog=pubs;Integrated Security=SSPI;"
           - or -
        "Server=Aron1;Database=pubs;Trusted_Connection=True;"
           (both connection strings produces the same result)
        (use serverName\instanceName as Data Source to use an specifik SQLServer instance, only SQLServer2000)
      •  Connect via an IP address:
        "Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=pubs;User ID=sa;Password=asdasd;"
        (DBMSSOCN=TCP/IP instead of Named Pipes, at the end of the Data Source is the port to use (1433 is the default))
      •  Declare the SqlConnection:
        C#:
        using System.Data.SqlClient;
        SqlConnection ōSQLConn = new SqlConnection();
        oSQLConn.ConnectionString="my connection string";
        oSQLConn.Open();


        VB.NET:
        Imports System.Data.SqlClient
        Dim oSQLConn As SqlConnection = New SqlConnection()
        oSQLConn.ConnectionString="my connection string"
        oSQLConn.Open()


    •  Data Shape

      •  MS Data Shape
        "Provider=MSDataShape;Data Provider=SQLOLEDB;Data Source=Aron1;Initial Catalog=pubs;User ID=sa;Password=asdasd;"

     

    •  Read more

      •  How to define which network protocol to use

        • Example:
          "Provider=sqloledb;Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=pubs;User ID=sa;Password=asdasd;"

          Name Network library
          dbnmpntw Win32 Named Pipes
          dbmssocn Win32 Winsock TCP/IP
          dbmsspxn Win32 SPX/IPX
          dbmsvinn Win32 Banyan Vines
          dbmsrpcn Win32 Multi-Protocol (Windows RPC)


          Important note!
          When connecting through the SQLOLEDB provider use the syntax Network Library=dbmssocn
          and when connecting through MSDASQL provider use the syntax Network=dbmssocn

      •  All SqlConnection connection string properties

        • This table shows all connection string properties for the ADO.NET SqlConnection object. Most of the properties are also used in ADO. All properties and descrīptions is from msdn.

          Name Default Descrīption
          Application Name   The name of the application, or '.Net SqlClient Data Provider' if no application name is provided.
          AttachDBFilename
          -or-
          extended properties
          -or-
          Initial File Name
            The name of the primary file, including the full path name, of an attachable database. The database name must be specified with the keyword 'database'.
          Connect Timeout
          -or-
          Connection Timeout
          15 The length of time (in seconds) to wait for a connection to the server before terminating the attempt and generating an error.
          Connection Lifetime 0 When a connection is returned to the pool, its creation time is compared with the current time, and the connection is destroyed if that time span (in seconds) exceeds the value specified by connection lifetime. Useful in clustered configurations to force load balancing between a running server and a server just brought on-line.
          Connection Reset 'true' Determines whether the database connection is reset when being removed from the pool. Setting to 'false' avoids making an additional server round-trip when obtaining a connection, but the programmer must be aware that the connection state is not being reset.
          Current Language   The SQL Server Language record name.
          Data Source
          -or-
          Server
          -or-
          Address
          -or-
          Addr
          -or-
          Network Address
            The name or network address of the instance of SQL Server to which to connect.
          Enlist 'true' When true, the pooler automatically enlists the connection in the creation thread's current transaction context.
          Initial Catalog
          -or-
          Database
            The name of the database.
          Integrated Security
          -or-
          Trusted_Connection
          'false' Whether the connection is to be a secure connection or not. Recognized values are 'true', 'false', and 'sspi', which is equivalent to 'true'.
          Max Pool Size 100 The maximum number of connections allowed in the pool.
          Min Pool Size 0 The minimum number of connections allowed in the pool.
          Network Library
          -or-
          Net
          'dbmssocn' The network library used to establish a connection to an instance of SQL Server. Supported values include dbnmpntw (Named Pipes), dbmsrpcn (Multiprotocol), dbmsadsn (Apple Talk), dbmsgnet (VIA), dbmsipcn (Shared Memory) and dbmsspxn (IPX/SPX), and dbmssocn (TCP/IP).
          The corresponding network DLL must be installed on the system to which you connect. If you do not specify a network and you use a local server (for example, "." or "(local)"), shared memory is used.
          Packet Size 8192 Size in bytes of the network packets used to communicate with an instance of SQL Server.
          Password
          -or-
          Pwd
            The password for the SQL Server account logging on.
          Persist Security Info 'false' When set to 'false', security-sensitive information, such as the password, is not returned as part of the connection if the connection is open or has ever been in an open state. Resetting the connection string resets all connection string values including the password.
          Pooling 'true' When true, the SQLConnection object is drawn from the appropriate pool, or if necessary, is created and added to the appropriate pool.
          User ID   The SQL Server login account.
          Workstation ID the local computer name The name of the workstation connecting to SQL Server.


          Note
          Use ; to separate each property.
          If a name occurs more than once, the value from the last one in the connection string will be used.
          If you are building your connection string in your app using values from user input fields, make sure the user can't change the connection string by inserting an additional property with another value within the user value.
    •  Oracle
      •  ODBC

        •  New version:
          "Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=Username;Pwd=asdasd;"


        •  Old version:
          "Driver={Microsoft ODBC Driver for Oracle};ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword;"


      •  OLE DB, OleDbConnection (.NET)

        •  Standard security:
          "Provider=msdaora;Data Source=MyOracleDB;User Id=UserName;Password=asdasd;"
          This one's from Microsoft, the following are from Oracle
        •  Standard Security:
          "Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=Username;Password=asdasd;"


        •  Trusted Connection:
          "Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;OSAuthent=1;"


      •  OracleConnection (.NET)

        •  Standard:
          "Data Source=MyOracleDB;Integrated Security=yes;"
          This one works only with Oracle 8i release 3 or later
        •  Specifying username and password:
          "Data Source=MyOracleDB;User Id=username;Password=passwd;Integrated Security=no;"
          This one works only with Oracle 8i release 3 or later
        •  Declare the OracleConnection:
          C#:
          using System.Data.OracleClient;
          OracleConnection ōOracleConn = new OracleConnection();
          oOracleConn.ConnectionString = "my connection string";
          oOracleConn.Open();


          VB.NET:
          Imports System.Data.OracleClient
          Dim oOracleConn As ōracleConnection = New OracleConnection()
          oOracleConn.ConnectionString = "my connection string"
          oOracleConn.Open()
      •  Core Labs OraDirect (.NET)

        •  Standard:
          "User ID=scott; Password=tiger; Host=ora; Pooling=true; Min Pool Size=0;Max Pool Size=100; Connection Lifetime=0"

       

      •  Data Shape

        •  MS Data Shape:
          "Provider=MSDataShape.1;Persist Security Info=False;Data Provider=MSDAORA;Data Source=orac;user id=username;password=mypw"
        •  IBM DB2
          •  OLE DB, OleDbConnection (.NET) from ms

            •  TCP/IP:
              "Provider=DB2OLEDB;Network Transport Library=TCPIP;Network Address=XXX.XXX.XXX.XXX;Initial Catalog=MyCtlg;Package Collection=MyPkgCol;Default Schema=Schema;User ID=MyUser;Password=MyPW"


            •  APPC:
              "Provider=DB2OLEDB;APPC Local LU Alias=MyAlias;APPC Remote LU Alias=MyRemote;Initial Catalog=MyCtlg;Package Collection=MyPkgCol;Default Schema=Schema;User ID=MyUser;Password=MyPW"


          •  IBM's OLE DB Provider (shipped with IBM DB2 UDB v7 or above)

            •  TCP/IP:
              Provider=IBMDADB2;Database=sample;HOSTNAME=db2host;PROTOCOL=TCPIP;PORT=50000;uid=myUserName;pwd=myPwd;


          •  ODBC

            •  Standard:
              "driver={IBM DB2 ODBC DRIVER};Database=myDbName;hostname=myServerName;port=myPortNum;protocol=TCPIP; uid=myUserName; pwd=myPwd"

  • 《自动化测试工具介绍LR篇》

    2008-09-26 17:00:56

    Mercury LoadRunner 是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner ,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。
    目前企业的网络应用环境都必须支持大量用户,网络体系架构中含各类应用环境且由不同供应商提供软件和硬件产品。难以预知的用户负载和愈来愈复杂的应用环境使公司时时担心会发生用户响应速度过慢,系统崩溃等问题。这些都不可避免地导致公司收益的损失。Mercury Interactive 的 LoadRunner 能让企业保护自己的收入来源,无需购置额外硬件而最大限度地利用现有的IT 资源,并确保终端用户在应用系统的各个环节中对其测试应用的质量,可靠性和可扩展性都有良好的评价。
    LoadRunner 是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。LoadRunner 的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。此外,LoadRunner 能支持广范的协议和技术,为您的特殊环境提供特殊的解决方案。
    轻松创建虚拟用户
    使用LoadRunner 的Virtual User Generator,您能很简便地创立起系统负载。该引擎能够生成虚拟用户,以虚拟用户的方式模拟真实用户的业务操作行为。它先记录下业务流程(如下订单或机票预定),然后将其转化为测试脚本。利用虚拟用户,您可以在Windows ,UNIX 或Linux 机器上同时产生成千上万个用户访问。所以LoadRunner能极大的减少负载测试所需的硬件和人力资源。另外,LoadRunner 的TurboLoad 专利技术能。
    提供很高的适应性。TurboLoad 使您可以产生每天几十万名在线用户和数以百万计的点击数的负载。
    用Virtual User Generator 建立测试脚本后,您可以对其进行参数化操作,这一操作能让您利用几套不同的实际发生数据来测试您的应用程序,从而反映出本系统的负载能力。以一个订单输入过程为例,参数化操作可将记录中的固定数据,如订单号和客户名称,由可变值来代替。在这些变量内随意输入可能的订单号和客户名,来匹配多个实际用户的操作行为。
    LoadRunner 通过它的Data Wizard 来自动实现其测试数据的参数化。Data Wizard 直接连于数据库服务器,从中您可以获取所需的数据(如定单号和用户名)并直接将其输入到测试脚本。这样避免了人工处理数据的需要,Data Wizard 为您节省了大量的时间。
    为了进一步确定您的Virtual user 能够模拟真实用户,您可利用LoadRunner 控制某些行为特性。例如,只需要点击一下鼠标,您就能轻易控制交易的数量,交易频率,用户的思考时间和连接速度等。
    创建真实的负载
    Virtual users 建立起后,您需要设定您的负载方案,业务流程组合和虚拟用户数量。用LoadRunner 的Controller,您能很快组织起多用户的测试方案。Controller 的Rendezvous 功能提供一个互动的环境,在其中您既能建立起持续且循环的负载,又能管理和驱动负载测试方案。
    而且,您可以利用它的日程计划服务来定义用户在什么时候访问系统以产生负载。这样,您就能将测试过程自动化。同样您还可以用Controller 来限定您的负载方案,在这个方案中所有的用户同时执行一个动作---如登陆到一个库存应用程序----来模拟峰值负载的情况。另外,您还能监测系统架构中各个组件的性能---- 包括服务器,数据库,网络设备等----来帮助客户决定系统的配置。
    LoadRunner 通过它的AutoLoad 技术,为您提供更多的测试灵活性。使用AutoLoad ,您可以根据目前的用户人数事先设定测试目标,优化测试流程。例如,您的目标可以是确定您的应用系统承受的每秒点击数或每秒的交易量。
    定位性能问题
    LoadRunner 内含集成的实时监测器,在负载测试过程的任何时候,您都可以观察到应用系统的运行性能。这些性能监测器为您实时显示交易性能数据(如响应时间)和其它系统组件包括application server, web server,网路设备和数据库等的实时性能。这样,您就可以在测试过程中从客户和服务器的双方面评估这些系统组件的运行性能,从而更快地发现问题。
    再者,利用LoadRunner 的ContentCheck TM ,您可以判断负载下的应用程序功能正常与否。ContentCheck 在Virtual users 运行时,检测应用程序的网络数据包内容,从中确定是否有错误内容传送出去。它的实时浏览器帮助您从终端用户角度观察程序性能状况。
    分析结果以精确定位问题所在
    一旦测试完毕后,LoadRunner 收集汇总所有的测试数据,并为您提供高级的分析和报告工具,以便迅速查找到性能问题并追溯原由。使用LoadRunner 的Web 交易细节监测器,您可以了解到将所有的图象、框架和文本下载到每一网页上所需的时间。例如,这个交易细节分析机制能
    够分析是否因为一个大尺寸的图形文件或是第三方的数据组件造成应用系统运行速度减慢。另外,Web 交易细节监测器分解用于客户端、网络和服务器上端到端的反应时间,便于确认问题,定位查找真正出错的组件。例如,您可以将网络延时进行分解,以判断DNS 解析时间,连接服务器或SSL 认证所花费的时间。通过使用LoadRunner 的分析工具,您能很快地查找到出错的位置和原因并作出相应的调整。
    重复测试保证系统发布的高性能
    负载测试是一个重复过程。每次处理完一个出错情况,您都需要对您的应用程序在相同的方案下,再进行一次负载测试。以此检验您所做的修正是否改善了运行性能。
    Enterprise Java Beans的测试
    LoadRunner 完全支持EJB 的负载测试。这些基于Java 的组件运行在应用服务器上,提供广泛的应用服务。通过测试这些组件,您可以在应用程序开发的早期就确认并解决可能产生的问题。
    利用LoadRunner, 您可以很方便地了解系统的性能。 它的Controller 允许您重复执行与出错修改前相同的测试方案。它的基于HTML 的报告为您提供一个比较性能结果所需的基准,以此衡量在一段时间内,有多大程度的改进并确保应用成功。由于这些报告是基于HTML 的文本,您可以将其公布于您公司的内部网上,便于随时查阅。
    最大化投资回报
    所有Mercury Interactive 的产品和服务都是集成设计的, 能完全相容地一起运作。由于它们具有相同的核心技术,来自于LoadRunner和ActiveTest TM 的测试脚本,在Mercury Interactive 的负载测试服务项目中,可以被重复用于性能监测。借助Mercury Interactive的监测功能--Topaz TM 和ActiveWatch TM ,测试脚本可重复使用从而平衡投资收益。更重要的是,您能为测试的前期布署和生产系统的监测提供一个完整的应用性能管理解决方案。
    支持无线应用协议
    随着无线设备数量和种类的增多,您的测试计划需要同时满足传统的基于浏览器的用户和无线互联网设备,如手机和PDA。LoadRunner 支持2 项最广泛使用的协议:WAP和I-mode。此外,通过负载测试系统整体架构,LoadRunner 能让您只需要通过记录一次脚本,就可完全检测上述这些无线互联网系统。
    支持Media Stream应用
    LoadRunner 还能支持Media Stream应用。为了保证终端用户得到良好的操作体验和高质量Media Stream,您需要检测您的Media Stream应用程序。使用LoadRunner ,您可以记录和重放任何流行的多媒体数据流格式来诊断系统的性能问题,查找原由,分析数据的质量。
    完整的企业应用环境的支持。
    LoadRunner 支持广泛的协议,可以测试各种IT 基础架构。
  • 软件测试员笔试题2

    2008-09-26 16:12:59


    一、判断题

    1、软件测试就是为了验证软件功能实现的是否正确,是否完成既定目标的活动,所以软件测试在软件工程的后期才开始具体的工作。(初级)           ×

    2、发现错误多的模块,残留在模块中的错误也多。( √ ) (初级)

    3、测试人员在测试过程中发现一处问题,如果问题影响不大,而自己又可以修改,应立即将此问题正确修改,以加快、提高开发的进程。( × )(初级)

    4、单元测试通常应该先进行人工走查,再以白盒法为主,辅以黑盒法进行动态测试。()(中级)

    5、功能测试是系统测试的主要内容,检查系统的功能、性能是否与需求规格说明相同。()(中级)

    6、软件质量管理即QMQAQC构成,软件测试属于QC的核心工作内容。()(高级)

    7、软件测试只能发现错误,但不能保证测试后的软件没有错误。(√)

    8、软件就是程序。(X)

    9、测试只要做到语句覆盖和分支覆盖,就可以发现程序中的所有错误。(X)

    10I18N测试是指对产品做出具有国际性的规划,而L10N测试则是指对软件做出符合本地需求更改工作。()【高级】


    二、    选择题 (每题2   20 )

    1、 进行软件质量管理的重要性有:(ABCD)【中级】

    A、维护降低成本         B、法律上的要求      C、市场竞争的需要

    D、质量标准化的趋势     E、软件工程的需要    FCMM过程的一部分

    G、方便与客户进一步沟通为后期的实施打好基础

    2、以测试的形态分测试可以分为:(ABC)【中级】

    A、建构性测试           B、系统测试          C、专项测试

    D、单元测试             E、组件测试          F、集成测试

    3、选出属于黑盒测试方法的选项(ABC)【初级】

    A、测试用例覆盖         B、输入覆盖          C、输出覆盖

    D、分支覆盖             E、语句覆盖           F、条件覆盖

    4、编写测试计划的目的是:(ABC)【中级】

    A、使测试工作顺利进行 B、使项目参与人员沟通更舒畅 C、使测试工作更加系统化

    D、软件工程以及软件过程的需要    E、软件过程规范化的要求   F、控制软件质量

    5、依存关系有4种分别是:(ABCD)【高级】

    A、开始-结束          B、开始-开始                C、结束-开始

    D、结束-结束          E、开始-实施-结束          F、结束-审核-开始

    6、软件质量管理(QM)应有质量保证(QA)和质量控制(QC)组成,下面的选项属于QC得是:(ABC)【高级】

    A、测试                B、跟踪                      C、监督

    D、制定计划            E、需求审查                  F、程序代码审查

    7、实施缺陷跟踪的目的是:(ABCD)【中级】

    A、软件质量无法控制         B、问题无法量化         C、重复问题接连产生

    D、解决问题的知识无法保留 E、确保缺陷得到解决 F、使问题形成完整的闭环处理

    8、使用软件测试工具的目的:(ABC)【中级】

    A、帮助测试寻找问题        B、协助问题的诊断      C、节省测试时间

    D、提高Bug的发现率   E、更好的控制缺陷提高软件质量   F、更好的协助开发人员

    9、典型的瀑布模型的四个阶段是:(ABCD)【高级】

    A、分析                       B、设计                   C、编码

    D、测试                       E、需求调研                F、实施

    10PSP是指个人软件过程 ,是一种可用于( A )、( B )和( C )个人软件工作方式的自我改善过程。【高级】

    A、控制                       B、管理                    C、改进

    D、高效                       E、充分                    F、适宜


    三、    问答题

    1、 测试人员在软件开发过程中的任务是什么?(初级)(5)

    答:1、寻找Bug

    2、避免软件开发过程中的缺陷;

    3、衡量软件的品质;

    4、关注用户的需求。

    总的目标是:确保软件的质量。

    2、 在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?(初级)(6)

    答:一条Bug记录最基本应包含:编号、Bug所属模块、Bug描述、Bug级别、发现日期、发现人、修改日期、修改人、修改方法、回归结果等等;要有效的发现Bug需参考需求以及详细设计等前期文档设计出高效的测试用例,然后严格执行测试用例,对发现的问题要充分确认肯定,然后再向外发布如此才能提高提交Bug的质量。


    3
    、 界面测试题及设计题。请找出下面界面中所存在的问题并分别列出;用黑盒测试的任何一种方法设计出此登陆窗体的测试用例。(中级)(6)
      
    答:1、窗体的标题栏中为空,没有给出标题。

        2
    、用户名和密码控件的字体不一致并且没有对齐。

        3、文本框的大小不一致没有对其。

        4、确定和取消按钮控件的大小不一致。


    4
    、 黑盒测试和白盒测试是软件测试的两种基本方法,请分别说明各自的优点和缺点!(中级)(5)

    答:黑盒测试的优点有:
    1
    )比较简单,不需要了解程序内部的代码及实现;

    2)与软件的内部实现无关;

    3)从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;

    4)基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;

    5)在做软件自动化测试时较为方便。

    黑盒测试的缺点有:
    1
    )不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的30%

    2)自动化测试的复用性较低。

    白盒测试的优点有:

    帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题。

    白盒测试的缺点有:

    1)程序运行会有很多不同的路径,不可能测试所有的运行路径;

    2)测试基于代码,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;

    3)系统庞大时,测试开销会非常大。

    5、 根据自己的理解回答什么是软件测试,软件测试分为哪几个阶段。(初级)(5)

    答:软件测试是一个为了寻找软件中的错误而运行软件的过程,一个成功的测试是指找到了迄今为止尚未发现的错误的测试。

       软件测试一般分为单元测试、集成测试和系统测试。

    6、 根据自己的理解什么是测试用例和测试规程,设计一个测试用例应当从哪几方面考虑?(中级)(10)

    答:狭义的讲,一个测试用例就是测试人员用以测试被测软件的某个特性或特性组合的一组数据。这组数据可能是从用户处得来的实际的一组数据,也可能是测试人员专门设计出来的测试软件某些功能的一组数据。

        测试规程就是详细的对测试用例设计方法、测试方法、测试工具、测试环境和测试数据进行描述的文档,还可以包括能把某个或某一组测试用例应用到被测软件上完成某项测试的一系列的操作步骤。

    设计测试用例应当从以下几方面考虑:边界值,等价类划分,有效/无效值等。

    7 什么是软件质量保证?软件质量保证人员与开发人员的关系如何?(高级)    (10)

    答:软件质量保证就是通过确保软件过程的质量,来保证软件产品的质量。

         软件质量保证人员和开发人员之间具有管理上的严格的独立性,两个小组的管理员都不能越权管理另一组,但都可以向更高层的管理者汇报软件开发中的问题

  • 软件测试员笔试题1

    2008-09-26 16:08:39

    一、判断题

    1.软件测试的目的是尽可能多的找出软件的缺陷。(Y

    2Beta 测试是验收测试的一种。(Y

    3.验收测试是由最终用户来实施的。(N

    4.项目立项前测试人员不需要提交任何工件。(Y

    5.单元测试能发现约80%的软件缺陷。(Y

    6.代码评审是检查源代码是否达到模块设计的要求。(N

    7.自底向上集成需要测试员编写驱动程序。(Y

    8.负载测试是验证要检验的系统的能力最高能达到什么程度。(N

    9.测试人员要坚持原则,缺陷未修复完坚决不予通过。(N

    10.代码评审员一般由测试员担任。(N

    11.我们可以人为的使得软件不存在配置问题。(N

    12.集成测试计划在需求分析阶段末提交。(N

    二、选折

    1.软件验收测试的合格通过准则是:(ABCD

    A. 软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。

    B. 所有测试项没有残余一级、二级和三级错误。

    C. 立项审批表、需求分析文档、设计文档和编码实现一致。

    D. 验收测试工件齐全。

    2.软件测试计划评审会需要哪些人员参加?(ABCD

    A.项目经理

    BSQA 负责人

    C.配置负责人

    D.测试组

    3.下列关于alpha 测试的描述中正确的是:(AD

    Aalpha 测试需要用户代表参加

    Balpha 测试不需要用户代表参加

    Calpha 测试是系统测试的一种

    Dalpha 测试是验收测试的一种

    4.测试设计员的职责有:(BC

    A.制定测试计划

    B.设计测试用例

    C.设计测试过程、脚本

    D.评估测试活动

    5.软件实施活动的进入准则是:(ABC

    A.需求工件已经被基线化

    B.详细设计工件已经被基线化

    C.构架工件已经被基线化

    D.项目阶段成果已经被基线化

    三、添空

    1.软件验收测试包括:    正式验收测试,alpha测试,beta测试。

    2.系统测试的策略有:  功能测试,性能测试,可靠性测试,负载测试,易用性测试,强度测试,安全测试,配置测试,安装测试,卸载测试,文挡测试,故障恢复测试,界面测试,容量测试,兼容性测试,分布测试,可用性测试,(有的可以合在一起,分开写只要写出15就满分哦)

     

    3.设计系统测试计划需要参考的项目文挡有:软件测试计划,软件需求工件和迭代计划。

    4.对面向过程的系统采用的集成策略有:自顶向下,自底向上两种。

     

    四、简答(资料是搜集整理的,感谢前辈的解题)无

    1.区别阶段评审的与同行评审

    同行评审目的:发现小规模工作产品的错误,只要是找错误;

    同行评审人数:3-7人人员必须经过同行评审会议的培训,SQA指导

    同行评审内容:内容小一般文档 <  40, 代码 < 500

    同行评审时间:一小部分工作产品完成

    阶段评审目的:评审模块阶段作品的正确性 可行性 及完整性

    阶段评审人数:5人左右评审人必须是专家 具有系统评审资格

    阶段评审内容: 内容多,主要看重点

    阶段评审时间: 通常是设置在关键路径的时间点上!

     

    2.什么是软件测试

    为了发现程序中的错误而执行程序的过程

     

    3简述集成测试的过程

    系统集成测试主要包括以下过程:

    1. 构建的确认过程。

    2. 补丁的确认过程。

    3. 系统集成测试测试组提交过程。

    4. 测试用例设计过程。

    5. 测试代码编写过程。

    6. Bug的报告过程。

    7. 每周/每两周的构建过程。

    8. 点对点的测试过程。

    9. 组内培训过程。

     

    4 怎么做好文档测试

    仔细阅读,跟随每个步骤,检查每个图形,尝试每个示例。

    检查文档的编写是否满足文档编写的目的

    内容是否齐全,正确

    内容是否完善

    标记是否正确

     

    5 白盒测试有几种方法

    总体上分为静态方法和动态方法两大类。

    静态:关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义

    动态:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。

     

    6系统测试计划是否需要同行审批,为什么

    需要,系统测试计划属于项目阶段性关键文档,因此需要评审。

     

    7Alpha测试与beta的区别

    Alpha测试 在系统开发接近完成时对应用系统的测试;测试后仍然会有少量的设计变更。这种测试一般由最终用户或其它人员完成,不能由程序或测试员完成。

    Beta测试 当开发和测试根本完成时所做的测试,最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成。

     

    8比较负载测试,容量测试和强度测试的区别

    负载测试:在一定的工作负荷下,系统的负荷及响应时间。

    强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。

    容量测试:容量测试目的是通过测试预先分析出反映软件 系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。容量测试是面向数据 的,并且它的目的是显示系统可以处理目标内确定的数据容量。

     

    9测试结束的标准是什么?

    用例全部测试。
    覆盖率达到标准。
    缺陷率达到标准。
    其他指标达到质量标准

     

    10描述软件测试活动的生命周期?

    测试周期分为计划、设计、实现、执行、总结。其中:

    计划:对整个测试周期中所有活动进行规划,估计工作量、风险,安排人力物力资源,安排进度等;
    设计:完成测试方案,从技术层面上对测试进行规划;
    实现:进行测试用例和测试规程设计;
    执行:根据前期完成的计划、方案、用例、规程等文档,执行测试用例。

    总结:记录测试结果,进行测试分析,完成测试报告。

     

    11软件的缺陷等级应如何划分?

    A严重错误,包括以下各种错误: 1. 由于程序所引起的死机,非法退出 2. 死循环 3. 数据库发生死锁 4. 因错误操作导致的程序中断 5. 功能错误 6. 与数据库连接错误 7. 数据通讯错误

    B较严重错误,包括以下各种错误: 1. 程序错误 2. 程序接口错误 3.数据库的表、业务规则、缺省值未加完整性等约束条件

    C一般性错误,包括以下各种错误: 1. 操作界面错误(包括数据窗口内列名定义、含义是否一致) 2. 打印内容、格式错误 3. 简单的输入限制未放在前台进行控制 4. 删除操作未给出提示 5. 数据库表中有过多的空字段

    D较小错误,包括以下各种错误: 1. 界面不规范 2. 辅助说明描述不清楚 3. 输入输出不规范 4. 长操作未给用户提示 5. 提示窗口文字未采用行业术语 6. 可输入区域和只读区域没有明显的区分标志

    E测试建议

  • LAODRUNNER8.1操作笔记

    2008-09-26 16:02:39

  • 数据统计

    • 访问量: 17567
    • 日志数: 16
    • 图片数: 1
    • 建立时间: 2008-09-14
    • 更新时间: 2010-07-21

    RSS订阅

    Open Toolbar