qileilove

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

跟屌丝大哥学DB2-第四课 数据类型 ,表 ,视图,索引,模式,约束(一)

     摘要: (DiaoSiID)在我们建立表前 ,我们先要了解DB2中都有哪些数据类型,以便我们这些屌丝以后快速创建表。DB2 提供了一套丰富且灵活的数据类型。DB2 附带 INTEGER、CHAR 和 DATE 等基本数据类型。它还提供了创建用户定义的数据类型(UDT)的工具,使用户能够创建复杂的非传统的数据类型,从而适应当今复杂的编程环境。在给定的情况下,选用哪种数据类型取决于列中存储的信息的类型和范围。...  阅读全文

posted @ 2012-12-06 23:12 顺其自然EVO 阅读(361) | 评论 (0)编辑 收藏

跟屌丝一起学习 DB2 第三课 创建表空间

缓冲池(bufferpool) 是一个内存块的集合,这些内存块采用页面的形式。在首次创建数据库时,同时创建了一个默认的缓冲池 IBMDEFAULTBP。可以在创建表空间时,或者在 Buffer Pools 视图中使用 Create New Bufferpool 向导,创建新的缓冲池。

  缓冲池最重要的作用是,在数据库读写硬盘上的数据时帮助减少 I/O 开销。这是通过 I/O 预获取和页面清理器实现的。预获取能够减少读取页面的 I/O 开销,其原理是:预先判断特定查询可能需要的页面,然后将这些页面读入缓冲池,因此当查询需要它们时,它们已经准备好了。页面清理器确保将事务不再需要的已经更新的页面首先写到硬盘上,然后从缓冲池中清除它们。这确保缓冲池中有足够的干净空间可以读取页面。

  DB2 支持不同的页面大小:2K、4K、8K、16K 和 32K。IBMDEFAULTBP 使用 4K 的页面大小。如果希望创建采用其他页面大小的表空间,那么首先要确保数据库中有采用这种页面大小的缓冲池。多个表空间可以使用同一个缓冲池。在创建或更改表空间时,可以指定要使用哪个缓冲池。选择和创建适当的缓冲池对于数据库性能很重要。可以根据需要创建新的缓冲池或更改现有的缓冲池。 DB2数据库中的表空间(tablespace) 是一个逻辑层,一些数据库对象(比如表、视图和索引)驻留在这里。一个数据库可以有多个表空间。在首次创建数据库时,DB2 会自动地创建一组表空间。
 在 Control Center 中,展开 HELLOWLD 并点击 Table Spaces。应该会在 Control Center 右边的窗口中看到三个表空间,如图 7 所示:

图 7. Control Center Table Spaces 视图

  Control Center Tablespaces 视图

 这些表空间是 DB2 在创建数据库 HWLD 时创建的。SYSCATSPACE 和 TEMPSPACE1 都是系统表空间,不能删除或重新创建它们。SYSCATSPACE 是系统编目表空间,用来存储关于数据库的元信息。TEMPSPACE1 在某些数据库操作期间用来存储临时结果。USERSPACE1 是默认的用户表空间,用来存储表、视图和索引等用户数据。任何具有足够权力的 DB2 用户都可以删除和重新创建 USERSPACE1 或者创建其他用户表空间。

 SMS 或 DMS 表空间

  在创建表空间时,可以选择表空间是 SMS 表空间还是 DMS 表空间。SMS 代表 System Managed Space,DMS 代表 Database Managed Space。在 SMS 表空间中,空间由操作系统的文件系统管理,会根据需要分配空间。SMS 表空间需要的初始设置比较少,管理方面需要考虑的因素少,而且一般更容易创建和使用,因为空间会在需要时自动地分配。在 DMS 表空间中,空间由 DB2 管理。DMS 表空间需要在创建时预先分配空间,所以需要进行比较多的初始设置工作,管理方面也有更多需要考虑的因素。但是,它为用户提供了更大的灵活性,可以更好地控制数据的布局并改进数据访问的性能。在一般情况下,经过良好设计和调优的 DMS 表空间可以提供比相似的 SMS 表空间更好的性能。

 在 Table Spaces 视图中,点击每个表空间。查看在右下方的窗口中显示的详细信息。SYSCATSPACE 和 USERSPACE1 都是 DMS 表空间,TEMPSPACE1 是 SMS 表空间。您还可以创建自己的表空间。

屌丝 已经创建了 自己的表空间 你看 


当然你也可以用命令插入了 插入 插入。。。。。屌丝非常忌讳的词


只有sysadm和sysctl的权限才可以创建表空间

只有在缓冲池创建或者激活的状态才能使用create tablespace命令

缓冲池可以动态的增加、删除和变更

DFT_PREFETCH_SZ能够优化计算的环境

create                  [LARGE/REGULAR/TEMPORARY]

       TABLESPACE       tablespace

       PAGESIZE integer

       MANAGED BY       [AUTOMATIC STORAGE][SYSTEM/DATABASE]

                        [system-container/database-container]

       EXTENTSIZE [number-of-pages/integer]

       PREFETCHSIZE [number-of-pages/integer]

       BUFFERPOOL bufferpool-name

       OVERHEAD number-of-milliseconds (系统默认)

       TRANSFEBRATE number-of-milliseconds

       ...

       AUTORESIZE YES

       USING (DEVICE 'Container-String' integer K|M|G)

这里是个例子 大家可以联系下 create tabblespace 屌丝 managed by database using (device '/dev/rhdisk0' 10000(页数),device'/dev/rn1hd01' 40G)

注意这里的pagesize bufferpool中的pagesize是相同的

 表空间的类型

Create  {largeregular[system/user] temporary} TABLESAPCE name


 

(1) 常规表空间(REGULAR)

SMS时默认为regular

存储用户数据,如USERSPACE1

(2) 临时表空间

系统临时表空间:DB2用来排序

用户临时表空间:被用来定义全局临时表空间在内存里

创建用户临时表空间:

  用户临时表空间用来存储已说明的临时表。

CREATE USER TEMPORARY TABLESPACE usr_tbsp

  MANAGED BY DATABASE

  USING (FILE 'd:\db2data\user_tbsp' 5000,

         FILE 'e:\db2data\user_tbsp' 5000)


(3) 大型表空间

DMS时 默认是LARGE

存储多媒体对象或其他大型对象数据

接下来 屌丝大哥 为你介绍表空间缓冲池

缓冲池(bufferpool) 是一个内存块的集合,这些内存块采用页面的形式。在首次创建数据库时,同时创建了一个默认的缓冲池 IBMDEFAULTBP。可以在创建表空间时,或者在 Buffer Pools 视图中使用 Create New Bufferpool 向导,创建新的缓冲池。

  缓冲池最重要的作用是,在数据库读写硬盘上的数据时帮助减少 I/O 开销。这是通过 I/O 预获取和页面清理器实现的。预获取能够减少读取页面的 I/O 开销,其原理是:预先判断特定查询可能需要的页面,然后将这些页面读入缓冲池,因此当查询需要它们时,它们已经准备好了。页面清理器确保将事务不再需要的已经更新的页面首先写到硬盘上,然后从缓冲池中清除它们。这确保缓冲池中有足够的干净空间可以读取页面。

  DB2 支持不同的页面大小:2K、4K、8K、16K 和 32K。IBMDEFAULTBP 使用 4K 的页面大小。如果希望创建采用其他页面大小的表空间,那么首先要确保数据库中有采用这种页面大小的缓冲池。多个表空间可以使用同一个缓冲池。在创建或更改表空间时,可以指定要使用哪个缓冲池。选择和创建适当的缓冲池对于数据库性能很重要。可以根据需要创建新的缓冲池或更改现有的缓冲池。
 在 Control Center 中,点击 Buffer Pools。可以看到数据库中的所有缓冲池。选择创建新的缓冲池或更改现有的缓冲池。


看到了么  屌丝大哥 也创建了个缓冲池 是不是很给力??

DB2 系统目录表和视图

  在创建新数据库时,DB2 会在编目表空间中创建多个系统编目表和视图。这些系统编目表和视图用来跟踪数据库管理程序需要知道的关于数据库对象、访问控制信息和工具的重要信息。系统编目视图基于基本系统编目表。用户在一般情况下通过查询系统编目视图来查看感兴趣的系统编目表数据。

  在 Control Center 中,在 All Database 视图下面,展开 HELLOWLD,然后选择 Table Spaces。选择右上窗口中显示的 SYSCATSPACE。可以在右下窗口中看到这个表空间的概况:

