Easy struts 或 myeclipse自带struts开发工具

xicheng_my_love 2006-03-23 09:36:34
我知道的开发struts有这两种工具,昨天去myeclipse下了一下MyEclipse_Struts_Quickstart.pdf这个文档,了解了一下如何开发struts,感觉真的很强。很多东西用向导或拖放都完成了。我想知道Easy struts和myeclipse自带的工具在方便开发上有很大区别吗?
1.两个工具都很烂,你应该用另外某个。
2.两个工具差不多,看个人喜好。
3.这两个工具以及其他工具在方便开发上有一定的区别,但是它们最终只是一个工具,可能开始的时候能感觉到一些区别,但最后最主要的东西还是你对struts或者说对Java与业务的理解,也就是到比较熟悉之后,工具在你的整个开发过程中的重要程度会降到很低。
请选择,谢谢!
...全文
125 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
imA 2006-03-24
开始的时候还是自己手动配置,这样印象深刻、许多东西理解的也透彻。

等到对struts熟悉了,具体用哪种看个人喜好。

反正我是不用,到现在我还用手,有的时候把struts自带的例子中的文件拷贝过来,然后改动一下,比用那些工具也不慢。
  • 打赏
  • 举报
回复
LuJianjun5 2006-03-24
3 ~~
  • 打赏
  • 举报
回复
xicheng_my_love 2006-03-23
自己顶!
  • 打赏
  • 举报
