2006年10月26日

SQL*PLUS中,当你成功的执行一个DML语句,比如 SELECT , DELETE , UPDATE , INSERT,你 可以通过SQL优化器和语句的执行统计自动的获得一份报告。这份报告对于DML语句的性能监控和调优都是很有用处的。这份报告就是本文要讲的AUTOTRACE 报告。

 

配置AUTOTRACE报告(Configuring the AUTOTRACE Report)

你可以通过以下的AUTOTRACE系统变量来配置AUTOTRACE报告. 如下表:

Table  AUTOTRACE Settings

AUTOTRACE Setting

Result

SET AUTOTRACE OFF

不能获得 AUTOTRACE报告 . 这是默认的.

SET AUTOTRACE ON EXPLAIN

仅仅显示优化器执行计划的 AUTOTRACE 报告

SET AUTOTRACE ON STATISTICS

仅仅显示SQL语句执行的统计结果的 AUTOTRACE 报告

SET AUTOTRACE ON

包括上面两项内容的AUTOTRACE报告

SET AUTOTRACE TRACEONLY

SET AUTOTRACE ON类似 ,所有的统计和数据都在,但不可以打印

 

其实,平时我们应该较多的就是SET AUTOTRACE ON 、SET AUTOTRACE OFF,谁会在乎多看一点AUTOTRACE报告呢! J

安装AUTOTRACE报告(Setups Required for the AUTOTRACE Report)

要用这个特性,用户必须被赋予PLUSTRACE角色,而PLUSTRACE角色需要DBA来赋予。另外,该用户必须创建PLAN_TABLE表。

I.                 首先创建PLUSTRACE角色并且赋给DBA:

				CONNECT sys/sys’s password AS SYSDBA 
		
				@$ORACLE_HOME/sqlplus/admin/plustrce.sql
		

II.              赋权限给用户

				CONNECT / AS SYSDBA 
		

GRANT PLUSTRACE TO USER(预赋权的用户名);

 

这样,就可以在该用户下设置AUTOTRACE报告的显示与否了。

 

AUTOTRACE报告中涉及到的两个方面的内容

I.              SQL语句的执行计划

执行计划就是SQL优化器执行语句的查询执行顺序,每一行的执行计划都会有个行号,这个行号是连续的

II.          SQL语句的数据库统计

数据库统计是服务器记录的执行当前的这条语句所需要的系统资源等,主要包括下表的内容

Database Statistic Name

Description

recursive calls

Number of recursive calls generated at both the user and system level. Oracle maintains tables used for internal processing. When Oracle needs to make a change to these tables, it internally generates an internal SQL statement, which in turn generates a recursive call.

db block gets

Number of times a CURRENT block was requested.

consistent gets

Number of times a consistent read was requested for a block.

physical reads

Total number of data blocks read from disk. This number equals the value of "physical reads direct" plus all reads into buffer cache.

redo size

Total amount of redo generated in bytes.

bytes sent via SQL*Net to client

Total number of bytes sent to the client from the foreground processes.

bytes received via SQL*Net from client

Total number of bytes received from the client over Oracle Net.

SQL*Net roundtrips to/from client

Total number of Oracle Net messages sent to and received from the client.

sorts (memory)

Number of sort operations that were performed completely in memory and did not require any disk writes.

sorts (disk)

Number of sort operations that required at least one disk write.

rows processed

Number of rows processed during the operation.

 

简单使用的例子:

SQL> show user

USER is "SYS"

(注:当前是sysdba用户)

(注:创建PLUSTRACE角色并且赋给DBA)

SQL> start $ORACLE_HOME/sqlplus/admin/plustrce.sql

(注:start 等价于@)

SQL> drop role plustrace;

drop role plustrace

          *

ERROR at line 1:

ORA-01919: role 'PLUSTRACE' does not exist

 

 

SQL> create role plustrace;

 

Role created.

 

SQL>

SQL> grant select on v_$sesstat to plustrace;

 

Grant succeeded.

 

SQL> grant select on v_$statname to plustrace;

 

Grant succeeded.

SQL>

 

SQL> grant select on v_$session to plustrace;

 

Grant succeeded.

 

SQL> grant plustrace to dba with admin option;

 

Grant succeeded.

 

SQL>

SQL> set echo off

(注:赋角色plustrace给所需用户,这里用户是bill)

SQL> grant plustrace to bill;

 

Grant succeeded.

(注:接下来,用bill用户连接,测试AUTOTRACE)

SQL> connect bill/bill’s password;

Connected.

SQL> show user

USER is "BILL"

(注:为了看的清楚些,建立一个测试的表test,然后察看AUTOTRACE报告)

SQL>  create table test(id number(1));

 

Table created.

 

SQL> insert into test values(1);

 

1 row created.

 

SQL> /

 

1 row created.

 

SQL> /

 

1 row created.

 

SQL> /

 

1 row created.

 

SQL> commit;

 

Commit complete.

SQL> select * from test;

 

        ID

----------

         1

         1

         1

         1

 

SQL> set AUTOTRACE on

SQL> select * from test;

 

        ID

----------

         1

         1

         1

         1

 

Execution Plan

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

   0      SELECT STATEMENT Optimizer=CHOOSE

   1    0   TABLE ACCESS (FULL) OF 'TEST'

 

 

 

 