Control Center —— Tablespaces 视图

  CC —— Tablespaces 视图

  点击 Show Related Objects。会出现一个新页面,其中显示表空间 SYSCATSPACE 中的所有表和索引,以及它们的模式 SYSIBM。点击 Indexes,列出 SYSCATSPACE 中的所有索引。Show SQL 显示用来获得这个表空间中的表或索引列表的 select 命令。

 表、索引、模式和视图都是重要的 DB2 对象,本教程后面都会详细讨论。但是,首先试试手工创建表空间:

  1. 在 Control Center 中点击 Create New Tablespace,启动 Create Table Space 向导。输入 TBSP_DATA1 作为表空间名,在 comment 中输入 DMS tablespace to hold data。
  2. 选择 Regular 来选择要使用的表空间类型并点击 Next。出现 Specify a buffer pool 面板,在这里选择这个表空间要使用的缓冲池。
  3. 使用默认的 IBM 缓冲池,但是也可以使用 Create 按钮创建新的缓冲池。点击 Next。

创建新的表空间 —— 指定缓冲池

  创建新的表空间 —— 步骤 2

 4. 这个面板允许指定表空间是由数据库管理(DMS),还是由系统管理(SMS)。选择 Database-managed space (high performance)。点击 Next。Containers 页面出现。

  5. 在 Containers 页面上,可以指定容器的数量。容器(Container) 可以是存储表空间数据的目录、文件或设备。可以为每个表空间创建多个容器,而且在创建表空间之后,可以删除现有的容器或添加更多的容器。点击 Add,Define Container 页面出现,可以在这里为新的表空间定义容器。

  6. 可以为新的表空间定义多个容器。不同的容器可以位于不同的物理节点或路径。按照图 11 所示添加容器,然后点击 OK。

 图 11. 创建新的表空间 —— 添加容器

  创建新的表空间 —— 添加容器

  7. 用相同的操作添加相同路径上的另一个容器 tbsp_data1_c02。

  8. 应该会看到添加的两个容器,见图 12。每个容器的大小是 5MB,总共 10MB。如果对已经定义的容器不满意,那么点击 Change 或 Remove。点击 Next 继续。

  图 12. 创建新的表空间 —— 容器页面

  创建新的表空间 —— 容器页面

  9. 下一个页面帮助您定义这个表空间使用的区间和预获取大小。一个区间(extent)包含一系列连续的页面。页面的数量称为区间的大小。一般来说,希望一次分配多个页面,从而减少空间分配的开销。预获取大小是指在启用预获取时预获取器读取的页面数量。预获取的概念在前面讨论过。选择 Less than 25MB 来改变表的平均大小,建议的区间大小会自动地改为适当的设置。

  10. 点击 Summary 显示 Summary 页面。点击 Show SQL 并将 SQL 保存在 C:\DB2\hellowld\crt_tbsp.clp 中。点击 Finish 让 Create Tablespace 向导完成操作。

  11. 在 Control Center Table Spaces 视图中,应该能够找到新的表空间 TBSP_DATA1。如果对新创建的表空间 TBSP_DATA1 不完全满意,那么点击 Alter Tablespace 来修改这个表空间。如果希望创建 SMS 表空间,那么点击 Create New Tablespace。

  图 13. Control Center —— Tablespace 视图

  Control Center —— Tablespace 视图

  12. 将索引、大对象(Large Object,LOB)和大字段(Long Field,LF)或 XML 数据与表数据分开存储是有好处的。但是,在本教程中没有 LOB/LF 数据,所以不需要为它们创建表空间。XML 数据存储在与其他数据相同的表空间 TBSP_DATA1 中,所以也不需要为它创建表空间。后面几节将讨论索引。

  13. 在 DB2 命令行上,输入 cd C:\DB2\HELLOWLD\ 来创建表空间。如果目录 HELLOWLD 还不存在,需要首先创建它。然后,运行以下命令 notepad crt_tbsp.clp。在 notepad 中,编辑 Create Tablespace 语句,将它改为以下代码: CREATE LARGE TABLESPACE TBSP_INDEX1 PAGESIZE 4 K MANAGED BY DATABASE USING

  (FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_index1_c01' 5120,

  FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_index1_c02' 5120)

  EXTENTSIZE 8 OVERHEAD 10.5 PREFETCHSIZE 8 TRANSFERRATE 0.14 BUFFERPOOL IBMDEFAULTBP;

  14. 将 COMMENT 语句改为: COMMENT ON TABLESPACE TBSP_INDEX1 IS'tablespace to hold index data';

  现在 crt_tbsp.clp 中的命令应该是下面这样:

CONNECT TO HELLOWLD; 

CREATE LARGE TABLESPACE TBSP_INDEX1 PAGESIZE 4 K MANAGED BY DATABASE USING 
(FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_index1_c01' 5120, 
FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_index1_c02' 5120 ) 
EXTENTSIZE 8 OVERHEAD 10.5 PREFETCHSIZE 16 TRANSFERRATE 0.14 BUFFERPOOL IBMDEFAULTBP ; 

COMMENT ON TABLESPACE TBSP_INDEX1 IS 'tablespace to hold index data'; 

CONNECT RESET; 

  15. 保存并退出 notepad。

  16. 在 DB2 命令行窗口中运行 db2 -tvf crt_tbsp.clp 命令,应该会看到成功地创建了这个表空间。DB2 命令行选项 -tvf 允许运行来自文件的 DB2 命令。

  17. 进入 Control Center,点击 Control Center 主菜单中的 Selected,然后点击下拉菜单中的 Refresh,查看到目前为止创建的所有表空间。


 

posted @ 2012-12-06 15:40 顺其自然EVO 阅读(1242) | 评论 (0)编辑 收藏

《笑傲测试》笔记(第八式:春寒锦袍)

《笑傲测试》笔记(第八式:春寒锦袍)

主题:如何管理团队以及激励团队

  测试是为了先于客户发现问题,这是测试的核心使命。

  建立良好的团队氛围,需要考虑这四大要素:

  (1)管理者的威信

  (2)团队的目标和发展方向

  (3)团队优先,个人次之

  (4)科学的绩效评估和奖励体系

  一、管理者的威信

  “治军之道,严令为先”统帅要通过严格的法令和纪律树立自己的威信。

  威:指权力和能力,其实做一个项目,最考验管理者能力的地方无非是工作任务的分派和人员绩效的评定。对任务的分派,能不能做到人尽其才,物尽所用;对绩效的评定,能不能做到一碗水端平,一视同仁,不能被主观印象所左右。

  信:指为人有信誉,讲信用,做事公平。做决定前要深思熟虑,决定了的事要雷霆万钧地执行,最忌讳的是朝令夕改,人云亦云,让下属无所适从。

  二、团队的目标和发展方向

  把目标定义的活泼一点,生动一点,具体一点,可行一点。

  生于忧患,死于安乐。生存的唯一有效途径就是不断的学习、培训、总结、充实、提高。测试团队有很多独特的技能需要具备,所以作为测试团队的管理者,总要始终把培训放在一个相当的高度去重视并监督实施。

  和测试相关的培训可以分为三个方面:产品技术培训、测试技术培训、测试流程培训。

  产品技术培训是为了使测试人员对于产品有深层次的了解,缩小开发和测试之间对产品理解上的距离;

  测试技术培训是为了让测试者学习和熟悉测试项目中需要用到的测试理论、技术、工具和方法;

  测试流程培训是为了让测试项目的参与者能够充分的理解测试时需要用到的各种流程、工具,同时也能让整个测试团队熟悉测试项目中的各种流程和规章,按照整齐划一的步骤去执行测试,明确每个环节的输入和输出、质量要求、各部门的协作方式等。

  培训在测试团队中的意义是重大的,从技术上说,相对于开发人员,测试人员通常会处于弱势,对产品的理解更易于出现偏差,需要培训进行纠正;从团队精神上说,或者源于误解或源于测试的枯燥性,测试人员相对更敏感一些,她们对前途往往不那么自信,这是如果他们能从培训中获取一些职业的更深理解,对团队的气氛是会很有帮助的。

  三、从优秀的个人到优秀的团队—团队优先、个人次之

  如果过度地强调了对个人成就的肯定,忽略了团队的协作性,那么这样鼓起的气氛也很容易被散掉,因为团队中其他人的感受也必须要兼顾。

  我们需要认真严肃地分析作为团队的核心价值观是什么,如何通过设计合理的激励机制来宣扬和肯定这种价值观并潜移默化地对特立独行的行为进行否定,同时如何设计多重的激励方式,让大多数人能够看到自己被肯定的可能性。

  四、绩效评价和奖励体系—建立公平且有针对性的激励机制

  作为测试团队的管理者,要建立一套鼓励先进、鼓励合作的激励机制,保证团队中每个人对其都比较在意但又不能过度追求。

  成功的管理者一定要讲中庸,要在理论与现实,速度与质量,严格与宽容,上级与下属等矛盾体之间寻找平衡。

  激励主要从三方面考虑:

  (1)数量,包括测试用例设计的数量、测试用例执行的数量、测试中发现问题的数量等;

  (2)质量,测试用例设计的质量、测试用例执行结果的质量、问题报告的质量和其他各种报告、文档的质量;

  (3)合作精神、团队工作,包括一些团队中的行为,比如承担培训的时间和质量、做新员工导师、各种兼职的质量监督小组等。

  如何对先进者给予激励:

  (1)重奖团队,轻奖个人,以这种方式鼓励团队的协作;

  (2)参照奥斯卡的体系,多设一些奖项从而避免出现一二三名对号入座的现象;

  (3)奖励金额不高不低,建议介于参与评奖人员平均工资的3%~5%之间。

  对奖励机制的建议:

  (1)奖励的名额和金额要根据你能拿到的预算来决定;

  (2)不要把辛辛苦苦获得的预算全部用在考核奖励上,要预留一些作为机动。

版权声明:本文出自 hellorenwei 的51Testing软件测试博客:http://www.51testing.com/?578951

原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。

相关链接:

《笑傲测试》笔记(前言+第一式:庐山面目)

《笑傲测试》笔记(第二式:蓬门始开)

《笑傲测试》笔记(第四式:矫如龙翔)

《笑傲测试》笔记(第五式:浮云遮日)

《笑傲测试》笔记(第六式:伯仲伊吕)

《笑傲测试》笔记(第七式:语报平安)

posted @ 2012-12-06 15:02 顺其自然EVO 阅读(192) | 评论 (0)编辑 收藏

跟屌丝学设计模式之责任链模式

     摘要: JAVA之责任链模式原文地址:http://itzyx.com/index.php/java_zrl/在阎宏博士的《JAVA与模式》一书中开头是这样描述责任链(Chain of Responsibility)模式的:   责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定...  阅读全文

posted @ 2012-12-06 11:19 顺其自然EVO 阅读(652) | 评论 (0)编辑 收藏

跟屌丝学DB2 第二课 建立数据库以及添加用户

在安装DB2 之后,就可以在 DB2 环境中创建自己的数据库。首先考虑数据库应该使用哪个实例。实例(instance) 提供一个由数据库管理配置(DBM CFG)文件控制的逻辑层,可以在这里将多个数据库分组在一起。DBM CFG 文件包含一组 DBM CFG 参数,可以使用它们对实例进行调优。在每个工作站上可以创建多个实例,在每个实例中可以创建多个数据库。
屌丝学习当然要创建屌丝实例
Windows先创建DB2实例的方法 
在Windows下,通过如下命令即可创建DB2实例:db2icrt instance_name

屌丝这个实例就创建
将屌丝这个实例添加进数据库中,如图



需要注意的是,instance_name必须按照如下的规则命令:

  1)不能大于 8 个字符

  2)不能 以"sql"、"ibm"或"sys"开头

  3)不能以数字开头或者包含 a-z、$、#、@、_ 或 0-9 之外的字符

  如:


