仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 552|回复: 7
打印 上一主题 下一主题

[学习教程] MSSQL网站制作之在SQL*PLUS中使用AUTOTRACE REPORT

[复制链接]
飘灵儿 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:30:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
因此我们的方案中要构造这种逆操作。Event_type增加一种FlashBACK_EVENT。这类操作形式与Query_Event相同,都是简单的SQL语句,只是包含了将数据恢复的操作。
在SQL*PLUS中使用AUTOTRACEREPORT



刘颖博

工夫:2004-1-12

mail:liuyingbo@126.com,请斧正



转载请说明出处及作者





在SQL*PLUS中,当你乐成的实行一个DML语句,好比SELECT,DELETE,UPDATE,INSERT,你能够经由过程SQL优化器和语句的实行统计主动的取得一份呈报。这份呈报关于DML语句的功能监控和调优都是很有效处的。这份呈报就是本文要讲的AUTOTRACE呈报。



设置AUTOTRACE呈报(ConfiguringtheAUTOTRACEReport)

你能够经由过程以下的AUTOTRACE体系变量来设置AUTOTRACE呈报.以下表:
TableAUTOTRACESettings
AUTOTRACESetting

Result

SETAUTOTRACEOFF

不克不及取得AUTOTRACE呈报.这是默许的.

SETAUTOTRACEONEXPLAIN

仅仅显现优化器实行企图的AUTOTRACE呈报

SETAUTOTRACEONSTATISTICS

仅仅显现SQL语句实行的统计了局的AUTOTRACE呈报

SETAUTOTRACEON

包含下面两项内容的AUTOTRACE呈报

SETAUTOTRACETRACEONLY

与SETAUTOTRACEON相似,一切的统计和数据都在,但不成以打印



实在,平常我们应当较多的就是SETAUTOTRACEON、SETAUTOTRACEOFF,谁会在意多看一点AUTOTRACE呈报呢!J

安装AUTOTRACE呈报(SetupsRequiredfortheAUTOTRACEReport)

要用这个特征,用户必需被付与PLUSTRACE脚色,而PLUSTRACE脚色必要DBA来付与。别的,该用户必需创立PLAN_TABLE表。

I.起首创立PLUSTRACE脚色而且赋给DBA:

CONNECTsys/sys’spasswordASSYSDBA

@$ORACLE_HOME/sqlplus/admin/plustrce.sql

II.赋权限给用户

CONNECT/ASSYSDBA

GRANTPLUSTRACETOUSER(预赋权的用户名);



如许,就能够在该用户下设置AUTOTRACE呈报的显现与否了。



AUTOTRACE呈报中触及到的两个方面的内容

I.SQL语句的实行企图

实行企图就是SQL优化器实行语句的查询实行按次,每行的实行企图城市有个行号,这个行号是一连的

II.SQL语句的数据库统计

数据库统计是服务器纪录的实行以后的这条语句所必要的体系资本等,次要包含下表的内容

DatabaseStatisticName

Description

recursivecalls

Numberofrecursivecallsgeneratedatboththeuserandsystemlevel.Oraclemaintainstablesusedforinternalprocessing.WhenOracleneedstomakeachangetothesetables,itinternallygeneratesaninternalSQLstatement,whichinturngeneratesarecursivecall.

dbblockgets

NumberoftimesaCURRENTblockwasrequested.

consistentgets

Numberoftimesaconsistentreadwasrequestedforablock.

physicalreads

Totalnumberofdatablocksreadfromdisk.Thisnumberequalsthevalueof"physicalreadsdirect"plusallreadsintobuffercache.

redosize

Totalamountofredogeneratedinbytes.

bytessentviaSQL*Nettoclient

Totalnumberofbytessenttotheclientfromtheforegroundprocesses.

bytesreceivedviaSQL*Netfromclient

TotalnumberofbytesreceivedfromtheclientoverOracleNet.

SQL*Netroundtripsto/fromclient

TotalnumberofOracleNetmessagessenttoandreceivedfromtheclient.

sorts(memory)

Numberofsortoperationsthatwereperformedcompletelyinmemoryanddidnotrequireanydiskwrites.

sorts(disk)

Numberofsortoperationsthatrequiredatleastonediskwrite.

rowsprocessed

Numberofrowsprocessedduringtheoperation.



复杂利用的例子:

SQL>showuser

USERis"SYS"

(注:以后是sysdba用户)

(注:创立PLUSTRACE脚色而且赋给DBA)

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

(注:start等价于@)

SQL>droproleplustrace;

droproleplustrace

*

ERRORatline1:

ORA-01919:rolePLUSTRACEdoesnotexist





SQL>createroleplustrace;



Rolecreated.



SQL>

SQL>grantselectonv_$sesstattoplustrace;



Grantsucceeded.



SQL>grantselectonv_$statnametoplustrace;



Grantsucceeded.

SQL>



SQL>grantselectonv_$sessiontoplustrace;



Grantsucceeded.



SQL>grantplustracetodbawithadminoption;



Grantsucceeded.



SQL>

SQL>setechooff

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

SQL>grantplustracetobill;



Grantsucceeded.

(注:接上去,用bill用户毗连,测试AUTOTRACE)

SQL>connectbill/bill’spassword;

Connected.

SQL>showuser

USERis"BILL"

(注:为了看的分明些,创建一个测试的表test,然后观察AUTOTRACE呈报)

SQL>createtabletest(idnumber(1));



Tablecreated.



SQL>insertintotestvalues(1);



1rowcreated.



SQL>/



1rowcreated.



SQL>/



1rowcreated.



SQL>/



1rowcreated.



SQL>commit;



Commitcomplete.

SQL>select*fromtest;



ID

----------

1

1

1

1



SQL>setAUTOTRACEon

SQL>select*fromtest;



ID

----------

1

1

1

1



ExecutionPlan

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

0SELECTSTATEMENTOptimizer=CHOOSE

10TABLEACCESS(FULL)OFTEST









Statistics

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

0recursivecalls

0dbblockgets

4consistentgets

0physicalreads

0redosize

547bytessentviaSQL*Nettoclient

655bytesreceivedviaSQL*Netfromclient

2SQL*Netroundtripsto/fromclient

0sorts(memory)

0sorts(disk)

4rowsprocessed



下面我们就能够看到,当你设置了setAUTOTRACEon后,实行响应的DML语句,就会有响应的AUTOTRACE呈报呈现了。固然,我们的这类设置是session级其余。如许,我们就能够依据AUTOTRACE呈报对我们实行的DML语句举行剖析和调优了!



参考:

oracle的官方文档(otn.oracle.com)


对于update操作,只需要把event中的旧行和新行值对调即可。
兰色精灵 该用户已被删除
沙发
发表于 2015-1-19 13:27:51 | 只看该作者
大侠们有推荐的书籍和学习方法写下吧。
板凳
发表于 2015-1-24 13:13:13 | 只看该作者
我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力
若天明 该用户已被删除
地板
发表于 2015-2-1 15:31:35 | 只看该作者
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
冷月葬花魂 该用户已被删除
5#
发表于 2015-2-21 00:07:57 | 只看该作者
这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。
飘灵儿 该用户已被删除
6#
 楼主| 发表于 2015-3-6 19:16:31 | 只看该作者
入门没那么困难,精通没那么容易
老尸 该用户已被删除
7#
发表于 2015-3-13 06:11:24 | 只看该作者
分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。
金色的骷髅 该用户已被删除
8#
发表于 2015-3-20 14:58:24 | 只看该作者
连做梦都在想页面结构是怎么样的,绝非虚言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 05:17

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表