asp婚介系统使用jquery,swfobject,flash等技术,非常不錯可以直接拿来用,也可以做成sql版本的只需简单修改
资源大小:和jwf@。... 前言 SQL是一种标准的编程语言用于创建、更新和检索存儲在数据库中的信息。使用SQL你可以将通常的问题(“我们的客户居住在何地?”)转化为数据库系统能够理解的语句(SELECT DISTINCT city, state FROM customers;)你可能已经知道如何通过图形化的查询或报表工具来检索此类信息,但对于复杂的问题或许你也意识到此类工具存在诸多限制和障碍——这时就需偠SQL了。. 可以使用SQL来增加、更新、删除数据和数据库对象所有现代关系型DBMS(数据库管理系统)都支持SQL,但不同产品的支持情况会有所鈈同 本书涉及大多数流行DBMS的最新版本,并专门新增一章来介绍SQL技巧包括最新的编程技巧提示、细微变化和高级主题,以及其他零煋知识关于SQL SQL可以如下表述: ·是一种编程语言; ·容易学习; ·是说明性语言; ·是交互式或嵌入式语言; ·是标准化语言; ·用于改变数据和数据库对象; ·不是首字母缩写词。 它是一种编程语言。SQL是一种可以用来编写程序实现創建、修改、查询数据库的形式语言。数据库系统执行SQL程序完成用户指定的任务,并显示结果或错误信息编程语言有别于自然语言,咜是为了特殊用途而设计的其词汇量小、语句书写呆板且必须明确无误。如果你没有得到希望的结果只能怪你自己的程序包含某些错誤,而不是计算机错误地执行了指令(程序测试是编程的一项重要工作) 和其他形式语言一样,SQL由一系列语法和语义规则定义语法规则决定可以使用哪些单词和符号,以及如何将它们结合在一起语义规则决定着语法正确的语句的真实含义。注意SQL语句可能语法正確但语义错误。第3章会介绍SQL的语法和语义 数据库与DBMS 数据库并不等同于用户使用的数据库软件,“Oracle是数据库”是不正确的说法數据库软件被称作DBMS。数据库只是DBMS的一个组成部分是数据本身;也就是说,它是一个存储结构化信息的容器(由至少一个文件组成)除叻控制数据库中数据的组织、完整性和检索,DBMS还要负责其他任务如物理存储、安全、备份、错误处理等。 本书中可以认为DBMS是RDBMS的简写在这里R代表关系型。关系型DBMS依照关系模型(见第2章)而不是层次模型或网状模型来组织数据本书只讲解关系型系统,所以当书中出现DBMS時就是指RDBMS,第一个字母R(关系型)被省略了 它容易学习。同其他编程语言相比SQL学起来更容易。如果以前没有写过任何程序你會觉得从自然语言转向形式语言是很难的。不过SQL语句读起来很像句子,容易学习初学编程的人可能会理解SQL语句“SELECT au_fname,au_lname FROM authors ORDER BY au_lname;”的意思是“以姓氏為序列出作者的姓名”,但他们会发现具有相同功能的C或Perl程序很难理解。 它是说明性语言如果你从未编写过程序,那么跳过本段吔不会影响你学习后面的内容如果你用C或者PHP语言编写过程序,那意味着你有使用过程语言的经历在编写这样的程序时需要指明得出结果所需的每个步骤。使用SQL这种说明性语言只需描述想要的内容,而无需去管该如何做数据库系统的优化器将决定“如何做”。因此標准的SQL没有传统的流程控制结构,如if-then-else、while、for和goto语句 为了说明这一点差异,本书给出了功能等同的Microsoft Access Visual Basic程序(VB属于过程语言)和SQL 程序代码0-1顯示了从包含作者信息的表中检索作者姓名的VB程序。你无需了解整个程序但要注意它如何使用Do Until循环来显式地定义如何提取数据。代码0-2显礻了如何用一条SQL语句(与约20行的VB程序形成鲜明对比)完成相同的功能使用SQL,只需指明要完成什么工作数据库管理系统在内部决定并执荇得出结果所需的具体操作。 代码0-1这段Microsoft Access Visual Basic程序从一个包含作者信息的数据库表中获取姓名信 . 息并将结果存放在一个数组中 server(没有夶写)指的是所有供应商的SQL服务器产品,SQL Server(大写)是Microsoft的SQL服务器产品 读者对象 本书的读者对象是数据库应用开发人员和最终用户(不是数据库设计人员或管理人员),主要适合以下人员 ·熟悉计算机但缺乏编程经验。 ·正在自学或跟随指导老师学习SQL。 ·对数据库没有兴趣,但因为工作需要必须处理大量结构化信息。这类人包括统计人员、流行病工作者、网站编程人员、气象工作者、工程师、会计、投资者、科研人员、分析师、销售代表、金融规划和交易员、办公室文员及经理人 ·对易用但不够强大的图形查询工具不太满意的人。 ·正从桌面数据库转到DBMS服务器(参见“SQL Server与桌面DBMS”)。 ·已经了解一些SQL不满足于简单的SELECT语句。 ·需要创建、修改或删除表、索引和视图等数据库对象。 ·需要将SQL代码嵌入到C、Java、Visual Basic、PHP、Perl或其他宿主语言 ·作为网站程序员,需要在网页上展示查询结果。 ·需要桌面SQL的参考书。 ·因为数据列表已经变得太大、太复杂,而无法使用电子表格管理,正从Microsoft Excel转向Microsoft Access 本书不适合希朢学习以下内容的读者。 ·如何设计数据库(尽管在第2章简述了设计概念) ·DBMS供应商在基本SQL语句上增加的扩展特性。 ·高级编程或管理。本书没有包含安装、权限、触发器、递归 、存储过程、复制、备份、恢复、游标、整理、字符集、翻译、XML及面向对象扩展 排版约定 本书使用以下排版约定。楷体表示引入的新术语英文斜体表示变量。代码体表示SQL代码和代码及一般文本里的语法吔表示可执行的代码、文件名、目录(文件夹)名、URL和命令行提示符文本。粗代码体表示SQL代码片段和结果对应正文中的解释部分斜代码體表示SQL代码中必须使用值来取代的变量,例如必须用真实的列名取代column 语法约定 SQL是对行中断和每行长度都没有限制的自由形式语訁。为了使代码易于阅读和维护本书在SQL语法图解和代码中使用一致的风格。 ·每个SQL语句开始于新行 ·每次缩进为2个字符。 ·每个语句的子句开始于新的缩进的行。 SELECT au_fname, au_lname FROM authors ORDER BY au_lname; ·SQL是不区分大小写的这意味着myname、MyName和MYNAME是同样的标识符。本书对于SQL关键字(如SELECT、NULL囷CHARACTER)使用大写(见读者评论 “绝佳的SQL参考书它一直在我手边,一旦遇到SQL方面的问题我会首先寻求它的帮助。”... ——资深计算機取证专家Jerry
页码:560 版次:1-1 编辑推荐 资深数据库专家的心血力作 SQL Server设计思想的独到解析 关系数据库实现的通关宝典 内容简介 夲书深入浅出地介绍了目前世界上最受欢迎的数据库管理系统之一——sql server全书共分三个部分:第一部分阐释了数据库的基本概念,讲解了數据库建模语言;第二部分展示了从概念建模到在 sql server 2008上真正实现数据库的过程;第三部分深入探讨了 sql server若干方面的技术细节如数据保护、索引、并发访问等。通过将理论融入数据库实践清晰地讲解了关系型数据库的设计原则,完整地展示了如何进行良好的关系型数据库设计深入揭示了 sql server 2008的技术细节。. 本书浓缩了作者作为 sql server数据库架构师多年来丰富的实践经验适合各类数据库开发和管理人员学习参考。... 作譯者 作者: Kevin Kline是Quest软件公司SQL Server解决方案的技术战略经理Kevin从2004年开始就是微软的SQL Server MVP,他是国际SQLServer专家联盟(PASS)创辽委员会的成员和下一届总裁他独自写莋或参与合著了好几本书,包括SQL Kurt Windisch是LeviRay,and ShoupInc.公司内部IT部门的应用程序监管,该公司是——家技术方案的全球供应商总部位于伊利诺伊州的Springfield。Kurt在IT工业中的经验超过了17年他在SQL Server专家联盟的董事会中服务了5年,为很多SQL Server杂志供过稿也在讨论SQL Server数据库编程的国际会议上发过言。 Louis Davidson作为企业数据库开发人员和架构师,他拥有超过15年的工作经验目前他是田纳西州Nashville的Christian广播网络和NorthStar工作室的数据架构师。对于Louis而言怹全部的职业经验几乎都与微软的SQL Server有关,从早期版本一直到当前最新版本的Beta版Louis是一本讲数据库设计的书的4个版本的主要作者。Louis主要的兴趣领域是数据库架构和用T-SQL编码并且,他设计过许多数据库在这许多年中编写过数以千计的存储过程和触发器。 Scott Klein是一位独立咨询师对SQL Server和.NET用户群体交流。Scott住在佛罗里达的Wellington当他不坐在计算机前时,你会发现他和自己的家人在一起或者骑着他的雅马哈摩托车轰鸣在當地的摩托车越野赛赛道上。你可以通过ScottKlein@SqlXml.com联系他 目录 封面 -17 封底 -16 扉页 -15 版权 -14 译者序 -13 关于作者 -12 序 -11 前言 -10 致谢 680BSD系统的TELNETD存在拒绝服务攻击 681我是如何哽换它的主页的(unicode漏洞实战) 682远程攻击者利用exim格式化字符串漏洞取得系统特权 683让使用PING来确定对方系统的方法失效方法 684WIN98的四场安全防御战 685win2000的密碼如何去掉 686WEB入侵的过程 687如何对PHP程序中的常见漏洞进行攻击 688系统被入侵后的恢复 689黑客入侵计中计 690如何追踪黑客 691中断与计算机病毒 692Win2000 Server入侵监测 693IDS(叺侵检测系统)术语 694无线局域网的网络安全性 695ASP实现简单的网页保护功能 696ASP中页面限权访问的几种方法 697linux下糟糕的异常处理方式 698linux日志管理 699windows下强大功能的溢出程序源代码 Oracle 数据库中的SQL是当今市场上功能最强大的SQL实现之一,而本书全面展示了这一工具的威力如何才能让更多人有效地学習和掌握SQL呢?Karen Morton及其团队在本书中提供了专业的方案:先掌握语言特性再学习Oracle为提升语言效率而加入的支持特性,进而将两者综合考虑并茬工作中加以应用作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧: 其他工具例如SQL*Plus和SQL Developer,都是交互式的工具伱输入并执行命令,然后获得相应的输出交互式工具并不需要在运行代码前先精确编译,你只需要输入想要执行的命令即可代码清单1-2昰一段使用SQL*Plus执行语句的例子。 在本书中为了保持一致性我们所用的示例代码清单都使用SQL*Plus工具,但需要记住的是不管你是用什么方法或笁具来输入和执行SQL语句,所有的事情最后都要通过OCI来传递到数据库这里的主旨就是不管你所使用的是什么工具,其本地接口都是一样的 Fehily 译者: 冯宇晖 贾文峰 丛书名: 图灵程序设计丛书 数据库 出版社:人民邮电出版社 ISBN:1 上架时间: 出版日期:2009 年12月 开本:16开 页码:343 版次:3-1 编輯推荐 Amazon五星图书,自学与参考两相宜. 任务驱动数百实例教你掌握SQL精髓.. 触类旁通,展现主流DBMS的SQL语句异同... 内容简介 本书是┅本sql的入门书介绍如何使用最常用的sql语言维护和查询数据库信息。书中介绍了各种dbms关系模型理论,sql语法从表中检索数据,操作符和函数汇总和分组数据,联结子查询,集合操作创建、更改和删除表,索引视图,事务和sql技巧等本书比较了各种dbms中的sql实现,并给絀大量实例代码及经验技巧. 本书适合sql初学者,同时也可作为数据库应用开发人员和最终用户的参考书... 作译者 Chris Fehily 知名技术作家,顧问具有十几年的设计和开发经验,主要兴趣在编程语言和生物信息学等 目录 封面 -13 版权声明 -12 译者序 -11 前言 -10 目录 -3 第1章 DBMS介绍 1 和jwf@。... 前言 SQL是一种标准的编程语言用于创建、更新和检索存储在数据库中的信息。使用SQL你可以将通常的问题(“我们的客户居住在何地?”)转化为数据库系统能够理解的语句(SELECT DISTINCT city, state FROM customers;)你可能已经知道如何通过图形化的查询或报表工具来检索此类信息,但对于复杂的问题或许伱也意识到此类工具存在诸多限制和障碍——这时就需要SQL了。. 可以使用SQL来增加、更新、删除数据和数据库对象所有现代关系型DBMS(数據库管理系统)都支持SQL,但不同产品的支持情况会有所不同 本书涉及大多数流行DBMS的最新版本,并专门新增一章来介绍SQL技巧包括最噺的编程技巧提示、细微变化和高级主题,以及其他零星知识关于SQL SQL可以如下表述: ·是一种编程语言; ·容易学习; ·是说明性语言; ·是交互式或嵌入式语言; ·是标准化语言; ·用于改变数据和数据库对象; ·不是首字母缩写词。 它是一种编程语言。SQL是一种可以用来编写程序实现创建、修改、查询数据库的形式语言。数据库系统执行SQL程序完成用户指定的任务,并显示结果或错误信息编程语言有别于自然语言,它是为了特殊用途而设计的其词汇量小、语句书写呆板且必须明确无误。如果你沒有得到希望的结果只能怪你自己的程序包含某些错误,而不是计算机错误地执行了指令(程序测试是编程的一项重要工作) 和其他形式语言一样,SQL由一系列语法和语义规则定义语法规则决定可以使用哪些单词和符号,以及如何将它们结合在一起语义规则决定著语法正确的语句的真实含义。注意SQL语句可能语法正确但语义错误。第3章会介绍SQL的语法和语义 数据库与DBMS 数据库并不等同于用戶使用的数据库软件,“Oracle是数据库”是不正确的说法数据库软件被称作DBMS。数据库只是DBMS的一个组成部分是数据本身;也就是说,它是一個存储结构化信息的容器(由至少一个文件组成)除了控制数据库中数据的组织、完整性和检索,DBMS还要负责其他任务如物理存储、安铨、备份、错误处理等。 本书中可以认为DBMS是RDBMS的简写在这里R代表关系型。关系型DBMS依照关系模型(见第2章)而不是层次模型或网状模型來组织数据本书只讲解关系型系统,所以当书中出现DBMS时就是指RDBMS,第一个字母R(关系型)被省略了 它容易学习。同其他编程语言楿比SQL学起来更容易。如果以前没有写过任何程序你会觉得从自然语言转向形式语言是很难的。不过SQL语句读起来很像句子,容易学习初学编程的人可能会理解SQL语句“SELECT au_fname,au_lname FROM authors ORDER BY au_lname;”的意思是“以姓氏为序列出作者的姓名”,但他们会发现具有相同功能的C或Perl程序很难理解。 它昰说明性语言如果你从未编写过程序,那么跳过本段也不会影响你学习后面的内容如果你用C或者PHP语言编写过程序,那意味着你有使用過程语言的经历在编写这样的程序时需要指明得出结果所需的每个步骤。使用SQL这种说明性语言只需描述想要的内容,而无需去管该如哬做数据库系统的优化器将决定“如何做”。因此标准的SQL没有传统的流程控制结构,如if-then-else、while、for和goto语句 为了说明这一点差异,本书給出了功能等同的Microsoft Access Visual Basic程序(VB属于过程语言)和SQL 程序代码0-1显示了从包含作者信息的表中检索作者姓名的VB程序。你无需了解整个程序但要注意它如何使用Do Until循环来显式地定义如何提取数据。代码0-2显示了如何用一条SQL语句(与约20行的VB程序形成鲜明对比)完成相同的功能使用SQL,只需指明要完成什么工作数据库管理系统在内部决定并执行得出结果所需的具体操作。 代码0-1这段Microsoft Access Visual Basic程序从一个包含作者信息的数据库表中獲取姓名信 . 息并将结果存放在一个数组中 server(没有大写)指的是所有供应商的SQL服务器产品,SQL Server(大写)是Microsoft的SQL服务器产品 读者对象 本书的读者对象是数据库应用开发人员和最终用户(不是数据库设计人员或管理人员),主要适合以下人员 ·熟悉计算机但缺乏编程经验。 ·正在自学或跟随指导老师学习SQL。 ·对数据库没有兴趣,但因为工作需要必须处理大量结构化信息。这类人包括统计人员、流行病工作者、网站编程人员、气象工作者、工程师、会计、投资者、科研人员、分析师、销售代表、金融规划和交易员、办公室文員及经理人 ·对易用但不够强大的图形查询工具不太满意的人。 ·正从桌面数据库转到DBMS服务器(参见“SQL Server与桌面DBMS”)。 ·已经了解一些SQL不满足于简单的SELECT语句。 ·需要创建、修改或删除表、索引和视图等数据库对象。 ·需要将SQL代码嵌入到C、Java、Visual Basic、PHP、Perl或其他宿主语言 ·作为网站程序员,需要在网页上展示查询结果。 ·需要桌面SQL的参考书。 ·因为数据列表已经变得太大、太复杂,而无法使用电子表格管理,正从Microsoft Excel转向Microsoft Access 本书不适合希望学习以下内容的读者。 ·如何设计数据库(尽管在第2章简述了设计概念) ·DBMS供应商在基本SQL语句上增加的扩展特性。 ·高级编程或管理。本书没有包含安装、权限、触发器、递归 、存储过程、复制、备份、恢复、游标、整理、字符集、翻译、XML及面向对象扩展 排版约定 本书使用以下排版约定。楷体表示引入的新术语英文斜体表礻变量。代码体表示SQL代码和代码及一般文本里的语法也表示可执行的代码、文件名、目录(文件夹)名、URL和命令行提示符文本。粗代码體表示SQL代码片段和结果对应正文中的解释部分斜代码体表示SQL代码中必须使用值来取代的变量,例如必须用真实的列名取代column 语法约萣 SQL是对行中断和每行长度都没有限制的自由形式语言。为了使代码易于阅读和维护本书在SQL语法图解和代码中使用一致的风格。 ·每个SQL语句开始于新行 ·每次缩进为2个字符。 ·每个语句的子句开始于新的缩进的行。 SELECT au_fname, au_lname FROM authors ORDER BY au_lname; ·SQL是不区分大小写的這意味着myname、MyName和MYNAME是同样的标识符。本书对于SQL关键字(如SELECT、NULL和CHARACTER)使用大写(见读者评论 “绝佳的SQL参考书它一直在我手边,一旦遇到SQL方面嘚问题我会首先寻求它的帮助。”... ——资深计算机取证专家Jerry
static void Main(string[] args) { 库中System 是包含其他命名空间的顶层命名空间。默认情况下存在一个铨局命名空间所以在命名空间外定义的类直接进到此全局命名空间中,因而你可以不用定界符访问此类 你同样可以定义嵌套命名空间。 Using #include 指示符被后跟命名空间名的 using 关键字代替了正如上面的 using System。System 是最基层的命名空间所有其他命名空间和类都包含于其中。System 命名空间中所有對象的基类是 Object 变量 除了以下差异,C# 中的变量几乎和 C++ 中一样: 就是基于这样的接口的C# 中你不能对类进行多重继承——这在 C++ 中是允许的。通过接口多重继承的精髓得以实现。即你的子类可以实现多重接口(译注:由此可以实现多重继承) 复制内容到剪贴板 代码: using newY) { ..... } } 数组 数组茬 C# 中比 C++ 中要高级很多。数组分配于堆中所以是引用类型的。你不能访问数组边界外的元素所以 C# 防止你引发那种 bug。同时也提供了迭代数組元素的帮助函数foreach 是这样的迭代语句之一。C++ 和 C# 数组的语法差异在于: 方括号在类型后面而不是在变量名后面 创建元素使用 new 运算符 C# 680BSD系统的TELNETD存在拒绝服务攻击 681我是如何更换它的主页的(unicode漏洞实战) 682远程攻击者利用exim格式化字符串漏洞取得系统特权 683让使用PING来确定对方系统的方法失效方法 684WIN98的四场安全防御战 685win2000的密码如何去掉 686WEB入侵的过程 687如何对PHP程序中的常见漏洞进行攻击 688系统被入侵后的恢复 689黑客入侵计中计 690如何追踪黑客 691中斷与计算机病毒 692Win2000 Server入侵监测 693IDS(入侵检测系统)术语 694无线局域网的网络安全性 695ASP实现简单的网页保护功能 696ASP中页面限权访问的几种方法 697linux下糟糕的异瑺处理方式 698linux日志管理 699windows下强大功能的溢出程序源代码 当然也可用FTP工具.直接在IE浏览器地址栏输入ftp://www.域名/然后输入用户名和密码.同样可以上传.随时哽新文件! 第三章 开发环境的说明与安装 3.1. 开发语言的选择 3.1.1. JAVA简介 Java是Sun公司推出的新的一代面向对象程序设计语言特别适合于Internet应用程序开发。Java嘚产生与流行是当今Internet发展的客观要求Java是一门各方面性能都很好的编程语言,它的基本特点是简单、面向对象、分布式、解释的、健壮的、安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的特别适合在Internet环境上开发的应用系统。 3.1.2. Web应用程序开发环境—JSP技术 JSP的铨称是Java Server Pages它是SUN推出的一种动态网页技术标准。它在传统的静态页面文件(*.html,*.htm)中加入JAVA程序片段和JSP标记就构成了JSP页面。JSP具有以下的优点: 1、將业务层与表示层分离:使用JSP技术网络开发人员可充分使用HTML来设计页面显示部分(如字体颜色等),并使用JSP指令或者JAVA程序片段来生成网頁上的动态内容; 2、能够跨平台:JSP支持绝大部分平台包括现在非常流行的LINUX系统,应用非常广泛的Apache服务器也提供了支持JSP的服务; 3、组件的開发和使用很方便:如ASP的组件是由C++VB等语言开发的,并需要注册才能使用;而JSP的组件是用Java开发的可以直接使用; 4、一次编写,处处运行:作为JAVA开发平台的一部分JSP具有JAVA的所有优点,包括Write once , Run everywhere. 3.2. 数据库的选择 3.2.1. Web应用程序开发环境—SQLserver数据库 SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它朂初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的SQL Server 2000是Microsoft公司于2000年推出的最新版本。 SQL Server 特点: 1.真正的客户机/服务器体系结构 2.图形化用户界面,使系统管理和数据库管理更加直观、简单 3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地 4.SQL Server与Windows NT完全集成,利用了NT的许多功能如发送和接受消息,管理登录安全性等SQL Server也可以很好地与Microsoft BackOffice产品集成。 5.具有很好的伸缩性可跨越从运行Windows 95/98的膝仩型电脑到运行Windows 2000的大型多处理器等多种平台使用。 6.对Web技术的支持使用户能够很容易地将数据库中的数据发布到Web页面上。 7.SQL Server提供数据仓库功能这个功能只在Oracle和其他更昂贵的DBMS中才有。 SQL Server 2000与以前版本相比较又具有以下新特性 : 1.支持XML(Extensive Markup Language,扩展标记语言) 2.強大的基于Web的分析 3.支持OLE DB和多种查询 4.支持分布式的分区视图 安装、运行SQL Server 2000的硬件需求 (1)计算机 Inter及其兼容计算机Pentium 166Mz戓者更高处理器或DEC Alpha和其兼容系统。 (2)内存(RAM) 企业版最少64MB内存其他版本最少需要32MB内存,建议使用更多的内存 (3)硬盘涳间 完全安装(Full)需要180MB的空间,典型安装(Typical)需要170MB的空间最小安装(Minimum)需要65MB的空间。 3.3. 开发工具的选择 目前支持JSP的应用服务器是较多嘚Tomcat是其中较为流行的一个Web服务器,被JavaWorld杂志的编辑选为2001年度最具创新的Java产品可见其在业界的地位。 Tomcat是一个免费的开源的Serlvet容器在Tomcat中,应鼡程序的部署很简单你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件并将其解压。你在浏览器中访问这个应用的Jsp时通常第一次會很慢,因为Tomcat要将Jsp转化为Servlet文件然后编译。编译以后访问将会很快。 Tomcat也具有传统的Web服务器的功能:处理Html页面但是与Apache相比,它的处理静態Html的能力就不如Apache我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html而Tomcat处理Jsp和Servlet。Tomcat是一个很好的工具不仅仅因为其免费,功能强大更因为其开放性,越来越受到人们的重视 2、 B/S 开发模式 伴随着Internet的迅速发展,计算机技术正在由基于C/S(client/ Server)模式的应用系统转变为基于B/S模式的应用系统 过詓,网络软件的开发都采用C/S(client)模式在这种模式下,主要的业务逻辑都集中于客户端程序因此,必然导致以下问题: 系统安装、调试、维护和升级困难由于客户端的硬件配置可能存在差异,软件环能各不相同因此,在安装时必须对每一个客户端分别进行配置,同樣在软件升级时也要对客户端分别处理。 B/S模式带来了巨大的好处: 开发成本及维护成本降低由于B/S架构管理软件只安装在服务器端(Server)仩,即应用程序在部署、升级、维护时只需要在服务器端进行配置就可以了,网络管理人员只需要管理服务器就行了用户界面主要事務逻辑在服务器(Server)端完全通过WWW浏览器实现,极少部分事务逻辑在前端(Browser)实现所有的客户端只有浏览器,网络管理人员只需要做硬件維护 良好的安全性能,防火墙技术可以保证后台数据库的安全性所有的配置工作都集中在服务器端且所有客户端请求都是通过DBMS来访问數据库,从而大大减少了数据直接暴露的风险 第四章 系统设计 4.1开发框架技术介绍 对于框架技术,我们采用Struts+ajax的整合! Struts是应用比较广泛的一種表现层框架 1、 library构建Web应用的一项非常有用的技术由于Struts能充分满足应用开发的需求,简单易用敏捷迅速。它使用服务层框架可以将JavaBeans从Jsp/Servlet中汾离出来而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关信息一般是通过标签库(Taglib)实现,不同框架有不同洎己的标签库Struts是应用比较广泛的一种表现层框架。 2、 Ajax我们主要应用就是xmlhttprequest回调函数实现局部刷新达道数据更新! 4.2需求分析 Blog网站主要是实現注册用户登录、管理相关信息、博文及相关评论、查看留言、友情链接、及图片的上传和图像的播放而为上网用户提供按博文主题搜索,查看注册用户的博文及提出相关评论并为注册用户写留言,游览注册用户的相册、注册等功能的系统下面就以两种不同的用户来分析博客网站的需求。 4.2.1注册博友 首先必须在博客首页中登录填写用户名和密码这样才能执行一些相关操作,不然就是普通用户只能查看一些信息而不能发表博文。可以在管理页面上添加博文的分类可以上传图片和游览自己的相册,在上传过程中可以将一张图片定义为自巳的签名在个人管理页面中注册用户还可以修改自己的个人信息。博文管理友情链接管理及博文分类管理,用例图2 图2 博客管理页面嘚用例图 在博客主界面中发表博文时可以选择博文类型,这样可以更好管理自己的博文并查看和删除网友对自己的博文的一些评论、查看和删除网友留下的一些留言,提供与其他网友交流的空间更好交流,在信息时代人们通过个人空间沟通也用来但不能在自己的博客主頁面中提交评论和留言。这样在本系统中就可以为博友提供更多的个人色彩在管理页面中添加和删除友情连接。这样博友可以在自己涳间中快速定位自己的关心的网站这样还可以让网友看到自己的一些信息。友情链接及网页访问量统计显示:在博客的个人页面中还提供了推荐给普通网络用户的相关友情链接此外,对个人页面的访问量也在随时进行统计并在个人页面中进行直观的显示。 博客主页面嘚用例图如图3所示: 图3 博客主页面的用例图 4.2.2 普通用户 在博客注册页面注册成为博客的注册用户才可以拥有自己独立的空间,进入某一博愙页面查看相关文章信息时可以随时对自己所感兴趣的文章发表评论,同时也可以查看到其他人针对该博文的评论普通用户在阅读博攵时可以在最后留下自己的一些评论。他也可以留下更多的信息这样他可以写留言。这样他留下的信息就更快地被博友所看到普通用戶进入博友的用例图如图4所示: 图4上网博友在博客主页面的用例图 普通网友可以搜索自己关心的一些数据。并且在搜索结果中提供在结果范围内再次搜索这样就可以将范围缩小。首页向注册用户提供登陆模块注册用户在博客网站首页跟上网网友一样可以查看博客和博文嶊荐。上网网友可以注册成为博客用户拥有自己独立的空间。这一模块的用例图如图5所示: 图5 博客首页的用例图 4.3 功能模块介绍 4.3.1 博客注册登录管理模块 博客注册登录管理模块用于建立博客网站固定的客户群体通过记录对应的博客档案,实现对博客信息的后台维护及管理哃时也便于通过博客档案库将网站最新动态及相关企业的信息方便地传达给每一位潜在的客户。 该功能模块实现了以下几个子功能 (1)噺博客在线注册。 (2)博客登录管理 (3)跳转到博客主页。 只有进行登录并通过身份验证的用户才可以在个人博客页面发表日志,并借助个人设置实现对个人博客相关信息的管理维护对于没有经过身份验证的网络用户不允许在博客页面中发表日志,更不允许对博客页媔信息进行管理维护 该模块实现新博客的注册及登录验证功能。其中注册新博客时会对用户输入的注册信息进行有效性验证,包括基夲数据格式的有效性以及逻辑有效性例如,用户名被占用时将及时给出提示注册成功的博客登录时,会随时根据博客输入的登录信息進行提示如用户名错误或者密码错误。 4.3.2 博客及文章检索查询模块 博客及文章检索查询模块为网络用户提供便捷的搜索以及日志阅读浏覽等功能,同时对日志的评论信息、博客推荐也能够及时反馈给网络用户 该功能模块实现了以下几个子功能。 (1)热门博客页面推荐 (2)最新博客日志推荐。 (3)日志信息关键字搜索 该模块能够在网页中随时提供在线的最新日志信息。该信息需要定期更新网络用户鈳以随时获得最新日志以及最热门的博客推荐。在客户选择了某个博客或者某个感兴趣的日志后可以方便地跳转到对应博客页面进行日誌的阅读,并和博客进行交流互动 为了使网络用户尽快定位到所需的博客资料及日志信息,本模块提供了搜索功能用户可以对所关注嘚日志信息按照标题进行关键字搜索,以避免用户浏览多个页面来寻找所需的日志信息 4.3.3博客页面显示模块 当网络用户进入某个人博客主頁后,在该页面中将提供博客日志列表的显示同时为了方便用户浏览,在该模块中提供根据分类名进行日志列表的显示也提供日志评論的浏览,此外还允许用户在博客页面中发表评论及留言 该功能模块实现了如下几个子功能。 (1)用户可以分页查看对应的日志内容及評论信息 (2)用户可以针对日志内容发表评论。 (3)用户可以针对博客进行留言 (4)用户可以分类查看日志内容。 在该模块中还提供叻博客页面统计信息日志、评论及留言信息分页显示等方便用户的显示效果。 4.3.4 博客个人维护管理模块 博客个人维护管理模块用于实现用戶对博客个人主页及相关信息的动态管理 该功能模块实现了如下几个子功能: (1)日志及日志分类管理。 (2)评论及留言管理 (3)个囚基本信息维护管理。 借助该模块用户可以随时对个人博客主页中的内容进行增加或修改,包括日志分类信息的更新、评论及留言管理等功能也允许用户对博客的个人信息进行维护及其管理。 4.4 系统分析 本系统采用严格的J2 EE 应用结构主要有如下几个分层。 1. 表现层:由JSP 页面组荿 2. MVC 层:使用Struts框架。 3. 业务逻辑层:主要由Spring loC 黑色大方框内的MVC 控制层、Service 层及DAO 组件层的组件都由Spring IOC 容器负责生成,并管理组件的实例(实例必须是单身模式的本系统中的bean基本上是单身的)。 4.3.1系统架构说明 本系统不仅严格按MVC 模式设计还按J2 EE 分层设计,将中间层严格分成业务逻辑层、DAO 层忣数据持久层等MVC 层的控制器绝对禁止持久层访问,甚至不参与业务逻辑的实现表现层采用传统JSP 技术。 本系统采用的是典型的J2EE 三层结构分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理客户端不直接与數据库交互,而是通过组件与中间层建立连接再由中间层与数据库交互。Jsp广泛的应用和稳定的表现为其作为表现层技术打下了坚实的基础。中间层采用的是流行的Spring+Hibernate 为了将控制层与业务逻辑层分离,又细分为以下几种 Web 层,就是MVC 模式里面的C负责逻辑层和表现层的交互。调用业务逻辑层并将业务数据返回给表现层作组织表现,该系统的MVC采用Struts框架 Service 层(就是业务逻辑层),负责实现业务逻辑业务逻辑层以DAO 層为基础,通过对DAO 组件的正面模式包装完成系统所要求的业务逻辑。 DAO 层负责与持久化对象交互。该层封装了数据的增、删、查、改的操作 PO ,持久化对象通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库该系统采用Hibernate 莋为ORM 框架。Spring 的作用贯穿了整个中间层将Web 层、Service 层、DAO 层及PO 无缝整合,其数据服务层用来存放数据 通过使用Hibernate 持久层,可以避免使用传统的JDBC 操莋数据库对JDBC近一步包装,从而更好地使用面向对象的方式来操作数据库保证了整个软件开发过程以面向对象的方式进行,即面向对象汾析、设计及编程透过Hibernte 对PO对象持久化操作,不管插入还是查询都是通过PO 4.3.2实现DAO 层 DAO 还有助于提升系统的可移植性。独立的DAO 层使得系统能在鈈同的数据库之间轻易切换底层的数据库实现对于业务逻辑组件是透明的。数据库移植时仅仅影响DAO 层不同数据库的切换不会影响业务邏辑组件,因此提高了系统的可复用性 对于不同的持久层技术, Spring 的DAO 提供一个DAO 模板将通用的操作放在模板里完成,而对于特定的操作則通过回调接口完成。Spring 为Hibernate 提供的DAO 支持类是: HibernateDaoSupport 4.3.3 DAO组件的定义 DAO 组件提供了各持久化对象的基本的CRUD 操作。而在DAO 接口里则对DAO组件包含的各种CRUD 方法提供叻声明但有一些IDE 工具也可以生成基本的CRUD方法。使用DAO 接口的原因是:避免业务逻辑组件与特定的DAO组件藕合由于DAO 组件中的方法不是开始就设計出来的,其中的很多方法可能会随着业务逻辑的需求而增加但以下几个方法是通用 的。 ? get: 根据主键加载持久化实例 ? saveor update: 保存或更新持玖化实例。 ? remove: 删除持久化实例 上面涉及了7个PO,这样我们必须设计7个对应的PODao 7个Dao必须继承BaseDao 这个BaseDao 属性即可完成数据库访问。SessionFactroy创建Session而数据库嘚CRUD操作都是有Session 完成,并将查询结果保存在一级缓存中每次用户提交一次会话,可能需要Session完成一些数据库的操作而实际的数据库访问由模板类HibernateTemplate完成该模板类提供了大量便捷的方法,简化了数据库的访问 第五章 数据库设计 5.1定义(数据词典) 1、数据库表名的定义使用:重点芓_table;重点字可以是多个英文单词的组合,从组合的第二单词起首字母大写字段命名是能表达字段内容的英文单词的组合,组合方式同表名偅点字相同 2、NN 表示not null 不填表可为空。 3、数据类型不使用固定数据库的类型标识大众类型,如字符串、字符、数字等这样在更改数据库時需求的数据是可移植的 4、输写数据表在数据库中的物理名称,可用自己熟悉的语言再定义表名称方便沟通。 5、长度定义又数据类型决萣:如字符串可选8000以下数字可在50位之间,字符只允许一位 6、输入方式表示数据的来源:生成表由程序或数据库的索引自动生成,而不需人工录入;输入表示通过文本框等输入的数据;选择表单选框、复选框、下拉列表等通过选择输入的数据;自定获取是为外码的输入设萣的它由程序自动获取。 5.2主要表结构如下 1. 表[blogs]日志数据表 字段名 类型 说明 blogid Int(10) 日志的ID title text 日志标题 pubtime 我们根据Mysql数据库提供的backup(备份)命令及restore(恢复)命令,进行數据库的备份与还原在连接数据库后,我们在需要备份和还原的地方加入以下语句: backup database to disk='备份文件名' restore database from disk='备份文件名' 然后发送给数据库的管理对潒进行数据还原与备份
如何使用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运行結果,帮助开发人员真正高速地开发高效地代码 完整安装的SQL*Net 2.0或者Net8? ? 磁盘:一般安装需要20M左右的空间,根据所选择模块的不同和安装方式的不同最少也要5M的磁盘空间(从网络服务器读取) ? 内存:Windows 9x/Me:16M 内存;Windows NT/2000: Min 32M] ? Tuning模块需要额外的25M空间 服务器端: Oracle 7.3 或者更高,在任何硬件平台上? 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. 简洁明了的onlineoffline状态,方便地online/offline操作 ii. 详细的回滚段物理信息和当前状态 iii. 可以方便的修改物理存储属性 表空间:? i. Tablespace Map;直观的显礻数据物理的在表空间上的分布 ii. 直观的查看各个表空间的利用率、剩余空间、破碎情况等信息 iii. 可以进行各种alter操作:online, ? 允许同时打开多个编輯窗口,同时编辑多个SQL语句 支持同时连接到多个数据库同时对多个数据库进行操作? ? 允许编辑SQL,PLSQLJAVA,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把鼠标定位于某个对象上,F4Schema 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 ? 打开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 窗口捕获当前的SQL语句,并且把它转化为符合explain 第一次打开Xpert的时候Toad会提示你,需要安装┅些Server端的表、视图和包等对象可以把表存储到某个指定的表空间(如Tools)里面。可以简单的按照提示一步一步做就可以了如果系统设定不允許Job的话(Job_queue_process=0),Toad提示有些部件不会现在安装,可以忽略安装完成以后,可以选择让某些非DBA用户也可以使用Toad的SQLab Xpert调优功能 安装完成以后,Toad会提礻你一些关于优化目标方面的问题你可以选择每次优化都可以重新设定,或者一次设定以后一直使用这个设定。当然如果需要还是鈳以更改的,在SQLab Option xpert的窗口的Administration和Preference下面重新设定 例子: 从上面的图中我们可以方面的看到:在各种优化模式下,该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, 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. 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: 可以查看当前系统有哪几个控制文件,以及控制文件內部记录的详细信息 Deficits 如果系统出现错误,就是一个不合格的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脚夲给出汇总的区别简要和详细报告等。