以下是代码片段:
DB2BIN>db2icrt insttest

  DB20000I DB2ICRT命令成功完成。

  DB2BIN>db2ilist --列举服务器上存在的 DB2 实例

以下是代码片段:
    INSTTEST 
  D:DB2BIN>

  要删除一个实例,首先断开所有数据库连接,然后执行以下命令停止实例:

以下是代码片段:
db2idrop -f instance_name

  比如:

以下是代码片段:
DB2BIN>db2idrop -f insttest

  DB20000I DB2IDROP命令成功完成。

  DB2BIN>

  察看实例配置文件

  --默认

以下是代码片段:
DB2 GET DBM CFG

  --分屏显示

以下是代码片段:
DB2 GET DBM CFG | More

  --将显示结果存入 cfg.out 文件中

以下是代码片段:
DB2 GET DBM CFG > cfg.out
 
接下来 给位屌丝DB就要创建数据库了  记住有2种方式创建 第一种 就是用control center

如下所示,在创建数据库时要考虑几个因素。有几种创建数据库的方法。可以使用从 Control Center 调用的 Create Database 向导,它会引导用户分步创建数据库。如果您了解实际的 Create Database 命令的话,还可以从 DB2 Command Window、Command Editor 或命令行直接发出命令。

 在这个示例中,从 DB2 First Steps Launch 面板的 Create Database 向导:

  1、启动 DB2 Control Center。点击 Start > All PRograms > IBM DB2 > General Administration Tools 并选择 Control Center。当提示选择 Control Center 视图时,点击 OK 选择默认视图(Advanced)。

  2、点击 All Databases(如图 5 所示),然后点击 Create New Database。Create Your Own Database 向导打开。

  从 Control Center 创建新数据库


从 Control Center 创建新数据库

在 Create Your Own Database 向导中,指定数据库名和数据库目录的位置。输入 HelloWld 作为数据库名。指定 C:\ 作为默认路径。输入 hwld 作为数据库别名。在 Comment 字段中输入任何描述性的注释。

  4、选中 Enable Database for xml。XML 列只能在 UTF-8 代码集(Unicode)数据库中使用。所以要在数据库中使用 XML,就必须创建 Unicode 数据库。

  5、不需要指定任何其他数据库选项,所以选择 Summary 面板,然后点击 Show Command 来查看创建这个数据库所用的 DB2 命令。

  6、因为在这个数据库中启用了 XML,所以使用 CODESET UTF-8。点击 Close。如果想将命令保存到文件中,供以后参考或重用,那么点击 Save 而不是 Close。

  7、在 Create New Database 窗口中,点击 Finish 并等待向导完成操作。


在 DB2 创建数据库时,它还创建以下东西:

  1、在指定的驱动器或路径上创建必要的数据库目录

  2、创建一组默认的表空间,包括 SYSCAT、TEMPORARY 和 USER 表空间

  3、在编目表空间中创建一组系统编目表和视图

  4、创建数据库配置(DB CFG)文件并设置默认值

  5、为数据库恢复日志文件创建空间并分配它

  6、为数据库(如 CLI)和命令行处理器创建的几个应用程序


 使用 DB2 Control Center 检查创建的数据库

  在 Control Center 左边的面板中,找到并展开 All Systems 和 All Databases。看看是否能够找到刚才创建的 HELLOWLD 数据库。All Systems 提供了数据库对象视图,这些对象依次根据机器、实例和数据库进行分组。在这个机器上只有一个实例,DB2。All Databases 提供了这个机器上的所有数据库的快速查看。

  图 6. 查看新数据库

  查看新数据库

  如果您了解创建数据库所用的 DB2 命令,那么可以使用在前面的 Create New Database 向导窗口中保存的 CREATE DATABASE 命令并根据需要进行修改,然后从 DB2 命令行处理器发出 CREATE DATABASE 命令来创建数据库。

  选择 Start > Run,输入 db2cmd 并按 Enter。打开 DB2 命令行处理器窗口。要想获得 create database 命令的帮助,可以在命令行窗口中输入 db2 ? create database。

  输入 db2 CREATE DATABASE MYTESTDB ON C:。在命令成功完成之后,点击 Control Center 主菜单中的 Selected 并点击 Refresh。然后看看是否能够在 Control Center 中找到新的数据库 MYTESTDB。

  在 DB2 命令窗口中输入命令 db2 LIST DATABASE DIRECTORY。应该会看到 HELLOWLD 和 MYTESTDB 数据库的数据库项。
第二种 用命令创建;

db2 CREATE DATABASE diaosi ON C: USING CODESET UTF8 TERRITORY CN COLLATE USING SYSTEM
territory cn 是数据库的语言环境   
USING CODESET UTF8 指的是数据库用utf8字符 

为DB2数据库创建新用户帐户并为其分配特定特权  