回复
相关推荐
一 首先说说ARM的发展 可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。 广义的嵌入式无非几种:传统的什么51、AVR、PIC称做嵌入式微控制器;ARM是嵌入式微处理器;DSP;FPGA。 客观的讲,工作需求量上DSP的需求比ARM要多,而ARM和FPGA差不多。 DSP因为数字处理与通信领域的空前发展而火暴,小到MP3 射象头,大到我们军品里的控制器,应用面很广。 FPGA的兄弟一般做ANSIC(特殊芯片设计,好象是这么翻译的)。 而ARM单纯说来并不比一个单片机强多少,但是它的独特就在于不断下降的价格和提升的性能。这完全依靠于ARM公司的战略,厉害!!很佩服他们的战略眼光!! 值得注意的是:在找工作中,企业(著名的,小的不算)对单纯的ARM硬件开发工程师并不比单片机重视,很少有大企业的职位里写“从事过ARM开发优先”。 写的多的是什么?“嵌入式LINUX” 到这相信大家看出来了吧,需要的是硬件中的软件。 二 ARM是硬件还是软件 很难说,ARM是硬件,LINUX是软件。 ARM的硬件多半已经模块化了,像我这样把板子改成这样的就算动的多的了,这同样是ARM公司的战略,再次佩服。 实际中的LINUX的开发工作更多,更耗时。从这方面说ARM应该算是软件了。 在找工作中更是这样,举个例子,联想里和ARM最接近的是“BIOS工程师”是软件,MOTO里接近的是嵌入式LINUX工程师是软件。而其他很多公司把嵌入式产品开发归为硬件。 所以,不要讨论这个,好好玩转自己的板子才是关键。实在不爽你就把自己叫“嵌入式开发工程师” 三 要不要买开发板 买哪家 我的答案是“在你个人的学习方*”,但是如果看家是需要看这骗笔记的水平,个人推荐还是买现成的。 1 买 买板子可以把注意力集中在软件开发上,软件开发(尤其是驱动)可以不必担心自己硬件上的问题,我就是以便调试一边写驱动和程序,每次写驱动前就要先确认硬件没问题。 另外,买板子更省钱和时间,我自己做的板子,原理图PCB花了2周以上!制版又15天,回来以后焊接44B0 160个脚!那叫一个麻烦~~花了多少钱呢?2层板,制版费就300块!当然 我把接口都外引了,还做了个20X18的LCD背板,板子比较大。 总体下来 元件+LCD屏+PCB=11XX块!够2410的了。 再有就是买的资料相对来说比较全,但是不要指望有技术支持!都是骗人的,卖你之后就不会理你。 2 做 自己做可以更了解底层硬件,可以按照自己的要求加东西,比如我就加了GPS模块、 GPRS模块 、SD卡模块,扩了个IIC的35个键子的键盘、把LCD接口按照买的LCD改装了,可以用FPC线直接连接。做的很爽的。玩一把吗。 当然,你可以有策略的做,比如像我一样,把RAM和ROM,网络都保持和某现成的板子一样,这样他们的资料你就可以拿过来直接用,给自己留个退路。其他的如SD了 什么的自己做。都达到了~~就是费钱,费时间。 再有就是给做的朋友几点建议:尽量拿到现成的板子,尽量多搜集其他板子的全套资料,一定要拿到一张没问题的原理图。 网上流传的原理图多数是龚俊03年画的,再这里对龚俊表达一下我的敬意!!牛人! 但是那个图有个小BUG,我指的是03版的,后来的没这问题了。8019那地址线和地址有问题。还有人仿照他的PDF图画的SCH,更是漏洞百出!谴责!顺便谴责把龚俊板子偷卖的人。 3 买哪家 个人感觉分3类吧 1)首先是ZLG的,资料非常的全,感觉他是真正想教你怎么开发ARM,而不是像有的公司自己技术都没做好就做个板子出来卖钱。但是最大的不利就是价格太贵!而且主要是PHILIP的,货源比较麻烦~~可能有人说21XX系列的不贵啊,那是总线不外扩的,只能跑UCOS,不能跑UCLINUX。但是说是话,21XX系列才是ARM7的价格性能结合点。ARM7最适合做工业控制,ARM普及,销量都是怎么来的?都是ARM7来的,而44B0是典型的商业片子。但是,这里如果你看中的是为工作做准备,还是选能跑UCLINUX的吧。 但是仍然作为第一个推荐,因为菜鸟时期,合适的资料太重要了!!在这里被ZLG的务实*感动!你看人家那代码写的。 2)感觉立宇泰的44B0不错 硬件没别的,就是资料比较全的说,不像有些家,原理图直接拿人家的,还错的~~ 3)找个最便宜的 好象最便宜的有卖350的吧?也是没别的,就是即省了钱 还省时间搜集资料,至于资料全不全,别计较了~~硬件肯定好使就行吧。 四 要不要有51 AVR等单片机基础 有更好,但没有也无所谓。 两个月以前,我只是看别人做,耳濡目染~~,本科学过单片机,从来没做过。我们这的技术主干做AVR和51,我就跟他们调过C语言程序。你看出来了?我是个不折不扣的菜鸟吧? 但是做这个之前我特意找了ZLG
由《Ext JS源码分析与开发实例宝典》作者:彭仁夔团队开发而成 90%以上代码可以生成验证、生成三层代码、生成完善的权限系统、生成数据库等功能 功能之强大用了就知道! 两年前,我负责指导Java方向实训,在最后评审准备过程,.Net组负责人要求Java和.Net的归结一起统一评审,Java指导老师们的第一反应是Java和.Net开始怎么能相提并论? 为什么不能并论?是因为Java开发阳春白雪?在我们的潜意识中,Java开发就是让程序员(学生)一行一行地编写代码,编写HTML、CSS等,而.Net开发只要把控件拖到页面上即可,Java开发的效率一定比.Net低很多很多。 那么能不能提高Java的开发效率呢?作者经过分析并总结思考,发现业务系统有一定的共性所有操作,即增删改查,既然有共性,那么能不能抽象出来? 可以思考一下,通过继承、组件化等重用设计方式是可以抽象代码的共性,但是不同表(实体)增删改查的内容是不同的,通过泛型也很难抽象出来的。如对于A表的查询和对于B表的查询都需要使用到SQL语句,怎么去剥离出来? 此时,我们就需要采用另外一种方式,把它们抽象出来更高层级的模板,然后把不同数据传入该模板的占位符,这样就变成不同的代码,这种方式就是代码生成技术。 在软件的设计过程中,代码生成及重用设计仿若陌路人,互相排斥。重用设计中很多的共性是不能抽象出来的,而一味追求生成,造成大量的雷同代码,是重用设计人员真正开发人员最不能容忍的事件。 如果把它们两个结合起来,那就是完全不同的效果,首先通过重用设计抽象其能抽象的代码,其不能抽象的共性通过生成技术生成,开发效率就会成倍增加。以前我们都是在Xy轴上分别进行,其最大的点也不过是线,如果两者结合起来,其变成一个平面,把我们的重用从点提高到面。如下图所示: 面。如下图所示, Y重用 现在的软件开发不再仅仅是编写代码,重用等,而是需求调研、架构设计、数据库、编码开发、测试部署等过程的有机组合,组合的好与坏,其结果相差万里,这就是著名的米格-25效应。 在开发过程怎么去把这些最大效应化呢?回想一下我们的开发流程: 需求开发,形成文档 采用powerDesigner等进行实体及实体关系的设计 通过Pdm创建数据库 在开发工具中创建搭建项目 通过相关的工具(hibernate tools,myeclipse)生成实体 设计及编写Dao 设计及编写Service 设计及编写Action及相关页面 这样的线性流程有着极大的问题,首先架构师数据库专家不是圣人,设计数据库,Dao,Service接口之后,就不需要修改,在编码过程中,会进行大量的修改,特别是那种那只懂数据库的专家在设计之后,开发人员怨声载道。另外设计的dao,service接口及实现很多都用不着,用得着的根本就没有设计。因为需要的dao,service很多都是由页面根据取数操作的不同而进行不同的编写。 开发过程的修改,就会带来原前置流程步骤的修改,所以软件开发完成之后,不会有很多公司其PDM与数据库、实体是一一对应的。而有一些是必须要修改,如在实体中修改属性,一定要到数据库中修改,到dao,service,action,page一一进行修改,如果修改的是外键属性,修改的代码更为复杂。开发人员最痛苦的事情就无穷无尽的修改,领导简单的一句话:不就修改一个属性吗?你可能就要改一个下午。 能不能有这样的方法呢?修改一处其它处跟着改,这时就需要把原来的线性流程乾变换,改成为无前置的试,即卫星城的方式,中心城就是模型,可以称为Domain、域、实体,在实体的基础是加上一些设计,如下图所示: 现在只要中间模型发生变化,其变化会通过其背后的关系推向卫星城,让其发生相对应的变化,就像蝴蝶效应一样。 此时,我们可以站在一个更高的层面去思考开发,开发不仅仅是代码,开发不仅仅是处理代码之间关系,还需要处理与数据存储的关系,与测试部署关系等。 这些关系我们需不需要去体现出来,肯定需要。我们可以把这些关系看作是软件中区别于业务逻辑属性的特殊属性,这种属性主要包括: 与数据存储之间的关系 代码结构组织的方面(如采用三层) 与设计及设计文档的关系 与开发模型(如瀑布)的关系 与需求及需求变更的关系 与测试部署之间的关系 除了这些特殊关系,代码中还有实体之间的关系,业务关系等。 我们可以发现软件不单纯是一个对象,而且是一组关系。它们相互关联,相互牵制。 续而推之,我们编写的类也是关系,是处理一类事物的抽象关系。泛型是处理类的抽象关系。所有东西都是关系体。 那么能不能在现有的面向对象的理论上推进一步呢?世界不是一个个单独的对象,而是不同的对象相互发生关系的有机结构体(可以称为关系体),只有这样,世界才多姿多彩。就算是一个个对象,它也不是静止的,它的内部也是由不同分子原子发生作用的结果,可以讲对象也是一个关系体。 软件是用来对世界进行描述的一种方式,最初我们采用过程的编程,后来与世界的描述不相符,所以就出现了面向对象,而现在面向对象并不能很好地解析如抽象类,Service类等。要解释这些东西,最好的方式是通过关系来表达。也就是面向对象的编程方式可以更进一步地改进为面向关系编程方式。 面向关系编程需要首先需要找到软件模型与需求、架构,数据,测试,部署之间的变化关系。这些关系有业务层面的,也有开发层面的。这种关系可以抽离出来,形成模板。 接下来把业务模型+关系模板通过工具生产出来,就成为一个有血有肉的软件。Mgicode(码奇)生成器就从这里出发,帮我们抽象软件背后的关系,提高开发效率。 所以通过Mgicode生成器,你可以获得如下好处: 根据设计(pdm,数据库等)快速生成可运行的项目。 修改实体之后,会帮助你找到所有需要修改的东西,并且给出最佳的修改方案。 统一代码编程风格(如同一项目中选择几种不同日历控制) 把自己的项目模板化(关系化),方便之后使用 把模板化的项目放到Mgicode市场获得一些外快。
Toad 使用快速入门 目录 一.Toad功能综述 二.系统需求 三.安装指南 四.快速入门 1. Schema browser的用法简介 2. SQL Editor的使用介绍 3. Procedure Editor的用法介绍 4. 如何进行PLSQL的debug 5. 如何使用SQLab Xpert优化SQL 6. 如何使用SQL Modeler来编写查询 7. 如何使用Toad的DBA方面的功能 一、 Toad功能综述 在Oracle应用程序的开发过程中,访问数据库对象和编写SQL程序是一件乏味且耗费时间的工作,对数据库进行日常管理也是需要很多SQL脚本才能完成的。Quest Software为此提供了高效的Oracle应用开发工具-Toad(Tools of Oracle Application Developers)。在Toad的新版本中,还加入了DBA模块,可以帮助DBA完成许多日常管理工作。它最大的特点就是简单易用,访问速度快。使用Toad,我们可以通过一个图形化的用户界面快速访问数据库,完成复杂的SQL和PL/SQL代码编辑和测试工作。Toad由Oracle开发专家专门为开发人员而设计,是一个功能强大、结构紧凑的专业化PL/SQL开发环境。 Toad 主要具有如下特点: 模式浏览: 模式浏览功能可以让我们快速访问数据字典,浏览数据库中的表、索引、存储过程。Toad 提供对数据库的快速访问,使用极为方便,用户界面简洁,结构安排合理。当我们点击一个单独的数据库对象,Toad立即显示此对象的详细信息。例如,当我们点一个数据库的表,所有和此表相关的索引、约束、存储过程、SQL语句以及和其他表的相互引用关系都在同一界面显示出来。为了简化操作,用户可以在浏览窗口操作数据库对象。 SQL 编辑器: SQL 编辑器的主要功能是编辑、运行和调整SQL语句。TOAD 的高级编辑窗口包括众多的特性来提高开发人员编写SQL语句的产品化程度。例如,简单地生成代码模板,在编写SQL前自动发现包的内容和列的名字等等。 SQL编辑器包括一个编辑窗口和运行结果窗口,允许开发人员在编辑的过程中测试运行结果。SQL编辑器中不仅包括标准的编辑命令,也包括一些增强的功能,如快速查询表中的字段、将SQL语句的内容格式化等等。这个窗口可以处理大到4GB 的内容,对大的开发项目来说非常有用。便捷的书签可以让开发人员非常容易地找到相关位置。在运行结果窗口可提供用户定义的配置功能,支持LONG 和LONG RAW列,可以将数据卸出到磁盘、打印数据、编辑数据等等。 存储过程编辑器: 存储过程编辑器的主要功能是编辑、编译、测试、调试存储过程和触发器。TOAD提供语法标识、错误标识和其他很多易于使用的功能,如在弹出窗口显示表名、列名和Oracle函数。和其他的 PL/SQL 编辑工具不同,TOAD 允许在一个文件中操作多个数据库对象,可以编译一个对象、编译多个对象、编译到当前光标、从光标开始编译。在运行出现错误时,存储过程停止到有问题的语句。用户可以使用快捷方式模板来快速编写PL/SQL,也可以根据需要生成自己的模板。使用Toad可以非常方便地进行编辑工作,可如设置书签、取消注释、格式化SQL语句等等。 PL/SQL Debugger选项: Toad 提供简单易用的PL/SQL 调试功能,可以节省开发人员在大型项目中用于开发和测试的宝贵时间,提高应用开发的质量。在存储过程开发的过程中,Toad可以逐行编辑、调试和运行代码。运行时可以根据需要输入参数,观察相关参数的变化来检查存储过程的正确性。在调式过程中,Toad 可以通过窗口显示所有的断点、参数, 调用堆栈和输出参数。使用Toad,非常容易检测到存储过程的错误,开发人员可以一步一步运行PL/SQL语句来识别问题。调试会话可以和其他程序会话同时进行。 SQLab Xpert Option: 帮助开发人员优化SQL,为他们提供各种优化模式下SQL执行计划,并且能够给出优化的建议,能够比较各种模式下实际的SQL运行结果,帮助开发人员真正高速地开发高效地代码。 Toad还可以外挂一些别的产品,比如PL/Formatter, RevealNet Knowledge Base , SQL Impact等,这些都能够和Toad紧密集成,共同提供了一个完美的集成开发环境。新版本还新增加了DBA模块,更加拓广了Toad这个产品的适用范围。 二、系统要求: 客户端:  Windows 95 / 98 / NT/2000中英文均可 完整安装的SQL*Net 2.0者Net8  磁盘:一般安装需要20M左右的空间,根据所选择模块的不同和安装方式的不同,最少也要5M的磁盘空间(从网络服务器读取)  内存:Windows 9x/Me:16M 内存;Windows NT/2000: Min 32M]  Tuning模块需要额外的25M空间 服务器端: Oracle 7.3 者更高,在任何硬件平台上。  需要一个DBA用户帐号 三.安装: 1. 三种安装方式的选择: a) TOAD and Personal Configuration Files to PC 默认安装选择,完成一个完整的Client端的安装,把所有需要的文件拷贝到本地Toad目录。 绝大多数用户应该选择使用这个安装方式。 b) Personal Config Files to PC, read TOAD from Network Server 从网络服务器读取Toad程序,在本地计算机安装一些自定义的文件,并且创建到服务器文件的快捷方式,一般不推荐使用这个方式,而且要求网络服务器已经配置。 c) TOAD to Network Server 把Toad安装到网络服务器上,以便这样别的用户能够进行Personal Config Files to PC, read TOAD from Network Server这种方式的安装。 2. 根据需要使用到的特性,需要运行一些脚本(都在Toad\temps目录下)  如果需要用Toad来查看执行计划,必须运行脚本PrepToad.sql者notoad.sql 如果希望专门建立一个Toad 用户来存放Toad需要使用的对象的话,就运行preptoad.sql。  如果希望在当前连接用户模式下建立toad需要使用的对象的话,就运行notoad.sql。  注意,如果是选择了专门建立toad这个用户的话,需要先修改一下脚本,指定用户的默认表空间和临时表空间。 需要使用Oracle8i 的Profile analyzer,必须运行ToadProfiler.sql  需要加强Toad的安全性,必须运行ToadSecurity.sql 四、Toad使用快速入门 1. Schema Browser: Schema browser是Toad的极为有特色的模块。在schema browser的帮助下,可以方便的浏览数据库内部的各类数据库对象,比如表,索引,序列,存储过程等,而且可以方便的倒出DDL语句和进行各种修改,重建工作。定位到某一类对象上,这列对象允许的操作都会自动列出来。 特色: 支持Oracle数据库里面所有对象的新建、查看、修改,集成了几乎对所有数据库对象的管理所需要的功能。  按照 模式->对象类别 ->对象->对象可操作属性 -> 对象本身的详细信息和对象相关的信息 来组织,非常有条理,容易定位对象,也能够看到所有你需要的对象的相关信息。 对于表: i. 完备的建表向导,不用输入冗长的语法,更加全面地替你考虑。 ii. 可以修改表的各种逻辑和物理属性,修改列的属性,增加列,删除列(在Oracle8i里面),修改表的物理存储属性,Truncate,Drop等。 iii. 可以生成建表的完整的DDl语句,包括存储信息,权限信息,约束,索引和触发器等,而这些手工很难做到。 iv. 可以方便的对表进行分析,查看表地所有信息,可以有条件的倒出表里面的数据,并且保存为sql语句。 v. 可以方便的对表进行重组,可以完成exp/imp作不到的事情,而且更少地人工参与,更加安全。 对于视图,存储过程: i. 可以保存建立视图、存储过程的语句为文本, ii. 重新编译失效的视图,存储过程,修改视图的定义语句等。方便的查看存储过程的代码,相互依赖关系,权限信息等保存为文本等。  回滚段, i. 简洁明了的online,offline状态,方便地online/offline操作 ii. 详细的回滚段物理信息和当前状态。 iii. 可以方便的修改物理存储属性 表空间: i. Tablespace Map;直观的显示数据物理的在表空间上的分布 ii. 直观的查看各个表空间的利用率、剩余空间、破碎情况等信息 iii. 可以进行各种alter操作:online, offline, 增加数据文件,改变数据文件大小,改变物理存储属性等 对其他数据库对象也有完备的操作支持。 2. SQL Editor: a) 激活SQL Editor的三种方式: i. 连接到数据库之后,Toad自动打开SQL Editor这个窗口。 ii. 点击总工具栏上最左边的那个按钮 iii. 从菜单栏:Database -> SQL Editor b) 特点:  允许同时打开多个编辑窗口,同时编辑多个SQL语句 支持同时连接到多个数据库,同时对多个数据库进行操作  允许编辑SQL,PLSQL,JAVA,HTML和文本 使用书签功能,可以在大量SQL语句里,快速定位某个语句所在位置  SQL Editor本身具有强大的编辑功能,非常方便编辑SQL语句。  强大的快捷键支持和工具栏快速按钮的支持,更加高效编写(很多快捷键可以自己定义,在View ->options ->SQL Editor里面) 能够根据前面的条件,智能推测需要输入的代码,可以做到某种程度的代码智能填充  把鼠标定位到表/视图/存储过程名称之上,按F4,可以打开对象描述窗口,方便的查看表和视图的定义,存储过程的源代码,  非常容易对SQL语句的分析其执行计划:单击工具栏上的 按钮就可以看到Explain Plan的结果  支持部分SQL*Plus命令,可以方便的执行大量的为SQL*Plus编写的数据库脚本 可以通过SQLab xpert来对当前SQL语句进行全面的分析,给出各种合理的调优意见,只需要单击工具栏上的Tuning按钮:  可以方便的保存,打开和运行SQL脚本 支持对查询结果进行修改,  可以把查询结果以多种格式保存起来,可以保存为HTML,纯文本,XLS等多种格式 很容易的得到SQL函数的列表和用法描述(Show SQL help Window 按钮) 可以查看SQL语句的执行情况:通过下方的AutoTrace窗口 ,看到SQL语句的实际执行结果和执行效率。 支持历史SQL(F8) :可以方便的查询以前执行过的SQL,不用反复重新输入。  可以执行匿名块,存储过程,从下方的窗口看到DBMS_OUTPUT的结果,如: 3. Stored Procedure Editor a) 打开存储过程编写器的几个途径: 单击总菜单栏上的第三个按钮:   点击Database - > Procedure Editor , 可以通过Schema browser来调用 b) 一些特点和优点: 1. 强大的自定义设置:从保留字的显示方式,到自动替换,到各种快捷键的定义等等,用得越熟越顺手。 2. 3. 自动用不同颜色显示SQL和PL/SQL关键字,语法清晰明了,可根据自己的习惯来具体定制各类关键字的具体显示方式。可以自定义存储过程得模板,在新建存储过程的时候,自动生成程序的框架可以方便的调用Schema Browser,把鼠标定位于某个对象上,F4,Schema Browser打开该对象的详细描述,帮助顺利快速开发程序。支持代码自动更正,如输入ndf,自动替换成NO_DATA_FOUND,输入the自动替换成the,类似的自动替换还可以自己修改和添加。 7. 方便的左边行号显示,单击左边行号就可以实现调试断点的增加/删除 8. 对各种快捷键的支持,不但包括常见的编辑操作,还可以有自己定义的PLSQL块的支持(自己定义快捷方式)。如可以定义CTRL+SHIFT+D:弹出所有PLSQL Block的类型,可以自己选择。 9. 可以在一个集成开发环境里面,一边编码,一边调试,不用多处切换 10. 方便的同时打开多个存储过程,通过页面快速切换 11. 快速编译存储过程,快速定位错误所在,自己选择是否同时编译依赖的存储过程 12. 内置对PL/Formatter,可以用PL/Formatter对存储过程进行格式化,并且可以提供存储过程的概要分析和修改建议 PL/Formatter可以对现有的存储过程进行高速的格式化,使所有的存储过程都符合同样的编写标准,这样既有利于提高程序的可读性,避免不同人写的模块的风格上的很差异。 PL/Formatter 还有助于提高程序的模块化,增强程序的结构清晰度,增强SQL的共用性。 PL/Formatter 还可以帮助完成PL/SQL和Oracle版本之间的管理。 13. 内置RevealNet Knowledge Base,单击鼠标右键就可以打开,快速得到技术上的支持,解决技术难题 PL/SQL: 包含整个开发过程中可能遇到问题的答案 Code Library:大量的严谨的PL/SQL代码例子和现成过程,完全源代码提供 各种错误处理模块可供参考,各类字符日期函数 包含1400多个主题 Admin: 解答DBA日常工作中80%的常见问题,覆盖2400多个主题 从网络到性能优化,从备份恢复到Error message,一应俱全 例子:遇到失效的存储过程怎么办? 4. 如何对存储过程进行Debug?  需要Toad单独的Debug Option(Standard Version 没有这个选项)  要用Toad对存储过程进行debug,必须安装Oracle的系统包:dbms_debug,而且必须安装Oracle Probe API v2.0 者更高的版本。 集成在Stored Precedure Editor里面,可以一边编写一边调试,大大提高开发效率  打开Procedure Editor后,Debug菜单激活,可以开始进行Debug工作。  允许对存储过程进行逐行调试、断点调试,也支持对触发器进行调试。 可以有断点支持,支持Watch变量,允许运行时改变变量的值  允许对多层调用的Debug支持 调试步骤具体举例: 1. 点击菜单栏的第三个按钮: ,打开Procedure Editor 2. 点击Procedure Editor的菜单栏的 按钮,调出需要调试的存储过程 3. 单击工具栏上的按钮 ,输入需要传入的参数,如果不需要传入参数,可以直接单击工具栏上的按钮: ,直接开始调试,如下图输入传入参数: 4. 单击菜单栏的按钮: ,可以单步跟踪,也可以定义一个断点,直接运行到断点在单步执行,在存储过程运行的过程中,当前语句会高亮度显示,并且把鼠标指针定位到变量上,Toad自动显示该变量的当前值。 5. 可以随时中止程序的执行,只要点Debug ->Halt Execution,者菜单栏上的按钮 ,就可以中止程序的执行 6. 当碰到一个存储过程调用另外一个存储过程的时候,可以选择跳过(Step Over) ,这样就直接运行那个被调用的存储过程,返回调用结果,继续这个存储过程的调试,也可以选择Trace Into ,这样就打开被调用的存储过程,进一步深入调试那个被调用的子存储过程。如果需要保持Debug信息,在编译的时候应该选择Compile Dependencies with Debug Information,就是Procedure Editor工具栏最右边的那个按钮 。 7. 支持对变量实时追踪:使用Watch: 可以在运行前,者运行过程中对某个变量进行实时跟踪:Add Watch,把鼠标定位到该变量上,然后点击Debug ->Add Watch At Cursor,该变量就会出现在Debug状态窗口上,而且实时反应该变量的当前值。如上图中的变量v_empname。可以运行时刻修改 8. 断点支持: 单击存储过程需要加断点的地方的行号,该行颜色变红,输入参数,单击执行按钮 ,可以直接运行到断点处,可以不必逐行追踪,更加高效率的进行调试。 Debug Option还支持条件断点,只有当满足条件的时候才会在那个地方停止,否则就好像不存在这个断点一样继续运行。  注意DBMS_OUTPUT.PUT_LINE的结果只有当程序执行完成以后才会出现,在程序执行过程中是没有结果的。 4. 如何用SQLab Xpert对存储过程进行调优? 我们知道,Oralce数据库的优化,最主要的步骤就在于SQL的优化。而在没有专门的工具(如Toad)的帮助下,进行SQL优化是一件非常困难和乏味的事情,并且需要对Oracle的深入理解和高超的Oracle调优技巧。使用Toad的SQLab Xpert Tuning模块,可以使我们普通开发人员也能够非常快速,精确的对SQL进行专家级的分析 在SQL Editor和Procedure Editor里面,选中需要调试的SQL语句(SQLab Xpert只能调试Select,Insert, Update,Delete语句),复制到SQL Editor里面,然后点击工具栏上的调优按钮 ,Toad会自动打开SQLab xpert 窗口,捕获当前的SQL语句,并且把它转化为符合explain plan格式的语句。 第一次打开Xpert的时候,Toad会提示你,需要安装一些Server端的表、视图和包等对象,可以把表存储到某个指定的表空间(如Tools)里面。可以简单的按照提示一步一步做就可以了。如果系统设定不允许Job的话(Job_queue_process=0),Toad提示有些部件不会现在安装,可以忽略。安装完成以后,可以选择让某些非DBA用户也可以使用Toad的SQLab Xpert调优功能。 安装完成以后,Toad会提示你一些关于优化目标方面的问题,你可以选择每次优化都可以重新设定,者一次设定,以后一直使用这个设定。当然如果需要,还是可以更改的,在SQLab Option xpert的窗口的Administration和Preference下面重新设定。 例子: 下面这个SQL语句涉及到多表之间的关联,有一定的复杂性,我们可以借助Toad的SQLab Xpert Option来帮助分析: select a.name. b.name, c.emp_name from dep a, manager b,emp c where a.dep_no=c.DEP_NO and b.manag_id=c.manag_id and c.emp_no=3 我们把这个SQL复制到SQL Editor里面,单击上面的调优按钮,Toad打开SQLab Xpert Option窗口。 如下图: 从上面的图中我们可以方面的看到:在各种优化模式下,该SQL语句的执行计划分别是什么样的,Toad给出了每一种执行计划的具体每一个步骤,每个步骤的成本,该表涉及的相关的数据等,如果SQL存取的表还没有经过分析,Toad会以红色警告显示,并且很方便的帮助你对该表进行分析,收集统计数据,重建索引等,以有助于优化器作出最好的选择。可以把当前的分析结果保存到它的资料库里边,以备以后再次调用之需。 我们还可以求助与SQLab 的自动优化功能:点击Original SQL下面的auto tune按钮,Toad会对执行结果按照tkprof进行分析(当然,这需要你在initsid.ora里面设置好utl_file_dir,如果服务器是在Unix机器上的话,还需要通过FTP方式得到Trace文件,有一些小小的设置)。 自动优化非常高效的对所有执行计划进行实际运行比较,并且给出实际执行的时间的对比,如下图: 我们还可以让Toad给出实际的优化建议:点击Original SQL,单击下面的Advice按钮,Toad根据对SQL的分析和执行结果给出合理的建议: 如: 1. 把表和索引分别放到两个不同的表空间,因为我们在创建表,加上约束的时候没有指定USING INDEX子句,所以表和索引都建立在了用户的默认表空间上了。 2. 对表EMP,DEP和MANAGER进行分析,收集最新的统计数据,有利于CBO得到最优的执行计划 3. 在合适的列上创建索引:EMP的manag_id和dep_no。当表中存在大量的数据的时候,这样可以大大减少由于全表扫描带来的成本。 5. SQL Modeler: SQL Modeler可以帮助开发人员很容易的写出各种复杂的SQL语句,只需通过简单的拖动鼠标,就能够写出复杂的SQL语句来。 打开SQL Modeler的几个途径: i. 菜单栏 Database -> SQL Modeler ,打开窗口 ii. 单击工具栏第四个按钮 ,打开SQL Modeler窗口 窗口由三个主要部分组成:  表选择区域:最右边的那个部分,用来选择From子句中用到的表。拖动到左边的区域者双击就选择了该表。  表模型区域:用来图形化的显示选择的表和表之间的关联关系。  生成SQL区域:这里显示用图形化方式创建的查询对应的SQL语句, 在SQL Modeler里面,还支持对生成的SQL进行Explain Plan,调试SQL的性能,运行SQL,看是否得到了希望的结果,保存生成的语句,者把语句粘贴到SQL Editor里面。 有了SQL Modeler的帮助,即使是初级的程序员也能编写出复杂而又高效的SQL查询来。 比如下面的例子; 生成步骤: 1. 选出表emp, dep, manager 2. 用鼠标拖住emp的emp_name和emp_no, dep的name,manager的name 3. 双击criteria窗口的emp_no condition列,弹出窗口,输入查询条件,比如emp_no=3 4. 由于结果里面不希望emp_no出现,双击emp_no列的visible,设置为false 5. 这样就出来了需要的查询,现在可以运行查询得到结果,对查询SQL进行分析,者在SQL Editor里面打开这个SQL,者保存为SQL Model文件,者再进一步处理,比如加排序, 汇总等。 DBA方面的功能: Toad在DBA日常管理方面的能力是非常强大的,可以帮助DBA安全快速地完成许多日常工作,还有Toad特有的一些小工具能完成一些普通方法很难做到的功能。下面大概讲述了各个常用模块的主要功能: a) Database Monitor 提供直观的Oracle数据库运行状况,包括下面这些详细信息: 可以看到逻辑IO,物理IO,各个状态的session数目,SGA的利用率,共享池的使用状况,各类事件的等待状况,以及各类事件随着时间的变化情况 b) Instance Monitor i. 可以用来检查本地tnsnames.ora文件里面定义的所有节点、Listener和数据库的运行状态和版本等相关信息。 ii. 可以远程启动、关闭数据库(如果设置了password验证方式) c) Unix Monitor: i. 可以监控Unix机器的运行状况比如详细的机器启动时间,CPU利用率,主要的进程以及这些进程占用的资源,主要的磁盘IO等。 d) Trace/Kill session i. 方便的查看所有的连接用户相关信息:比如终端,程序,连接时间等 ii. 对某个用户进行跟踪,查看用户执行的SQL语句,查看语句的执行计划, iii. 方便的查阅系统的Lock对象,有没有什么等待别的事务释放锁的情况,并能够轻易查出等待什么用户的什么事件结束,那个用户执行的是什么SQL。 iv. 查看回滚段的使用状态,什么用户,什么语句,使用的什么回滚段,多少读写量等 e) Oracle Parameter i. 可以方便的查看Oracle系统的参数:是否默认值,参数作用的简要描述,是否可以用alter session/alter system来动态改变,对于那些可以动态改变的参数,可以双击鼠标来进行修改 f) NLS_PARAMETER: i. 方便的查看session,instance,database一级的NLS参数值, ii. 可以动态修改session的NLS参数值 g) Extents i. 可以查看某个用户下的表和索引的详细的存储情况, ii. 发现那些占用大量空间的表和索引,可以考虑使用相应的对策,比如分区 iii. 发现那些即将达到max_extents的表和索引并可以及时纠正 iv. 发现那些索引和表处于同一个表空间的情况,并可以及时纠正。 h) Tablespace i. 直观的查看每个表空间的利用率,总空间,已使用空间,剩余可是用空间以及默认存储参数,和表空间是否需要整理等信息 ii. 查看每个表空间的状态,组成的数据文件, 以及每个数据文件的详细信息 iii. 查看每个表空间里面存在的对象和这些对象的详细存储特性 i) Tablespace Map: i. 图形化的显示表空间里面各个表/索引所占用的空间,各个segment的大小,segment是否连续等信息,非常直观 ii. j) Server Statistics: i. 可以非常直观的看到系统总体运行情况,迅速定位系统瓶颈所在 ii. 可以查看系统范围内各类等待事件的状况,查看每个连接会话的状况, k) Pinned Code: i. 我们知道,频繁执行的大的存储过程最好Pin起来,这样可以避免被Oracle在内存不足的情况下换出内存,避免动态加载,也避免flush shared pool的时候被清出内存。 ii. 根据每个模块的大小,执行次数,决定是否要把某个存储过程PIN起来。一个按钮就搞定了。 l) Control Files: 可以查看当前系统有哪几个控制文件,以及控制文件内部记录的详细信息。 (实际上就是V$CONTROLFILE, V$CONTROLFILE_RECORD_SECTION) m) Redo Log Manager: i. 可以方便的查看LOG的组,当前日志,每个组里面的成员名字,大小,方便的增加、删除log组,切换当前日志,对日志归档进行具体的控制。 ii. 可以在这个界面里完成几乎所有的对redo log的操作。 n) Repair chained rows: i. Chained rows影响系统性能,处于系统性能的考虑,需要把chained rows修复成普通的表的行。使用repaie chained rows,就可以比较容易的做到这一点。选择需要分析的表,然后分析一下,看有没有chained rows,如果有,点击repair,Toad就帮你把那些chained rows给修复了。 o) Identify Space Deficits 如果系统出现1659,1653错误,就是一个不合格的DBA。但是要即时预见这些错误,还是有一定的难度的。有了Toad的这个小工具之后,一点某个表空间,就知道这个表空间里面的剩余自由空间是否允许任何表能够扩展到下一个extent。并能够在发现问题之后,直接改正问题。 p) Estimate Table/Index Size i. 数据库的物理规划中,表/索引的存储子句的定义是非常重要的,影响系统。但是没有什么工具的话,要为表定义合理的存储子句也不容易。 ii. 在Toad里面,专门有工具帮助你合理定义表/索引的存储情况: 1. 自己可以定义将来表中需要存储的数据的数目 2. 多种估计方式: a) 根据对已有的数据的分析来定义表的大小(最精确,但是比较慢) b) 根据表定义数据类型来定义表的大小 c) 根据数据字典中以前分析过的数据来估计大小(需要近期分析过该表) q) Analyze All Tables i. 基于CBO的SQL需要CBO提供最优化的执行路径来提高程序的执行效率,但是假如对表进行大量的DML操作之后,不及时更新表的统计数据,这时候CBO就不能选择最为有效的执行路径,导致程序执行效率低。 ii. 手工分析表比较麻烦,一个一个做。 iii. 用Toad的Analyze Alltables这个工具,可以一次分析整个模式下面的所有表,有丰富的控制选项,包括是采用估计还是完全,是否同时分析索引,估计的话,采用多大的百分比等。 r) Rebuild Table i. 当表中的数据被反复大量的DML之后,而且PCTFREE和PCTUSED定义的不合理的情况下,表可能会变得非常破碎,占用大量的extent,索引也会相当破碎,导致效率相当低下。 ii. 传统的方式是通过exp/imp来解决这个问题,但是步骤实在比较麻烦,手工操作也有一定的危险性。 iii. 使用Rebuild Table工具,轻松搞定,而且可以手工修改一些通过EXP/IMP无法修改的参数,比如freelists ,freelists group, tablespace,initial等,还能够更改列的名字。 s) Relocate Index i. 我们知道,表和索引一般都需要分开存放到不同的表空间,这样比较便于管理,性能上也会有一定的提高,因为可以对表和索引同时存取。 ii. 但是实际上很多时候,由于这样那样的原因,常常忽略了索引单独存放这个基本概念,比如建立主键约束的时候没有加USING INDEX子句,后来disable/enable了主键约束/唯一性约束等,都会导致把索引直接存放到和表同一个表空间里面。 iii. 手工发现这些索引,再逐个移动非常麻烦,容易出错,在Toad里面,就很容易根据用户/表空间来发现那些不恰当存放的索引,可以批量移动这些索引,并且允许重新定义索引的存储子句。 t) Generate Schema Scripts: i. 可以用来生成整个用户下所有/部分对象的DDL语句。可以把结果保存为sql语句者保存为TOAD的自定义格式。 ii. 可以用来复制表结构,(EXP/IMP有非常严重的缺陷,就是从一个大的数据库倒出的表结构,无法导入到一个小的数据库里面,因为里面包含了原来表的存储信息,即使选择rows=N,也要在导入数据库里面占用相当大的空间) u) Compare Schema: i. 在开发的时候,有时候同时在几个开发库上开发,但是最后两个库的结构不完全一样,很难比较 ii. 用TOAD的这个功能,可以对两个数据库的模式(用户)下面的所有对象(包括存储过程)进行比较,可以选择具体的比较内容。 iii. 可以通过直接打开两个到各自数据库的连接,者根据Toad generate schame scripts生成的文件进行对比。 iv. 可以直接生成同步两个数据库的sql脚本,给出汇总的区别简要和详细报告等。
VMWare是一个“虚拟PC”软件公司.它的产品可以使你在一台机器上同时运行二个更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。VMWare是真正“同时”运行,多个操作系统在主系统的平台上,就象标准Windows应用程序那样切换。而且每个操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台虚拟机用网卡连接为一个局域网,极其方便。安装在VMware操作系统性能上比直接安装在硬盘上的系统低不少,因此,比较适合学习和测试。 [编辑本段]VMware产品主要功能   VMware产品主要的功能有:   1.不需要分区重开机就能在同一台PC上使用两种以上的操作系统。   2.完全隔离并且保护不同OS的操作环境以及所有安装在OS上面的应用软件和资料。   3.不同的OS之间还能互动操作,包括网络、周边、文件分享以及复制贴上功能。   4.有复原(Undo)功能。   5.能够设定并且随时修改操作系统的操作环境,如:内存、磁碟空间、周边设备等等。   6.热迁移,高可用性。 [编辑本段]VMware主要的产品   VMware是提供一套虚拟机解决方案的软件公司,主要产品分为如下三个。   VMware-ESX-Server   这个版本并不需要操作系统的支持。它本身就是一个操作系统,用来管理硬件资源。所有的系统都安装在它的上面。带有远程web管理和客户端管理功能。   VMware-GSX-Server   这个版本就要安装在一个操作系统下了,这个操作系统叫做HOST OS.   这个HOST OS可以是Windows 2000 Server以上的Windows系统者是Linux(官方支持列表中只有RH,SUSE,Mandrake很少的几种),和VMware-ESX-Server一样带有远程web管理和客户端管理功能。   VMware-WorkStation   这个版本和VMware-GSX-Server版本的机构是一样的。也是要安装在一个操作系统下,对操作系统的要求也是Windows 2000以上者Linux。和Vmware-GSX-Server的区别就是没有web远程管理和客户端管理。   瘦客户机终端操作系统(DeTOS)6.0   戴闻(Devon) IT公司与vmware 公司合作开发的瘦客户机终端操作系统(DeTOS)6.0是一种基于Linux操作系统的,可捆绑多客户并连接到众多的各类服务器,利用不同类型协议的网络终端管理软件。 [编辑本段]VMware特点   除了为到网络适配器、CD-ROM读盘机、硬盘驱动器、以及USB设备的访问提供了桥梁外,VMware工作站还提供了模拟某些硬件的能力。例如,能将一个ISO文件作为一张CDROM安装在系统上、也能将.vmdk文件作为硬盘驱动器安装、以及可将网络适配器驱动程序配置为通过宿主计算机使用网络地址转换(NAT)来访问网络,而非使用与宿主机桥接的方式(该方式为:宿主网络上的每个客户操作系统必须分配一个IP地址)。   VMware工作站还允许无须将LiveCD烧录到真正的光盘上、也无须重启计算机,而对这些LiveCD进行测试。还可以捕获在VMware工作站下运行的某个操作系统的快照。每个快照可以用来在任何时候将虚拟机回滚到保存的状态。这种多快照功能使VMware工作站成为销售人员演示复杂的软件产品、开发人员建立虚拟开发和测试环境的非常流行的工具。VMware工作站包含有将多个虚拟机指定为编队的能力,编队可以作为一个物体来开机、关机、挂起和恢复—这使VMware工作站在用于测试客户端-服务器环境时特别有用。   VMware公司新的企业级服务器和工具产品,正在使“将旧的生产服务器移植到虚拟机”的做法开始流行,这种做法能几乎不费力地将多个旧式服务器集装到一个单个的新宿主计算机中。[1][2] [编辑本段]小结   VMware workstation 6.5 ,请选择Windows版本下载,如图:   VMware已经在2009年4月21日正式发布其下一代虚拟系统管理软件vSphere。 vSphere是虚拟化平台VI3(VMware Infrastructure 3)的下一代产品,是业界第一款云操作系统。 [编辑本段]手把手让你学会安装VMware虚拟机   VMware Workstation虚拟机是一个在WindowsLinux计算机上运行的应用程序,它可以模拟一个基于x86的标准PC环境。这个环境和真实的计算机一样,都有芯片组、CPU、内存、显卡、声卡、网卡、软驱、硬盘、光驱、串口、并口、USB控制器、SC
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 让Oracle跑得更快:Oracle10g性能分析与优化思路 本信息 作者: 谭怀远 丛书名: ITPUB技术丛书 出版社:电子工业出版社 ISBN:9787121113253 上架时间:2010-8-6 出版日期:2010 年8月 开本:16开 页码:438 版次:1-1 编辑推荐    国内第一本真正意义上从工作经验出发,以作者的心得体会全面论述Oracle数据库性能优化的书籍。    作者内心经历的表白,站在全局角度对性能做分析,而不是拘泥于具体的技术细节,呈现给读者一种新的阅读思路。    书中涉及很多新的性能话题,比如执行计划,bind peeking,并行执行,10046及10053事件,AWR报告等,基本上涵盖了所有Oracle数据库性能方面的知识。 内容简介   在这本书里读者将会学到作者在性能优化方面的一些思路和思考,一些故障处理的方法和原则,这些东西是作者在实践中长期积累的心得体会,当读者掌握了一些处理问题的基本思路之后,成为一名合格的dba就是一件轻而易举的事情了。   本书适用对象:oracle dba、oracle开发人员,和其他对oracle数据库感兴趣的人员。 作译者   谭怀远,副总工,DBA团队负责人,在国内属于较早进入专职DBA岗位的人。是国内著名数据库论坛ITPUB的资深版主,论坛id alantany。有10年的Oracle DBA工作经验,从Oracle 8开始进入数据库领域,从Oracle 8到Oracle 8i,Oracle 9i,Oracle 10g,见证了中国DBA职业的发展历程。作者对数据库的性能优化有独到的见解,颇擅长于海量数据数据库的设计管理及优化工作。 目录 封面 -17 扉页 -16 版权 -15 序 -14 前言 -12 致谢 -5 目录 -4 第1章 引起数据库性能问题的因素 1 1.1 软件设计对数据库的影响 1 1.1.1 软件架构设计对数据库性能的影响 1 1.1.2 软件代码的编写对数据库性能的影响 2 1.2 数据库的设计 8 1.2.1 OLTP数据库 9 1.2.2 OLAP数据库 10 1.3 数据库的硬件设计 14 1.3.1 存储容量 15 1.3.2 存储的物理设计 16 1.3.3 数据的安全 17 1.4 小结 19 第2章 锁和阻塞 20 2.1 关于锁 20 2.2 锁和阻塞 22 2.3 引起阻塞的其他情况 30 2.3.1 select for update 30 2.3.2 外键和索引 36 第3章 Latch和等待 44 3.1 共享池中的Latch争用 45 3.2 数据缓冲池Latch争用 54 3.2.1 表数据块 54 3.2.2 索引数据块 59 3.2.3 索引根数据块 62 3.2.4 段头数据块 65 第4章 优化器 66 4.1 RBO基于规则的优化器 66 4.2 CBO基于成本的优化器 69 第5章 执行计划 85 5.1 Cardinality (基数) 85 5.2 SQL的执行计划 94 第6章 Hint 109 6.1 和优化器相关的Hint 115 6.1.1 all_rows和first_rows(CBO) 115 6.1.2 RULE Hint 117 6.2 访问路径相关的Hint 117 6.2.1 FULL Hint 118 6.2.2 INDEX Hint 118 6.2.3 NO_INDEX Hint 118 6.2.4 INDEX_DESC Hint 119 6.2.5 INDEX_COMBINE Hint 119 6.2.6 INDEX_FFS 119 6.2.7 INDEX_JOIN 120 6.2.8 INDEX_SS Hint 120 6.3 表关联顺序的Hint 125 6.3.1 LEADING Hint 125 6.3.2 ORDERED Hint 126 6.4 表关联操作的Hint 127 6.4.1 USE_HASH,USE_NL和USE_MERGE Hint 127 6.4.2 NO_USE_HASH Hint 132 6.4.3 NO_USE_MERGE Hint 133 6.4.4 NO_USE_NL Hint 133 6.5 并行执行相关的Hint 134 6.5.1 PARALLEL Hint 134 6.5.2 NO_PARALLEL Hint 134 6.6 其他方面的一些Hint 135 6.6.1 APPEND Hint 135 6.6.2 DYNAMIC_SAMPLING Hint 135 6.6.3 DRIVING_SITE Hint 136 6.6.4 CACHE Hint 136 6.7 小结 136 第7章 分析及动态采样 138 7.1 直方图 141 7.2 DBMS_STATS包 147 7.3 动态采样 176 7.3.1 什么是动态采样 176 7.3.2 动态采样的级别 182 7.3.3 什么时候使用动态采样? 185 7.4 小结 185 第8章 并行执行 186 8.1 并行和OLAP系统 187 8.2 并行处理的机制 189 8.3 读懂一个并行处理的执行计划 191 8.4 一个很常见的并行执行等待事件 192 8.5 并行执行的适用范围 194 8.5.1 并行查询 194 8.5.2 并行DDL操作 195 8.5.3 并行DML操作 203 8.6 并行执行的设定 210 8.6.1 并行相关的初始化参数 210 8.6.2 并行度的设定 211 8.7 直接加载 213 8.7.1 直接加载和REDO 216 8.7.2 直接加载和索引 219 8.7.3 直接加载和并行 221 8.7.4 直接加载和SQL*LOADER 226 第9章 变量绑定 232 9.1 什么是变量绑定,为什么要做变量绑定 232 9.2 为什么说OLTP必须要求变量绑定而OLAP不应该绑定变量 241 9.3 bind peaking 248 第10章 SQL_TRACE和10046事件 254 10.1 SQL_TRACE 254 10.2 TKPROF工具 256 10.3 10046事件 268 第11章 10053事件 276 第12章 性能视图和性能参数 294 12.1 性能视图 294 12.1.1 V$SQL 295 12.1.2 V$SQL_SHARED_CURSOR 300 12.1.3 v$session 305 12.1.4 V$sessstat 309 12.1.5 V$session_wait 310 12.2 性能参数 312 12.2.1 Cursor_sharing 313 12.2.2 DB_FILE_MULTIBLOCK_READ_COUNT 328 12.2.3 PGA_AGGREGATE_TARGET和SGA_TARGET 334 12.2.4 OPTIMIZER_DYNAMIC_SAMPLING 334 第13章 性能报告 335 13.1 AWR性能报告 335 13.1.1 生成AWR性能报告 337 13.1.2 AWR性能报告分析 342 13.2 Statspack性能报告 386 13.2.1 Statspack的安装 386 13.2.2 Statspack性能采集 391 13.3 ASH性能报告 394 13.3.1 生成ASH性能报告 395 13.3.2 ASH性能报告分析 405 13.4 小结 416 附录A 常见的等待事件 417 后记 关于数据库的学习方法 434 前言   笔者在写这本书的时候,翻看了很多当前国内数据库方面的书籍,发现写性能优化的书并不多,特别是从工作经验和思路上来讨论性能方面的书,更是少之又少,这些因素让笔者思考要写这样一本书,这也算是这本书的一个定位。   在这本书里,你将会学到笔者在性能优化方面的一些思路和思考,一些故障处理的方法和原则,这些东西是笔者在实践中长期积累的心得体会,在笔者看来,掌握处理问题的方法和分析问题的思路在日常工作中显得更为重要,当你掌握了一些处理问题的基本思路之后,剩下的工作就是去Google者阅读参考书了。   本书的一个特点是,凡是作者提到的观点,都尽可能地使用一些例子来证明它,这样看起来更有说服力一些。   为什么会出现数据库的性能问题   性能问题是最近几年来DBA们越来越关注的一个数据库技术领域,归根结底,造成它的原因是最近几年信息化进程的飞速发展,导致了很多系统的用户数量猛增,数据库中存储的数据量亦成几何级数激增,数据库作为数据处理和存储的最终受体,将必然直接承担这种变化导致的性能下降。因此在人们对信息的依赖性越来越强的时候,对信息使用的效率也变得越来越关注,这样数据库的性能优化问题就日益严重地压在DBA的身上。   什么时候需要对性能进行干预   itpub.net是国内最早的一个专业讨论Oracle数据库技术的论坛,目前在国内数据库方面已经相当有知名度,笔者是2001年注册的,算是最早的会员之一。目前仍然会经常上去看看,由于工作内容的关系,我比较关注性能方面的帖子,发现以下一类的帖子经常有很多,比如:   1. 我是一个DBA,我现在手头有一个数据库,我该从哪里进行性能优化呢?   2. 这是我的数据库的一个Statspack,我该如何优化?   通常对于第一个问题,我是很少回答的,并不是不屑于回答,实在是没有办法回答,如果我回答说,“你怎么知道你的数据库需要优化?”又担心这种没有实际意义的回答带有说教意味,打击别人的积极性,所以通常看看而已。实际上我是想说,对于一个DBA来讲,当你拿到一个数据库的时候,你首先需要做的是用最短的时间来了解一下跑在这个库上的是一个什么系统,比如是在线事务(OLTP)系统还是在线分析(OLAP)系统,这对于你做出性能上的判断至关重要,如果连系统都不了解,真不知道该如何去优化它,这就好比说,要设计一辆汽车,如果连用户对汽车的喜好都弄不清楚,如何能设计出一个取悦于用户的车呢?   对于第二个问题,像是比第一个具体一些,因为帖子作者已经提供了一个性能数据报告,但我仍然觉得通过这些数据没有办法准确地判断数据库是否有性能问题。比如你是一个医生,我让一个人站在你的面前测心率,结果是50次/分钟,你是不是可以断定他有问题,需要安装心脏起搏器呢?实际上是不需要,因为我知道他是一个运动员,这样的心率是正常的,而医生不知道,所以他在做出诊断之前需要详细了解站在自己面前的应诊者的所有详细信息,来作为他做出判断的依据。   下面贴出一个来自于我使用过的数据库性能报告中的一部分:   Buffer Nowait %: 100.00 Redo NoWait %: 99.99   Buffer Hit %: 66.35 In-memory Sort %: 100.00   Library Hit %: 99.63 Soft Parse %: 96.87   Execute to Parse %: 83.99 Latch Hit %: 99.87   Parse CPU to Parse Elapsd %: % Non-Parse CPU: 100.00      许多人看到这个数据一定会大声说:   “嘿,你的数据库性能好差,buffer hit只有66%,不知道是谁设计的这个系统,赶紧加大data buffer的尺寸!” .     诚然,这个数据的确显示数据库的内存命中率低得可怜,但是我想告诉你的是,这是一个在线分析(OLAP)系统的数据库,运行着很多非常大的查询,每个查询搜索的范围都在上亿条记录以上,那这个结果不是很正常吗?我们需要把几亿条数据缓存到内存里提供给这种每天可能只运行几次的查询吗?你可以同意,但是你的老板是不会同意的,这样做的成本太高了,而且完全没有必要,因为它只是一个报表系统,对数据库的响应时间要求不高,所以我们当然可以让这个查询直接到磁盘上去搜索数据,这也就是为什么在这样的系统里,buffer hit比例很低,但却是一个完全可以接受的值的原因。   笔者认为,只有数据库的性能已经影响到业务的正常工作者用户已经无法满意于这种性能时,我们才应该考虑来优化它,对于绝大多数系统,数据库的安全和稳定才是最重要的。   FAST=TRUE?   这是很多人追求的目标,它的意思是,在Oracle数据库中,通过调整性能参数的值,就可以让数据库运转得飞快。   实际上这不过是句玩笑,它本身是一句反话,却让很多人误入歧途。我看到很多人,包括一些DBA,凡涉及性能优化,必定谈及性能参数的修改,这实在是一个误区,他把性能参数值的修改对数据库性能的正面影响人为地放大了很多倍,实际上恰恰相反,很多时候修改这些参数产生的却是副作用,原因很简单,Oracle给一个参数一个默认值是让它最大限度地适用于每个数据库,所以它几乎是最优的,当然,绝对有个别数据库需要适当调整,但我认为那是个例,并且,很多时候,修改这些参数的人,他们修改的理由并不是非常充分,不过是想修改一下看看运气而已。   本书的内容   以下是本书各个章节的内容简介。   第1章 引起数据库性能问题的因素   这一章主要讨论一些引起数据库性能问题的因素,包含了系统架构、软件代码、数据库设计、存储设计等话题。   第2章 锁和阻塞   在这一章里,将介绍Oracle数据库中锁的起因及由锁引起的性能问题—阻塞,并将讨论常见的几种阻塞的起因。   第3章 Latch和等待   这一章讨论Latch,它是Oracle中比锁更轻量级的一种串行机制。热块是SQL未绑定变量是最常见的导致Latch等待的原因,这一章将对这些成因及解决方法进行论述。   第4章 优化器   优化器是SQL执行中最核心的部分,如果要分析SQL的性能,就不能不了解Oracle优化器的机制,这一章,我们就带你走进Oracle优化器—CBO的世界。   第5章 执行计划   当我们分析一条SQL语句的性能时,最先做的事情大概就是分析它的执行计划了。   所以,如果连执行计划都看不懂,那SQL调优根本无从谈起。在这一章,我们将讨论CBO(基于成本的优化器)执行计划相关的内容。   第6章 Hint   Hint指通过人为的方式来约束SQL的执行计划,让它按照我们希望的方式来执行,以达到我们需要的目的—改善性能者仅仅是试验以对比SQL的执行性能。   这一章将讨论Oracle数据库中的大多数Hint。   第7章 分析及动态采样   对象采样分析是CBO(基于成本的优化器)的灵魂和核心,CBO如果没有了对象的分析数据,就好像一个医生不使用病人的病历来确定病人的病一样危险—那是一种没有依据的、盲目的行为。   在这一章里,我们将详细讨论Oracle中和对象分析相关的内容。   第8章 并行执行   这一章讨论一个和性能关系极大的技术—并行执行。   在OLAP(在线分析系统)者是数据仓库系统中,并行技术使用得非常普遍,在合适的条件下,并行执行将会使SQL的执行效率大幅度提升。   第9章 变量绑定   这一章将详细讨论一个在性能优化领域经常被谈到的话题—变量绑定。   那么,是不是在任何时候变量绑定都是必需的呢?答案是否定的,在这一章中将给出答案。   第10章 SQL_TRACE和10046事件   SQL_TRACE和10046事件是会话级非常有用的两个工具,它们可以捕获会话当中SQL执行的详细信息,其中10046事件还可以获得SQL绑定变量的信息及发生的等待事件。   这一章将详细讨论这两个工具。   第11章 10053事件   这一章将详细讨论10053事件,它是一个很有用处的工具,当你发现一条SQL总是选择错误的执行计划,而你又百思不得其解的时候,也许你应该去生成一个10053事件的trace文件,看看CBO究竟是如何做出这样的执行计划的。   第12章 性能视图和性能参数   本章讨论一些Oracle数据库的性能视图和性能参数。   性能视图相对于SQL_TRACE来说,可以让我们更直接地获取一些性能数据,帮助我们判断数据库是否出现了性能问题。   而性能参数则让我们能够有机会选择一种最适合自己系统的某个参数值,以最大程度地满足当前系统的需要。   第13章 性能报告   本章介绍了常用的几个性能分析工具及性能报告,包括AWR,STATSPACK和ASH,其中以AWR性能报告作为重点介绍的对象。   本章以一个来自于现实生产数据库的AWR报告为题材,来讨论AWR报告的阅读方式,并最终判断出系统的性能所在;STATSPACK介绍了它的安装方法和如何生成报告;ASH也是以一个来自实际生产数据库的性能报告进行性能分析。   附录A 常见的等待事件   这部分会列出一些常见的等待事件、引起它们的原因及一些内部的机制,可以作为大家在处理性能问题时的一个参考部分。   后记 关于数据库的学习方法   这一部分是作者对如何学习Oracle的一个心得分享,对于Oracle初学者来说,正确的学习方法非常重要,它可以使你少走很多弯路。   如果初学者对于Oracle数据库的学习方法有兴趣,这部分可以作为本书的第一部分来阅读。   本书的读者对象   1. 本书适合Oracle DBA者和Oracle相关的开发人员。   2. 本书的读者需要有一定的Oracle基础,比如你应该知道什么叫做表,什么叫做索引等。   约定   1. 本书示例使用的Oracle版本是10gr2。   2. 本书自创了一个术语—段对象。   这个词大家可能看着有那么一点陌生。作者的意思是,在Oracle数据库中,凡是分配了存储空间的,都称为段,所以段并不一定指的是表,也可能是表的一个分区,还可能是索引、大对象(LOB),是IOT(索引表),物化视图等。在书中有时候需要描述这些对象时,单独说某个表,者一个索引,都不能完全概括,所以就统称为段对象。   3. 几个未作翻译的术语Extent,Latch和Bind peeking。   Extent:我看有些书翻译为“分区”,说实话,在Oracle里面,一提到分区,可能99%以上的人会认为是partition,还有的书翻译为“范围”,这个就更让人匪夷所思,所以在书中这个单词就没有翻译,相信大家也懂。   Latch:有的书翻译成“闩”,有的翻译成“锁存”,我总觉得还是不翻译好,只要大家知道它是Oracle里一种类似于锁的保证一些操作串行化的技术就好了。   Bind peeking:翻译成“变量窥视”是“变量窥探”都非常不对头,所以干脆也不翻译。   本书的目的   笔者从事Oracle DBA的工作已经超过10年,对数据库的理解也一直在改变,就目前来看,我觉得最难的东西不是技术本身,而是什么时候该用什么技术。比如说要使用变量绑定,这非常容易,如果你不会,Google一下,差不多几分钟时间你就会了。可是,这个系统究竟该不该使用变量绑定,我想你Google一天者一个星期也不一定有答案。原因是每个系统都是独立的,都有自己的业务特点,这需要技术人员根据自己系统的业务特点来度身定做符合自己系统的技术特性。   让读者在每一个技术面前先停下来思考一下,这个技术究竟在什么时候应该用,什么时候不应该用,这是笔者写本书的最终目的。   致 谢   感谢www.itpub.net网站的创始人Tigerfish为本书写序,我一直对他怀有敬意,他在推动中国Oracle数据库的发展 上功不可没。   感谢biti(冯春培),eygle(盖国强),kamus(张乐奕)和warehouse(谢永生),他们都是国内顶尖的Oracle专家,感谢他们为本书写的精彩点评。   还有来自ITG的Mike,感谢他的热心帮助和鼓励。   感谢ITPUB的王蓓小姐(贝贝),在本书的出版过程中,她做了大量的协调工作,才保证这本书的顺利出版。   感谢电子工业出版社的张月萍策划和高洪霞编辑,是她们的努力让本书更具可读性和完整性。   最后要感谢我的妻子tracy和儿子思墨,是他们让我一直努力工作,最终使本书得以问世。   后 记   关于数据库的学习方法   我想在这里聊一些数据库方面的学习方法,算是对自己这些年学习的一个总结,也可以给那些才进入Oracle领域的朋友们提供一些借鉴。如果能够使你有所收获的话,我将非常高兴。   1、英语和技术的关系   从2005年开始到现在,我只看过三本关于数据库方面的印刷书籍,都是由一个人写的,他叫Tom Kyte,业内都叫他Tom,这三本书分别是:   ● 《Expert One-on-One Oracle》—《Oracle专家高级编程》   ● 《Expert_Oracle_Database_Architecture》—《Oracle 9i&10g;编程艺术深入数据库体系结构 》   ● 《Effective Oracle by Design》—《Oracle高效设计》   在买这三本书时,多少带有些许盲目性,因为崇拜书的作者,所以爱屋及乌地买了他写的所有的书,实际上我用在看这三本书上的时间并不多,更多的时候我都泡在Asktom.Oracle.com这个网站上,就是这个网站,改变了我对问题的思考方式和学习方法。   对于大多数中国人来说,特别是做技术的人,英语成为很多人的软肋,这是一个无奈的局面。我甚至听到很多人在说,为什么非要学习英语,自己国家的话说好就行了,言辞之间颇鄙视那些学英语的“崇洋派们”。本身这句话也还不错,作为自己国家的公民,学好自己国家的语言,自然是再好不过的事情。但是很遗憾的是,我们说着自己的语言,却在用着别人的东西。用别人的东西,却拒绝学习别人的语言,这看起来不免有些矛盾。如果有一天世界上所有的商业软件都来自于中国,那么我们再自豪地鄙视那些学习英语的人也不迟。   所以我必须要说的是,如果你想把计算机的技术学深一些,请你务必要学好英语,至少要做到能够熟练阅读英文文档的哑巴英语,如果再进一步,你能够使用英语和别人做书面的沟通(比如在论坛中者E-mail中提出问题),那会更好一些。   在Asktom.Oracle.com中有来自世界上很多国家的Oracle DBA者开发人员在提出问题,我最初的时候只是浏览,后来尝试着用自己蹩脚的英语向Tom提出了一个问题,当收到Tom给出的回复后,当时心情真是无比的激动,可喜之余不免又甚感悲哀,为什么一个简单的提问,却让我欢喜至此呢?原因大概是,我们和他们之间沟通太少了,一个小小的问答,对我来说就像跨过一个巨大的鸿沟。   之后的日子里,就慢慢习惯了这种学习方式,当我有一个问题,在找遍了所有的Oracle官方文档,Google和Metalink(一个Oracle公司的在线技术支持平台)未果之后,总是能够在这里得到一个确切的回答,它已经变成了我在技术上最后的依靠了。   我们不得不承认和接受一个现实,由于语言的沟壑,使我们学习起这些西方人发明的东西时,比他们自己的人要困难得多,比如对于一个软件,他们已经习惯于随手看一下软件的Manual(联机帮助手册)来了解这个软件的用法,而我们却还在傻傻地等待着软件的汉化者翻译过来的软件使用教程呢(市面上有很多书都是简单地将某个软件的manual翻译过来,然后出版),这种语言上的障碍使我们和他们在技术上有相当大的差距,这就是我在Asktom.Oracle.com论坛上得到的最切身的感受,我们不仅在技术本身上,而且在一些思维方式上和他们也有明显的不同,这不是妄自菲薄,是我们中国IT从业人员的现状,我们只是封闭在自己的圈子里面做研究,却并不知道外面已经是个什么样子了。   我希望大家能够把英语学好(我本人也在努力地学习中),Oracle的官方文档全都是英文的,metalink也全都是英文的,asktom网站也都是英文的,如果我们能够熟练地使用这三个资源,那么我们的技术水平必将上一个新的台阶。   2. 如何使用Oracle的官方文档   如果你到现在为止,依然没有习惯于使用Oracle的官方文档的话(比如你惧怕英语阅读者其他的原因),那么你可能要考虑改变一下你的学习方式了,因为Oracle官方文档是Oracle公司提供的最权威的技术资料,它基本上包含了Oracle所有的技术,你在这里可以找到大多数你想找的东西。   也许那些看起来无比长的英文文档让你望而却步,至少我最初也是如此的。但是随着自己尝试着去阅读了几篇之后,感觉情况并没有想象中的那么坏,我居然读懂了一大半。因此建议大家也要树立信心,要鼓起勇气来阅读英文文档,当你经常阅读时,你会发现其实它并没有你想的那么难,你使用它的次数也多,你就越能接受和使用它。   这里简要地介绍几个使用频率比较高的官方文档,希望大家能够经常使用它们:   《New Features Guide》   一般称为新特性,当我们要使用一个新版本数据库的时候,我们应该先阅读这篇文档。可以通过目录来浏览自己感兴趣的部分。这篇文档主要介绍的就是当前这个版本的数据库较从前的版本有了哪些新的技术,这篇文档可以帮助你快速地了解一个新版本数据库的新特性,这比阅读那些具体的文档要省力得多。   《Concepts》   当我们需要了解一个概念者技术的具体含义机制时,我们需要参考这篇文档,这里面基本上包含了所有Oracle相关的概念和技术。   比如什么是表,什么是索引,什么是段等。   者什么是SGA,PGA等。   者什么是并发,事务等。   这是Oracle最重要的一篇文档,希望大家能够经常使用它。   《Reference》   这里面主要包含了四部分内容:   ●初始化参数   ●视图   ●等待事件   ●统计信息   这是我使用频率最高的文档之一,基本上每天都要打开几次,主要是查询一些视图及其字段的解释及等待事件的解释,初始化参数的解释也会经常用到它,另外它还包含了一些统计项目,比如v$sesstat中的统计项目的解释就可以从这篇文档中找到。   《SQL Reference》   这篇文档大家应该再熟悉不过了,当你记不住某条SQL的命令者搞不清楚某条SQL的选项时,就需要从这篇文档中获取答案,它包含了Oracle所有的SQL语法。   《Administrator's Guide》   这可以看做一本Oracle的实战手册,很多Oracle的技术和特性在这篇文档里都能够找到相应的示例,所以建议大家也经常使用它。   《PL/SQL Packages and Types Reference》   如果你是一个喜欢使用Oracle提供的PL/SQL包工作的人,这篇文档你就应该经常使用到,它包含了Oracle提供的所有PL/SQL包,比如我们经常使用到的DBMS_STATS,它是用来做分析用的包,包里面每个存储过程及参数在这篇文档中都有详细的说明。   《Performance Tuning Guide》   如果你要学习Oracle数据库性能优化的话,这篇文档应该要好好读几遍,这里面包含了所有和性能优化相关的技术和方法。   3、学会思考   我们不能机械地去学一些技术,那样只能让自己陷入一个由自己打造的万劫不复的技术深渊,无法自拔,因为技术是无止境的,而人的精力是有限的,这样只能使自己整天生活在一种压抑和苦闷当中。   我们要学会在技术面前理性的思考,比如对于一个新技术,流复制(Streams Replication),当我看到这个概念的时候,我告诉自己,这不过又是Oracle为用户提供的另外一种数据同步的机制而已,如果我们有这方面的需求,我会带着我们的需求去看相关的文档,以便确定这种技术是否适合我们的系统,否则,我可能只是做一些粗浅的了解,仅此而已,切勿把自己陷入到技术的泥潭当中去。   有目的地学习技术,做到学以致用,你就会过得很快乐,相反,你就会非常痛苦,尽管你每天都在学习,可是你是否想过,你一个人学习,Oracle却有成千上万的开发人员在开发新版本的数据库和新的技术,你能学完吗?   理性地学习,心平气和地学习,是做技术的人的一种生活态度,希望本书对大家在学习技术上会有所帮助。    序言   性能优化是数据库应用的核心问题。目前的商业开源的数据库产品,发展已日臻成熟,很少有经常发生崩溃急需修复的情形。故DBA除了日常的常规维护任务外,大多把精力花在优化数据库上。在2005年的时候,ITPUB也曾出过一本《Oracle数据库性能优化》(盖国强、冯春培、叶梁、冯大辉主编)的技术书,颇受Oracle DBA们的欢迎。现在很高兴地看到在ITPUB技术丛书里又增加了一本关于数据库优化知识的书籍。   ITPUB于2001年9月26日成立的,已发展为国内最大的数据库技术讨论社区。本书作者谭怀远先生则是在2001年9月28日加入了ITPUB,相交至今将近九年时间。他在这么长久的时间,长期工作在数据库业务的第一线,积累了大量丰富的经验,也形成自己独到的见解。而这些见解,又大部分体现在本书的文字里,本书既是知识的归纳总结,同时又是个人技术感情(恕我在这里使用了一个创新的词汇,大多数长期从事技术工作的人,都有一种有墨在胸,不得不发的感觉)的抒发。纵观全书,我个人对作者所说的“最难的东西不是技术本身,而是什么时候该用什么技术”深表认同。当DBA从烦琐的日常工作脱身出来,举目远望的时候,再往前的一片田野便是架构问题,最好的最彻底的,能一劳永逸的优化,往往从架构设计开始。期待怀远君将来的新作,可以在这片更广阔的天地里驰骋。   我感到本书最大的一个特点在于,作者通过自己的一种情绪化的东西在写作,也可以说是对于技术的一种感情告白,所以是真挚的,这种真挚将影响到读者阅读时的情绪,让你在一种颇为感性化和人性化的氛围里阅读,轻松而又有趣,而不是冷冰冰的枯燥的技术讨论,这是本书区别于其他技术类书籍的一个显著特点。   本书里,涵盖了几乎所有优化相关的知识点,以及一些很新的内容,比如bind peeking、并行执行、执行计划、Cardinality(基数)、10053事件等,这些内容对于那些渴望深度了解性能优化的读者来说,是非常有用的。   ITPUB前身是在smiling上的Oracle电子小组,刚刚开始的时候ITPUB的板块不多,只有Oracle数据库管理、Oracle开发、OCP、Cisco、网络集成、海阔天空这几个板块,会员数只有一万多人,今年过9年的发展,ITPUB已拥有技术板块100多个,注册会员数量超过230万人。每天更新的讨论帖数以万计。ITPUB的发展与像怀远君这样的专家、第一线技术工作者的长期支持是分不开的,在此也向怀远君表示感谢,没有你们就不会有今天的ITPUB。   ITPUB创始人 tigerfish   2010年6月8日    媒体评论   很多年前就在itpub看到作者的身影,也了解到作者管理着大量的数据库。多年的不断锤炼让作者在Oracle数据库领域有了丰富的经验。在数据库优化领域,国内的书籍相对比较少,不论哪种数据库,比较多的都是类似工具手册一样。写书是一件很不容易的事情,对作者的知识体系有着极高的要求,所以市面上流传的很多都是简单地将英文的文档翻译为中文的手册类的书籍。作者将自己多年的经验用自己的语言和通俗的比喻给我们展示出来,带给人的是另一种体验,更亲切和容易理解。除了常规的优化所涉及的范畴及Oracle 10g开始推出的AWR和ASH之外,作者还引出了10053这样的CBO相关的事件及不少的Hint方法,这些都将帮助我们非常深入地研究数据库的 SQL优化问题。相信作者将亲身经历的体验深入浅出地展示给我们,能给Oracle数据库爱好者很好的帮助。   ——冯春培(biti)      当我们在2004年开始编辑出版Oracle技术书籍时,国内原创的作品还十分有限,现在,这种情况完全改变了,越来越多的技术爱好者开始总结、写作和分享,Oracle技术出版物开始丰富起来。在这个历程中,ITPUB论坛一直推动着Oracle数据库技术的探讨和应用,作者alantany正是来自于ITPUB的一位技术专家,他将自己多年的实践与经验不断总结出来,和我们大家分享,这种精神与坚持值得我们尊敬,我乐于见到这样的作品问世,也期待作者能够坚持不懈,不断同我们分享他的知识与经验。   ——盖国强(eygle)恩墨科技创始人,Oracle ACE总监      很欣喜地看到这几年来国内Oracle数据库技术原创书籍的蓬勃发展,对每一位能够坐下来并且将自己的经验写出来的作者我都报以深深的敬意。对于Oracle数据库而言,也许在现在随着安装的日渐简易和默认性能的不断优化,一份默认的数据库安装,甚至是保证数据库可以正常运行都不再需要太多的专业知识,然而数据库优化仍然是非常专业的部分,这需要多年的实际工作经验积累。 可以说这本书的作者拥有得天独厚的工作环境,据我所知,他所参与管理的数据库无论是数量还是大小还是性能要求上在国内都可以排入前列,因此这是一本融合了真知灼见、可以指导实际工作的Oracle数据库性能优化书籍。 实际上我更希望读者们可以从后记开始读起,作者在后记中提及的所有观点都与我不谋而合,我同样相信无论是后记中这些观点还是全书中记录的技术知识,对于所有从业人员都有极大帮助。   ——业内资深Oracle技术专家,Oracle ACE张乐奕(Kamus)      据我所知作者是中国独立撰写Oracle性能优化书籍的第一人,该书几乎涵概了Oracle性能优化的所有主题,在国内数据库性能优化领域的书籍中实属罕见。   ——谢永生(warehouse) 资深Oracle培训讲师      The fast and easy way to understanding the fundamentals of database performance tunning. If you’re tired of wading through huge technical manuals that drown you in jargon, making it difficult to decipher database performance issues, help has finally arrived. Simple enough for a beginner, but challenging enough for an advanced user, this book is your shortcut to mastering database perfperformance tunning.   本书提供了一种理解Oracle性能优化的简单快捷的方法。如果你已经被成堆的关于性能优化的技术手册淹没,身心疲惫,无从下手,那么,这本书将帮你走出困境。无论你是初学者,是经验丰富的技术人员,你都将从这本书中获得一个掌握数据库性能优化的捷径。   ——Mike ITG (Investment technology group) 资深软件工程师   
发帖
Web 开发

8.0w+

社区成员

Java Web 开发
社区管理员
  • Web 开发社区
加入社区
帖子事件
创建了帖子
2006-03-23 09:36
社区公告
暂无公告