Statistics

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

          0  recursive calls

          0  db block gets

          4  consistent gets

          0  physical reads

          0  redo size

        547  bytes sent via SQL*Net to client

        655  bytes received via SQL*Net from client

          2  SQL*Net roundtrips to/from client

          0  sorts (memory)

          0  sorts (disk)

4         rows processed

 

上面我们就可以看到,当你设置了set AUTOTRACE on后,执行相应的DML语句,就会有相应的AUTOTRACE报告出现了。当然,我们的这种设置是session级别的。这样,我们就可以根据AUTOTRACE报告对我们执行的DML语句进行分析和调优了!

转自:http://dev.csdn.net/develop/article/23/23430.shtm

posted @ 2006-10-26 14:00 幸福乡 阅读(328) | 评论 (1)编辑 收藏


2006年10月17日

SOA 是一种 IT 体系结构样式,支持将您的业务作为链接服务或可重复业务任务进行集成,可在需要时通过网络访问这些服务和任务。这个网络可能完全包含在您的公司总部内,也可能分散于各地且采用不同的技术,通过对来自纽约、伦敦和香港的服务进行组合,可让最终用户感觉似乎这些服务就安装在本地桌面上一样。需要时,这些服务可以将自己组装为按需应用程序——即相互连接的服务提供者和使用者集合,彼此结合以完成特定业务任务,使您的业务能够适应不断变化的情况和需求(在有些情况下,甚至不需要人工干预)。

这些服务是自包含的,具有定义良好的接口,允许这些服务的用户——称为客户机或使用者——了解如何与其进行交互。从技术角度而言,SOA 带来了“松散耦合”的应用程序组件,在此类组件中,代码不一定绑定到某个特定的数据库(甚至不一定绑定到特定的基础设施)。正是得益于这个松散耦合特性,才使得能够将服务组合为各种应用程序。这样还大幅度提高了代码重用率,可以在增加功能的同时减少工作量。由于服务和访问服务的客户机并未彼此绑定,因此可以完全替换用于处理订单的服务,下订单的客户机-服务将永远不会知道这个更改。所有交互都是基于“服务契约”进行的;服务契约用于定义服务提供者和客户机之间的交互。通常,您将通过创建“基于消息的”系统来实现此目标。

从业务的角度来说,面向服务的体系结构的重点在于开发能帮助您完成业务任务的技术,而不是通过技术约束来规定您的行动。例如,销售过程(制造、运输和收到货款)可能会涉及数十个步骤和若干不同的数据库和计算机系统。但就其实质而言,此过程包含一系列人工活动,例如:

  • 销售人员找到潜在客户
  • 客户订购产品
  • 生产部门制造产品
  • 生产部门发出产品
  • 收款部门开具产品帐单
  • 客户支付产品货款

面向服务的体系结构基于这些实际活动或业务服务进行组织,而不是形成公司所维护的不同的信息竖井 (Silo)。

通过实现 SOA,可以带来大量好处,包括以下各个方面:

  • 更高的业务和 IT 一致性
  • 基于组件的系统
  • 松散耦合的组件和系统
  • 基于网络的基础设施,允许分散于各地且采用不同技术的资源协同工作
  • 动态构建的按需应用程序
  • 更高的代码重用率
  • 更好地标准化整个企业内的流程
  • 更易于集中企业控制

原文地址http://www-128.ibm.com/developerworks/cn/webservices/newto/#1

posted @ 2006-10-17 13:53 幸福乡 阅读(309) | 评论 (1)编辑 收藏


2006年10月12日

 

我们这里说说四种浏览器对 document.body 的 clientHeight、offsetHeight 和 scrollHeight 的解释。

这四种浏览器分别为IE(Internet Explorer)、NS(Netscape)、Opera、FF(FireFox)。

clientHeight
大家对 clientHeight 都没有什么异议,都认为是内容可视区域的高度,也就是说页面浏览器中可以看到内容的这个区域的高度,一般是最后一个工具条以下到状态栏以上的这个区域,与页面内容无关。

offsetHeight
IE、Opera 认为 offsetHeight = clientHeight + 滚动条 + 边框。
NS、FF 认为 offsetHeight 是网页内容实际高度,可以小于 clientHeight。

scrollHeight
IE、Opera 认为 scrollHeight 是网页内容实际高度,可以小于 clientHeight。
NS、FF 认为 scrollHeight 是网页内容高度,不过最小值是 clientHeight。

简单地说
clientHeight 就是透过浏览器看内容的这个区域高度。
NS、FF 认为 offsetHeight 和 scrollHeight 都是网页内容高度,只不过当网页内容高度小于等于 clientHeight 时,scrollHeight 的值是 clientHeight,而 offsetHeight 可以小于 clientHeight。
IE、Opera 认为 offsetHeight 是可视区域 clientHeight 滚动条加边框。scrollHeight 则是网页内容实际高度。

同理
clientWidth、offsetWidth 和 scrollWidth 的解释与上面相同,只是把高度换成宽度即可。

但是
FF 在不同的 DOCTYPE 中对 clientHeight 的解释不同, xhtml 1 trasitional 中则不是如上解释的。其它浏览器则不存在此问题。

原文出处:http://www.bjcan.com/hengxing/readlou.asp?id=1606

posted @ 2006-10-12 12:48 幸福乡 阅读(259) | 评论 (0)编辑 收藏


仅列出标题  

posts - 3, comments - 2, trackbacks - 0, articles - 0

Copyright © 幸福乡