目标

到目前为止,一直使用实例管理员帐户(SYSADM)来执行所有数据库命令。这个帐户对所有实用程序、数据和数据库对象具有完全访问权。因此,为了避免无意或有意的数据损失,必须要保护这个帐户。在大多数情况下,需要创建不同的用户和/或组,并授予有限的权限集。在本次实验中,将创建一个新的用户帐户,然后为它分配特定的特权。

步骤

1.通过控制面板打开“管理”菜单项,打开“计算机管理”控制台。

2.在窗口左边的面板中,展开“系统工具”,然后展开“本地用户和组”文件夹。右击 “用户”文件夹并选择“新建用户”菜单项。


图 1. 打开计算机管理中用户管理


打开计算机管理中用户管理

3.在“用户”对话框中,输入以下信息(另外参见下图)。在“用户名”框中,输入 customer。在“全名”框中,输入 Customer1。在“描述”框中,输入 A typical bookstore customer。在 “密码” 和 “确认密码” 框中,输入 ibmdb2admin。取消 “用户下次登录时须修改密码”选项。最后,单击“创建”按钮创建新用户。


图 2. 创建一个新用户

创建一个新用户

4.确保使用 Control Center (控制中心) 的高级视图。切换到高级视图的方法是,从 Control Center (控制中心) Tools 菜单中选择 Customize Control Center (控制中心) 菜单项,选择 Advanced (高级) 选项并单击“确定”按钮。


图 3. 打开控制中心高级视图

打开控制中心高级视图 

5.在 Control Center (控制中心) 左边面板中的对象树中,依次展开所有数据库> EXPRESS > Tables。

6.将所需的特权授予刚才创建的用户。在 EXPRESS 数据库的表列表中,右键单击 CUSTOMERS 表并选择 “特权” 菜单项,这时会显示 “表特权” 对话框。


图 4. 打开特权菜单项

打开特权菜单项 

7.单击“添加用户”按钮并选择刚才创建的 customer 用户。单击 “确定”按钮关闭 “添加用户” 对话框。


图 5. 给表添加用户

给表添加用户 

8.您会注意到,customer 用户已经添加到用户列表中了,但是还没有分配特权。为了授予这个用户 SELECT、INSERT、UPDATE 和 DELETE 特权,将所有下拉框改为 Yes。因特网客户应该能够查看/添加/更新/删除他们的帐户数据。我们不授予这个用户其他权限,因为他们不需要那些权限。单击 “确定” 按钮关闭 “表特权” 对话框并接受所做的修改。


图 6. 授予用户权限

授予用户权限 

9.对于 BOOKS 和 SALES 表重复第 6-8 步。对于 BOOKS 表,只授予 SELECT 特权,因为不应该允许客户修改商店的库存数据。对于 SALES 表,只授予 SELECT 和 INSERT 特权。客户不应该有 DELETE 或 UPDATE 特权,因为只有商店职员应该有权修改销售数据。

10.使用上面创建的用户 ID 连接数据库。尝试从 CUSTOMERS 表中选择数据,会发生什么情况?尝试删除或更新 SALES 表中的数据,会发生什么情况?

在本次实验中,我们只创建了一个用户;但是,实际的应用程序可能包含许多不同类型的用户。请您自己试着创建其他用户并授予他们特权。还可以创建用户组并向组授予特权,这样就不必向每个用户分别授予特权。

转帖者注:

    创建完新用户后,在使用该新用户身份进行JDBC连接时需要注意SQL语句的写法。比如:当初创建数据库时使用的是Administer用户身份。现在在该数据中增加了用户——customer,那么在使用customer身份连接数据库后的所有SQL语句均要求在表名前增加原数据库表的创建者。

例如,SELECT * FROM Administer.TableName ; (注意红色部分)不能写成SELECT * FROM TableName ,否则会发生

42704错误:

SQLException information
Error msg: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=ADMIN.CONTACT, DRIVER=3.50.152
SQLSTATE: 42704
Error code: -204
com.ibm.db2.jcc.b.nm: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=ADMIN.CONTACT, DRIVER=3.50.152
at com.ibm.db2.jcc.b.wc.a(wc.java:579)
at com.ibm.db2.jcc.b.wc.a(wc.java:57)
at com.ibm.db2.jcc.b.wc.a(wc.java:126)
at com.ibm.db2.jcc.b.tk.c(tk.java:1901)
at com.ibm.db2.jcc.b.tk.d(tk.java:1889)
at com.ibm.db2.jcc.b.tk.a(tk.java:1416)
at com.ibm.db2.jcc.t4.db.g(db.java:138)
at com.ibm.db2.jcc.t4.db.a(db.java:38)
at com.ibm.db2.jcc.t4.t.a(t.java:32)
at com.ibm.db2.jcc.t4.sb.h(sb.java:141)
at com.ibm.db2.jcc.b.tk.N(tk.java:1387)
at com.ibm.db2.jcc.b.tk.a(tk.java:2215)
at com.ibm.db2.jcc.b.tk.a(tk.java:557)
at com.ibm.db2.jcc.b.tk.executeQuery(tk.java:541)
at com.EzJava.main(EzJava.java:45)
Error msg: DB2 SQL Error: SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2;-204;42704;ADMIN.CONTACT, DRIVER=3.50.152
SQLSTATE: 56098
Error code: -727
com.ibm.db2.jcc.b.SqlException: DB2 SQL Error: SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2;-204;42704;ADMIN.CONTACT, DRIVER=3.50.152
at com.ibm.db2.jcc.b.wc.a(wc.java:55)
at com.ibm.db2.jcc.b.wc.a(wc.java:126)
at com.ibm.db2.jcc.b.tk.c(tk.java:1901)
at com.ibm.db2.jcc.b.tk.a(tk.java:1443)
at com.ibm.db2.jcc.t4.db.n(db.java:739)
at com.ibm.db2.jcc.t4.db.i(db.java:257)
at com.ibm.db2.jcc.t4.db.c(db.java:52)
at com.ibm.db2.jcc.t4.t.c(t.java:44)
at com.ibm.db2.jcc.t4.sb.i(sb.java:153)
at com.ibm.db2.jcc.b.tk.P(tk.java:1438)
at com.ibm.db2.jcc.b.tk.a(tk.java:2217)
at com.ibm.db2.jcc.b.tk.a(tk.java:557)
at com.ibm.db2.jcc.b.tk.executeQuery(tk.java:541)
at com.EzJava.main(EzJava.java:45)



posted @ 2012-12-05 18:30 顺其自然EVO 阅读(7551) | 评论 (0)编辑 收藏

跟屌丝一起学习 DB2 第一课 安装DB2

如果您没有DB2的安装软件,那么您可以到IBM的官方网站上下载免费试用版,唉 苦逼的屌丝 只能用 免费版  你也可以选择Express-C 版本 网址如下:www-900.ibm.com/cn/software/db2/ 或者度娘 自己找

获得的安装文件是一个压缩包:



DB2的安装1、解压DB2安装压缩包

              解压获得的DB2安装压缩包:



图3

2、安装DB2 V8.2

                    双击解压后安装文件目录中的“setup.exe”文件,开始安装




图4

                   第一步:首先进入安装界面:

唉 终于苦逼的进来了  


后续安装步骤请参见------>图解:IBM DB2 安装完整过程 ( 二 )

将鼠标移动到安装界面不同项,会提示您不同的信息:

 安装先决条件:显示安装DB2的软硬件需求,先决条件和安装说明。
各种数据库 很卡  还是mysql好些。。小点也实用



发行说明:显示本产品的最新信息,包括与本产品相关的书籍的自述文件。

安装产品:展示可安装的产品列表,可以从列表中进行选择




退出安装:关闭此窗口。


第二步:点击“安装产品”,进入选择安装产品界面。
反正各种用着不习惯 ,最坑爹的是 找不到顺手的编辑器

图10

我们的演示版本只有一个可选项,即:DB2 UDB企业服务器版。选中此项。

点击“下一步”进入下一步安装。

图11

第三步:安装程序进入“欢迎使用DB2安装向导”界面。 点击“下一步”。

 

 

第四步:安装进入“许可证协议”界面,选择“我接受许可证协议中的全部条款”,否则,安装程序将被终止。点击“下一步”。



第五步:安装进入“选择安装类型”界面
 典型安装:安装程序按照缺省的配置进行安装,您可以在附加功能一栏中添加如“数据仓库”或“卫星管理功能”的功能。对于大多数的开发环境,选择“典型安装”就可以了。

压缩安装:这个类型只是安装DB2最基本的功能部件和功能,执行最小的配置。

定制安装:您可以自己决定安装什么功能和功能部件,但是,这个类型要求您对DB2的功能部件和设置都比较了解。

第六步:安装程序进入“选择安装操作”界面

¨        第一项:是否在计算机上安装DB2 企业服务器版本,这个必须被选中。

¨        第二项:是否将您对在安装过程中对DB2的设置保存到响应文件中,保存后的响应可以在下一次安装DB2时使用,这个选项对于局域网环境下大批量安装DB2会省去很多重复劳动。我们这里不选中它。点击“下一步”。

 

我们这里选择“典型安装”,点击“下一步”。

第七步:安装进入“选择安装文件夹”界面

驱动器:是您想要将DB2安装的目的磁盘,旁边有安装的必需空间,点击“磁盘空间”可以查看所选的驱动器的剩余空间是否足够。建议您不要安装到C盘,因为重新安装操作系统时C盘的数据将丢失。这里我们选择D盘。

目录:是在您选择的驱动器上安装DB2的路径,点击“更改”可以更改路径。点击“下一步”。


第九步:安装进入“设置管理联系人列表”界面

¨管理联系人列表位置:将管理联系人列表创建的位置,有本地和远程两种。本地就是在本系统中创建;远程就是将列表保存在另一个DB2服务器上。

¨通知SMTP服务器:此处服务器是接收向管理联系人发送通知的服务器,对于开发环境来说SMTP服务器一般无需设置。点击“下一步”。


第十步:安装进入一个警告界面

这里是因为没有指定SMTP服务器,由于我们安装的是开发环境,这个警告可以忽略,点击“确定”继续。


第十一步:安装进入“配置DB2实例”界面

DB2实例为执行DB2命令和SQL语句提供了一个逻辑的上下文环境,一个DB2实例下可以创建多个数据库,缺省情况下,系统会创建一个名叫”DB2”的实例,点击“下一步”。


第十二步:安装进入“准备DB2 工具目录”界面

DB2 工具目录可以用来做什么呢?举个例子,在生产环境下,我们常常需要在系统运行过程中对数据库的性能进行监控,DB2性能诊断工具常常将监控结果存放在工具目录数据库中的,供管理员后续统计分析使用。由于我们部署的是开发环境,因此这个选项不需要选择,直接点击“下一步”。



第十三步:安装进入“为健康监视器通知指定联系人”界面

对于生产环境来说,“健康监视器”提供了在数据库系统出现异常情况时通知管理员的功能,由于我们安装的是开发环境,这个选项无需设置,我们选择将任务延迟到完成安装后进行。点击“下一步”


第十四步:安装进入“对DB2对象启用操作系统安全性”界面

您可以选择是否选择启用操作系统安全性,选择“是”,点击“下一步”



第十五步:进入“开始复制文件”界面

到此,安装向导所需要的配置信息基本设置完成。如果您要查看或更改参数设置,请单击上一步,如果对设置感到满意,点击“安装”开始安装。


第十六步:系统进入安装过程,DB2开始复制文件并进行系统参数设置,这个过程可能会持续几分钟。



第十七步:安装文件复制完成后,系统安装进入“安装完成”界面,点击“完成”

在control center中建库


 


 

 

 

 

 

posted @ 2012-12-05 17:16 顺其自然EVO 阅读(565) | 评论 (0)编辑 收藏

java设计模式-桥接模式(屌丝男学设计模式)

本文介绍设计模式中的桥接(Bridge)模式的概念,用法,以及实际应用中怎么样使用桥接模式进行开发。

Bridge模式的概念

Bridge 模式是构造型的设计模式之一。Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。

Bridge模式的应用场景

面向对象的程序设计(OOP)里有类继承(子类继承父类)的概念,如果一个类或接口有多个具体实现子类,如果这些子类具有以下特性:
- 存在相对并列的子类属性。
- 存在概念上的交叉。
- 可变性。
我们就可以用Bridge模式来对其进行抽象与具体,对相关类进行重构。

为了容易理解,我们举例说明一下,比如屌丝(DiaoSi),假设有2个子类,男屌丝类(ManDiaoSi)与女屌丝类(WomanDiao),它们有[穷挫矮]这个动作行为,通过不同穷挫矮特征的设置,可以将它们设置为比如为拥有黑木耳男屌丝或(拥有撸管王的女屌丝),和拥有紫木耳男屌丝或(拥有撸神的女屌丝)的各种屌丝。
这样,不管是黑木耳男屌丝还是紫木耳男屌丝,又或是有撸管王的女屌丝还是有撸神的女屌丝,它们都可以是屌丝类的子类,而且:
- 存在相对并列的子类属性。屌丝的种类,与屌丝穷挫矮的规格是屌丝的2个并列的属性,没有概念上的重复。
- 存在概念上的交叉。不管是男屌丝还是女屌丝,都是穷挫矮,黑穷丑的屌丝。
- 可变性。除了男屌丝,女屌丝之外,可能还有人妖屌丝;除了有黑木耳(撸管王)与紫木耳(撸神)特征的屌丝之外,还可能有紫黑木耳(撸圣)的屌丝等等。

这样一来,我们怎么来设计屌丝类呢?

方法一

通过继承设计所有可能存在的子类。可能我们会想到下面的这种继承关系:
屌丝总类:DiaoSi
屌丝子类 - 按种类分类:ManDiaoSiWomanDiao
屌丝子类 - 按特征分类:拥有黑木耳男屌丝,拥有撸管王的女屌丝拥有紫木耳男屌丝拥有撸神的女屌丝
这样设置特征这个动作就由各个子类加以实现。

但如果以后需要增加一种人妖屌丝(GuyDiaoSi),以及增加一个特征规格紫黑木耳,需要实现的子类将会有:
拥有黑木耳男屌丝,拥有撸管王的女屌丝拥有紫木耳男屌丝拥有撸神的女屌丝  拥有紫黑木耳男屌丝 拥有撸管王的人妖屌丝 拥有紫黑木耳人妖屌丝 拥有紫木耳人妖屌丝
 等等。
也就是说,这种设计方法,子类数目将随几何级数增长。
而且,拥有黑木耳男屌丝拥有紫木耳人妖屌丝的特征规格相同,它们的特征设置动作应该是一样的,但现在把它们分成不同的子类,难以避免执行重复的动作行为。

 

方法二

分别为男屌丝以及女屌丝实现设置不同特征的方法
屌丝总类:DiaoSi
屌丝子类:ManDiaoSiWomanDiao

然后在男屌丝类里分别提供黑木耳(撸管王)以及紫木耳(撸神)特征的设置方法:
ManDiaoSi extends DiaoSi
 {
    public setFeatures黑木耳();
    public setFeatures紫木耳();
}

在女屌丝类里也分别提供撸管王以及撸神特征的设置方法:
WomanDiao extends DiaoSi
 {
    public setFeatures撸管王();
    public setFeatures撸神();
}

这种情况,子类的数量是被控制了。但一方面,如果每增加一种特征规格,需要修改所有的屌丝子类;另一方面,即使特征的设置行为一样,但是不同的屌丝子类却需要提供完全一样的方法。

在实际的应用开发中,以上2种方法都会造成迁一发而动全身,而且会存在大量的重复代码。

Bridge模式可以很好的解决这类问题。
Client
    Bridge模式的使用者
Abstraction
    抽象类接口(接口或抽象类)
    维护对行为实现(Implementor)的引用
Refined Abstraction
    Abstraction子类
Implementor
    行为实现类接口 (Abstraction接口定义了基于Implementor接口的更高层次的操作)
ConcreteImplementor
    Implementor子类

 

Bridge模式的应用范例

我们来看看怎么应用Bridge模式来设计汽车类。

抽象 - Abstraction类:屌丝类及其子类:
屌丝总类:DiaoSi
屌丝子类 - 按种类分类:ManDiaoSiWomanDiao
屌丝子类 - 按特征分类:拥有黑木耳男屌丝,拥有撸管王的女屌丝拥有紫木耳男屌丝拥有撸神的女屌丝

行为实现 - Implementor:屌丝特征设置的行为类及子类
 setFeatures:屌丝特征的设置接口
 setFeatures黑木耳();
setFeatures紫木耳();

代码:

package ITfarmer.designpatterns.study.bridge;

//测试

public class Client
{
    public static void main( String[] argv )
    {
        Features 黑木耳= new  男屌丝特征();

         Features 木耳= new  
女屌丝特征();
       
        DiaoSi 拥有黑木耳的男屌丝= new  ManDiaoSi( 黑木耳 );
         DiaoSi 拥有紫木耳的男屌丝= new  ManDiaoSi( 紫木耳 );
        拥有黑木耳的男屌丝.setFeatures();
        拥有紫木耳的男屌丝.setFeatures();
       
        DiaoSi 拥有黑木耳的女屌丝= new WomanDiao( 黑木耳 );
        Vehicle 拥有紫木耳的女屌丝= new WomanDiao( 紫木耳 );
      拥有黑木耳的女屌丝.setFeatures();
        拥有紫木耳的女屌丝.setFeatures();
       
    }
}

package ITfarmer.designpatterns.study.bridge;


 *
 * @author
 * @since 2012/12/05
 */
public abstract class DiaoSi
{
    private Features features;

    Vehicle( Features features)
    {
        this.setFeatures features);
    }
   
    public abstract void setFeatures();

    public void setFeaturesFeatures features)
    {
        this.featuresfeatures;
    }

    public Features getFeatures()
    {
        return  features;
    }
}

package ITfarmer.designpatterns.study.bridge;

//Abstraction子类:这里为屌丝抽象类的子类

public class ManDiaoSi extends DiaoSi
{
    public ManDiaoSi (Features features
)
    {
        super( features
 );
    }
   
    @Override
    public void setFeatures()
    {
        System.out.print("男屌丝的特征: ");
        getFeatures.setFeatures();
    }
}

package ITfarmer.designpatterns.study.bridge;

//Abstraction子类:这里为屌丝抽象类的子类

public class WomanDiaoSi extends DiaoSi
{
    public WomanDiaoSi ( Features features
 )
    {
        super( features
);
    }

    @Override
    public void  setFeatures()
    {
        System.out.print("女屌丝的特征: ");
        getFeatures().seFeatures();
    }

}

package ITfarmer.designpatterns.study.bridge;

//屌丝类的行为接口

public interface Features
{
    public void setFeatures();
}

package ITfarmer.designpatterns.study.bridge;

/** ConcreteImplementor */
//行为实现子类

public class 男屌丝特征 implements Features
{

    public void setFeatures()
    {
        System.out.println("黑木耳 或者 撸管王");
    }   
   
}

package ITfarmer.designpatterns.study.bridge;

/** ConcreteImplementor */
//行为实现子类

public class  女屌丝特征 implements Features
{

    public void setFeatures()
    {
        System.out.println("黑木耳 或者 撸管王");
    }   
   
}

小结:Bridge模式是一种抽象与其实现相分离的模式。它主要应用于:当事物是一组变化量,和对这些事物的操作方法(实现)也是一组变化量的情况,也就是说它们都是多变的。

 

posted @ 2012-12-05 16:21 顺其自然EVO 阅读(1485) | 评论 (0)编辑 收藏

Bug敏感度与软件质量关系

Bug敏感度与软件质量关系

  正如前面故事中提到,Bug敏感度高的测试人员,能在短时间内发现大量的Bug,从而在一定程度上提高软件的质量。从这个角度看,Bug敏感度与软件质量的关系是正相关的,如下图表示,即Bug敏感度越高,被揭露的Bug越多,对应模块或软件的质量相对越可靠。

  同理,Bug敏感度不高,必然就会造成一些Bug遗漏,提高了软件质量的风险系数,我们可用Y=-kX来表达这个意思,见下图。Bug敏感越差,遗漏的Bug越多,软件质量的风险就越大。

  但是软件质量的评价是一个复杂而多维度的,不仅仅与Bug敏感度有关系,还包括设计本身的约束、预防等先天因素。

  提高Bug敏感度的关键因素

  影响测试人员判断某问题或现象是否是Bug,还是其他问题,有很多原因,下表是笔者总结的一些关键因素,与大家一起分享。

序号

因素

影响分析

1

业务熟悉度

不清楚业务,会不能很好地理解特性的用途,应用场景,会导致正确的判断,风险分析;

2

测试专业技术:测试思维

除常规的测试思路外,逆向,相关影响或异常,多条件组合等特殊情况的专业思路能让迅速发现软件中潜伏的Bug

3

测试专业技术:测试工具掌握

有些测试对象需依赖特殊工具生成数据、监控、检查,作为一种测试手段、方法,能发现某类型的Bug,如数据库性能测试,内存泄漏的检查等

4

学习能力

学习测试同事经验,包括与需求、开发人员的交流,从交流中增加经验、知识的积累等。学习有主动与被动,主动学习的人,进步快。

 

5

对开发者的了解

对合作的某开发人员了解多,知道对方可能出错的地方,例如某开发人员是新员工,对业务不太熟悉,容易在模块接口处理上考虑不周,易犯错误,则可以有针对性测试这些方面。

6

系统繁杂度

了解系统的设计,清楚最繁杂的设计,最核心的设计,然后重点分析这些部分,找出测试的重难点

  说明:

  关于学习能力,有些同学可能理解存在误区,或者比较片面,认为学习就是捧着书本看书。常听一些同学说,正在看C+编程,Android开 发,网络通信相关书等,当然没错,这些都是在学习。但是否有更直接的体现学习能力的方法呢。曾经在一位同事的总结中读到:通过参与同项目外专业组的讨论, 大受启发,回来一试,发现了2个严重的系统接口方面的bug,及一个我们未曾考虑到的系统设计需求。这种通过与他人的交流获取的直接知识,并不一定能在书 本上看到的,但它也是一种学习。学习有直接学习,简接学习。如果说简接学习是夯实基础,那么像上述通过交流、实践的方式直接地学习的方法是取人之长,补已 之短的快速通道。

  除了上表中提到的因素,是否还有其他因素也会影响测试人员的Bug敏感度呢?欢迎大家补充,及发表意见。

posted @ 2012-12-04 10:37 顺其自然EVO 阅读(273) | 评论 (0)编辑 收藏

LINUX-SAMBA服务配置

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://chenbin.blog.51cto.com/945033/346188

SAMBA服务的配置。

SAMBA简介

NFS只能实现在linuxunix系统之间实现文件共享,而CIFS(公共因特网文件系统)只能实现windows系统之间的文件共享。那么linuxunix系统怎么和windows系统之间共享文件呢?这就要用到SAMBA服务器了,SAMBA服务器能真正实现在不同主机、不同系统之间的文件共享。

 

Samba核心有两守护进程:

smbd:监听139端口,实现主机之间的文件和打印机的共享。

nmbd:监听137138端口,实现主机之间可以利用NetBios名互相访问。

SAMBA安装

配置IP地址:

[root@rhel3 ~]# ifconfig eth0 192.168.100.30 netmask 255.255.255.0

安装软件:

[root@rhel3 ~]# rpm -ivh /misc/cd/Server/samba-common-3.0.33-3.7.el5.i386.rpm

提供samba的配置文件和语法检验工具,服务器和客户端都要安装。

[root@rhel3 ~]# rpm -ivh /misc/cd/Server/samba-client-3.0.33-3.7.el5.i386.rpm

客户端软件。

[root@rhel3 ~]# rpm -ivh /misc/cd/Server/perl-Convert-ASN1-0.20-1.1.noarch.rpm         //在安装samba服务器软件时要先安装此软件。

[root@rhel3 ~]# rpm -ivh /misc/cd/Server/perl-Convert-ASN1-0.20-1.1.noarch.rpm         //安装samba前要装上这个软件。

[root@rhel3 ~]# rpm -ivh /misc/cd/Server/samba-3.0.33-3.7.el5.i386.rpm

服务器端软件。

[root@rhel3 ~]# rpm -ivh /misc/cd/Server/xinetd-2.3.14-10.el5.i386.rpm

安装下面的网页配置软件时要先把xinetd软件先装上。

[root@rhel3 ~]# rpm -ivh /misc/cd/Server/samba-swat-3.0.33-3.7.el5.i386.rpm

sambaWEB配置。这个最后安装。

 

SAMBA服务配置文件详解。

[global]

 

# ----------------------- Network Related Options -------------------------

 

        workgroup = MYGROUP

设置工作组名称。

        server string = Samba Server Version %v

设置服务器描述。

;       netbios name = MYSERVER

设置NetBios名称。

;       interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24

后面可以跟接口或IP地址,如果服务器不想用默认的IP地址时或想用多个IP地址时设置 此项。

;       hosts allow = 127. 192.168.12. 192.168.13.

设置允许访问主机的IP地址。默认注释,表示允许所有主机访问。

# --------------------------- Logging Options -----------------------------

;       log file = /var/log/samba/%m.log

设置日志文件的存放位置,服务器会每个用户保存一个日志文件,%m表示使用用户访问的NetBios名来命令日志文件。

;       max log size = 50

指定日志文件的大小,单位(KB

# ----------------------- Standalone Server Options ------------------------

        security = share

设置Samba共享安全级别:

share: 共享级别,服务器不对客户机进行身份验证。

user: 用户级别,服务器对客户机进行身份验证。

server: 服务器级别,Samba服务器必须通过另一台服务器对客户机进行身份验证。如果设置为此值,需另加一行:password Server = IP才行。

domain: 域级别,Samba服务器要通过windows server的域控制器对客户机进行身份验证,同样,如果设置为此值,需另加一行:password Server = IP才行。

        passdb backend = tdbsam

指定Samba服务器对用户帐户和密码的管理方式。一般默认即可。

# ----------------------- Browser Control Options ----------------------------

;       local master = no

如果不想Samba服务器成为局域网内的主浏览服务器,此项选择no.

;       os level = 33

设置刻服务器在局域网内访问的优先级。

;       preferred master = yes

使Samba启动时选择一个本地浏览器,并给它获得选择较高的机会。

#----------------------------- Name Resolution -------------------------------

 

;       wins support = yes

是否支持WINS服务器,Samba可以成为WINS服务器,也可以成为WINS客户端,但不能两者兼得。

;       wins server = w.x.y.z

WINS服务器地址。

;       wins proxy = yes

表示一个非WINS用户通知Samba响应名称解析,本身不为客户端提供查询。

;       dns proxy = yes

同上。

# --------------------------- Printing Options -----------------------------

        load printers = yes

设置是否允许打印机共享,并加裁打印机。

        cups options = raw

指定打印机使用的方式。

;       printcap name = /etc/printcap

设置打印机配置文件的位置。

;       printcap name = lpstat

;       printing = cups

设置打印系统类型,一般默认。只有在打印系统不是标准系统时才指定。

 

#============================ Share Definitions ================

 

[homes]

        comment = Home Directories

描述信息。

        browseable = no

设置其他用户是否可以浏览此共享文件。

        writable = yes

设置此用户是否可写。

       valid users = %S

              设置可访问的用户和组。多个用户用逗号分开,指定组时要在组名前加@

              invalid users = 用户名/组名

设置不能访问的用户和组,用法同上。

 

Samba定义的变量:

 

%S 当前服务器名。

%P 当前服务器的根目录。

%u 当前服务器的用户名。

%g 当前用户所在的主工作组。

%U 当前对话的用户名。

%G 当前对话的用户我主工作组。

%H 当前服务器用户的home目录。

%v Samba服务器的版本号。

%h 运行Samba服务器的主机名。

%m 客户机的NetBios名。

%L 服务器的NetBios名。

%M 客户机的主机名。

%N NIS服务器名。

%p NIS服务器的Home目录。

%R 所采用的服务器等级。

%d 当前服务进程的ID

%a 客户机和结构。

%I   客户机的IP

%T 当前日期和时间。

SAMBA基于共享的简单配置。

编辑配置文件:

[root@rhel3 ~]# vi /etc/samba/smb.conf

# ----------------------- Standalone Server Options ------------------------

        security = share    //不需要用户名和密码的共享模式。

        passdb backend = tdbsam

 

下面是共享目录和权限的设置:(在最后添加)

        [share]

       comment = linux share

        path = /rhel3

       public = yes

        writable = yes

        printable = no

        write list = +staff

如果共享目录是复制例子的,别忘了把前面的;去掉哦!如果还不能访问那就是防火墙在捣乱了。

 

[root@rhel3 ~]# mkdir /rhel3

[root@rhel3 ~]# touch /rhel3/linux.txt

[root@rhel3 ~]# vi /rhel3/linux.txt

This is linux server!

查看一下文件夹的权限:

[root@rhel3 ~]# ll /

drwxr-xr-x   2 root root 4096 Jun 8 21:56 rhel3

因为在共享时设置的是可写的,而在这里除了root用户其他人是没有权限写入,所有还是不能写入,修改一下:

[root@rhel3 ~]# chmod 777 /rhel3

[root@rhel3 ~]# ll /

drwxrwxrwx   2 root root 4096 Jun 8 21:56 rhel3

权限已经修改完成。

[root@rhel3 ~]# service smb restart

现在来测试一下:

windows系统在运行里输入:

 

 

 

linux系统:

[root@rhel2 ~]# mount //192.168.100.30/share /mnt      //mount 后面跟主机名或IP地址,后面是共享名。最后跟挂载点。

Password:           //这里不需要输入密码。

[root@rhel2 ~]# ls /mnt

liunx.txt

 

使用smbclient

[root@rhel2 ~]# smbclient //192.168.100.30/share         //smbclient后面跟共享主机名或IP地址再加上共享名。

Password:

Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.0.33-3.7.el5]

Server not using user level security and no password supplied.

从这里也可以看到服务器是没有使用身份验证的。

smb: \> help

?              altname        archive        blocksize      cancel        

case_sensitive cd             chmod          chown          close         

del            dir            du             exit           get           

getfacl        hardlink       help           history        lcd           

link           lock           lowercase      ls             mask          

md             mget           mkdir          more           mput          

newer          open           posix          posix_open     posix_mkdir   

posix_rmdir    posix_unlink   print          prompt         put           

pwd            q              queue          quit           rd            

recurse        reget          rename         reput          rm            

rmdir          showacls       setmode        stat           symlink       

tar            tarmode        translate      unlock         volume        

vuid           wdel           logon          listconnect    showconnect   

!            

这里显示的是一些客户端使用的命令。如:

smb: \> dir

 .                                   D        0 Wed Jun 9 14:42:23 2010

 ..                                  D        0 Wed Jun 9 14:41:23 2010

 liunx.txt                                   22 Wed Jun 9 14:42:23 2010

 

                61880 blocks of size 65536. 25838 blocks available

 

因为有写的权限,所以写个文件试试:

smb: \> mkdir rhel2

smb: \> dir

 .                                   D        0 Wed Jun 9 15:43:18 2010

 ..                                  D        0 Wed Jun 9 14:41:23 2010

 liunx.txt                                   22 Wed Jun 9 14:42:23 2010

 rhel2                               D        0 Wed Jun 9 15:43:18 2010

 

                61880 blocks of size 65536. 25838 blocks available

 

没问题,可以写入。下载文件:

smb: \> get liunx.txt /share.txt              //get后面第一个参数是远程服务器的文件名,第二个参数是保存到本地的文件名。

getting file \liunx.txt of size 22 as /share.txt (0.2 kb/s) (average 0.2 kb/s)

smb: \> q            //退出

[root@rhel2 ~]# ls /

bin      dev   lib         misc opt   sbin       srv usr

boot     etc   lost+found mnt   proc selinux    sys var

chenbin home media       net   root share.txt tmp

 

[root@rhel2 ~]# cat /share.txt

This is linux server!

没问题,关于每个命令的使用这里就不一一演示,详细说明可以使用帮助。命令如下:

[root@rhel2 ~]# man smbclient

 

SAMBA基于用户的简单配置。

接着上面的做:

修改配置文件:

# ----------------------- Standalone Server Options ------------------------

        security = user

共享目录也就不改了。因为是基于用户的共享,所以这里需要建立用户。

 

[root@rhel3 ~]# useradd samba           //首先要建立本地用户。

[root@rhel3 ~]# passwd samba            //为本地用户创建密码。(如果只是添加Samba用户,这步可以省略。)

Changing password for user samba.

New UNIX password:

BAD PASSWORD: it is too short

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

[root@rhel3 ~]# smbpasswd -a samba        //创建Samba用户。创建的用户必须也存在于本地用户数据库中。

New SMB password:

Retype new SMB password:

Added user samba.

 

[root@rhel3 ~]# service smb restart

 

可以测试一下samba的配置文件。如下:

 

 

测试:

windows系统下:

因为连接过了,现在连接的话系统不提示输入用户名和密码了,清除一下:在命令提示符下操作:

D:\Users\chenbin>net use              //查看远程连接。

会记录新的网络连接。

 

 

状态       本地        远程                      网络

 

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

OK                     \\192.168.100.30\IPC$     Microsoft Windows Network

OK                     \\RHEL3\IPC$              Microsoft Windows Network

命令成功完成。

 

D:\Users\chenbin>net use \\192.168.100.30\IPC$ /delete

\\192.168.100.30\IPC$ 已经删除。

D:\Users\chenbin>net use \\RHEL3\IPC$ /delete

\\RHEL3\IPC$ 已经删除。

再连接:

 

打开后如下图:

 

 

出现输入用户名和密码对话框,输入后确定。

 

 

出现了共享文件夹。samba目录是一个用户目录,后面再说明。关于权限问题这里这不测试了。

windows下为了方便,可以使用网络映射,在本地映射一个网络磁盘,这样只要访问这个磁盘就可以访问共享文件了,也省去了每次输入地址,用户名和密码。如下:

 

 

接下来选择一个共享目录:

 

 

完成后,在资源管理器里会多出一个Z盘,双击这个磁盘就能访问共享文件了,很方便,如果不想用了,只要在这个磁盘上右击-属性-断开。

 

接下来在linux系统下测试:

列出共享目录:

 

 

连接:

 

关于用法就不演示了。

posted @ 2012-12-03 15:58 顺其自然EVO 阅读(1559) | 评论 (1)编辑 收藏

性能测试笔记系列之性能测试的组织

性能测试的进行,不同的公司不同的项目配置的人员不同,有的可能只有一个性能测试人员全权负责,有的可能配置的人员比较正规,也有可能是一些非性能测试人员完成性能测试任务,下面介绍下性能测试团队的一般人员构成(或者说标准人员构成):

  项目测试经理:主要负责整个测试项目,对项目的进度,其具体的职责包括确定测试目标,指定测试计划,监控和管理性能测试的进行以及对性能测试结果的评估等。

  测试设计人员:主要是设计测试方案和用例。

  测试开发人员:主要实现测试设计人员设计的方案和用例,负责脚本的维护及测试过程中性能指标的监控。

  测试执行人员:执行测试用例和脚本,监控测试过程中指标以及记录测试结果。

  测试分析人员:主要是对照测试目标分析测试数据和测试过程获取的性能指标,得出结论。

  支持人员:主要包括系统工程师,网络工程师和数据库工程师,为性能测试提高必要的协助。

   仔细观察上面的性能测试团队的构成会发现不同人员的划分是性能测试流程决定的,不同的性能测试阶段需要不同的人员提高或者完成不同的人员,下面来看看性 能测试过程包括哪些阶段(断念老师提出的PTGM:性能测试过程通用模型,实际性能测试中都会涉及到该模型的各个阶段,具有通用性,但是对该模型不同阶段 的顺序持不同看法,在各阶段已注明):

  1、测试前期准备:主要包括以下活动

  1> 系统基础功能验证:确保被测对象具有一定的稳定性,在功能上基本满足需求。

  2> 组建性能测试团队:这个没什么好说的,具体可参照一般性能测试团队的构成。

  3> 测试工具需求确认:主要是确定测试工具应该具有的功能特性(个人感觉这个可以放在后面测试工具引入阶段)

  4> 可选过程:性能预备测试,对被测系统进行探索式测试以初步了解性能表现

  2、测试工具引入阶段:主要包括以下活动

  1> 选择工具:根据阶段1对测试工具需求的确认选择合适的工具

  2> 工具应用的技能培训

  3> 确定工具的应用过程:达成对测试工具应用范围的一直认可和测试工具应用局限的一直确认,确定哪些是工具可以实现的哪些需要相关人员的参与。

  3、测试计划阶段(个人认为本阶段应放在首先考虑的位置,即阶段1,以确定和计划整个性能测试过程):主要包括

  1> 性能测试领域分析:确定性能测试目标和性能测试方法

  2> 用户活动剖析和业务建模:寻找用户的关键性能关注点,用户剖析方法包括系统日志分析和用户调查分析。

  3> 确定性能测试目标

  4> 指定测试时间计划

  4、测试设计与开发阶段:主要包括

  1> 测试环境设计

  2> 测试场景设计:设计测试活动需要使用的场景

  3> 测试用例设计

 5、测试执行和管理:主要包括

  1> 根据测试环境设计建立测试环境

  2> 部署测试脚本和测试场景

  3> 执行测试和记录结果

  6、测试分析(增加测试评估)

  以上主要是一般性能测试活动各阶段,上面说不同意这个模型的时间安排,但是现在想想,每个阶段的目的,这样划分也是有一定道理的,需要记住的就 是要明确实际性能测试各个阶段的目的,如可以把阶段3—测试计划阶段放在首先考虑的位置,这是就要考虑测试工具的技能培训,测试团队的组建以及任务认领等 都需要在这个阶段考虑,当然也可以合并上面某几个阶段,关键是实际项目中如何方面自己的性能测试的展开。

  好了,以上介绍了一般性能测试活动以及人员构成,下面说说本人实际参加的性能测试活动各阶段以及本组性能测试人员构成。

  性能测试人员构成:功能测试时负责性能测试模块的相关人员。举个例子:比如我功能测试负责模块是报警服务器,现在要进行报警服务器性能测试,那 么我就是负责报警服务器的性能测试,也就是说没有专门的性能测试人员,所有的性能测试执行人员都是功能测试人员(我想大多数公司应该和我们公司一样,这有 多种原因构成的,可能是客户对性能要求不高,一般的功能测试人员就能完成简单的性能测试,我们公司属于这种;也可能是公司不愿意花这个钱等等)。当然这个 过程中有测试执行负责人做性能过程把控和监控以及主要问题的反馈。

  性能测试流程:

  1、测试组长制定性能测试目标和测试用例以及人员时间安排(这是和开发人员讨论确定过的),如报警服务器每秒处理1000条报警信息(本公司的性能测试多是属于能力验证的)

  2、各参与性能测试人员准备阶段:测试工具选择等(公司内部有专门的测试工具开发人员,可以提需求让他们开发),测试资源分配(可能大家对自己负责的模块都要进行性能测试而公司提供的测试资源有限,需要大家讨论协商资源分配),测试环境部署等

  3、执行性能测试和收集测试数据

  4、分析性能测试数据(各模块负责人分析)

  5、性能测试报告整理。

  以上主要是我们公司性能测试过程,对比标准的性能测试团队构成以及各阶段(性能测试各阶段的安排不同的项目安排不同这个没什么好说的,关键还是 要明确各阶段要进行的活动以及目的),根据个人实际遇到的问题主要还是性能测试人员构成这块遇到的问题较大,标准的性能测试人员构成:项目测试经理和测试 设计人员可以由测试组长或者测试执行负责人兼任,测试开发人员可以由工具开发小组成员完成,测试执行人员可以由性能测试各成员构成,但是测试分析和支持人 员在我们测试活动中就缺少了,的确也吃过这方面的亏,如性能测试跑出问题,开发人员说是操作系统问题或者网络问题或者病毒问题但有拿不出确凿的理由,测试 人员说是软件问题,两边相互推来推去说来说去,也说不个所以然来,性能测试结果的精准度和真实性就值得怀疑,要是有网络工程师和系统工程师等协助可能就能 够准确确定问题的根结。也跟老大反映过这个问题,但一直没有处理好和协调好,这个还是要自己在实际测试中多学习点网络和操作系统的知识以便更好的确定问 题,抱怨没用,靠别人定位问题和协助有时就是扯淡或者多少有些无奈。淡定,呵呵,不能抱怨,要改变环境和别人先改变自己,呵呵呵,扯远了。

  把一般的性能测试模型和测试团队构成写出来是为了提醒我们性能测试要进行哪些阶段,如何入手,指导我们进行性能测试,并对比自己公司内的性能测试过程改进性能测试流程,完善性能测试方法和阶段,提高性能测试数据的可靠性和完整性。

版权声明:本文出自 没翅膀的飞鱼 的51Testing软件测试博客:http://www.51testing.com/?363907

原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。

posted @ 2012-12-03 09:26 顺其自然EVO 阅读(233) | 评论 (0)编辑 收藏

仅列出标题
共394页: First 上一页 279 280 281 282 283 284 285 286 287 下一页 Last 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