仓酷云
标题:
MSSQL网站制作之在SQL*PLUS中使用AUTOTRACE REPORT
[打印本页]
作者:
飘灵儿
时间:
2015-1-16 22:30
标题:
MSSQL网站制作之在SQL*PLUS中使用AUTOTRACE REPORT
因此我们的方案中要构造这种逆操作。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
大侠们有推荐的书籍和学习方法写下吧。
作者:
仓酷云
时间:
2015-1-24 13:13
我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力
作者:
若天明
时间:
2015-2-1 15:31
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
作者:
冷月葬花魂
时间:
2015-2-21 00:07
这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。
作者:
飘灵儿
时间:
2015-3-6 19:16
入门没那么困难,精通没那么容易
作者:
老尸
时间:
2015-3-13 06:11
分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。
作者:
金色的骷髅
时间:
2015-3-20 14:58
连做梦都在想页面结构是怎么样的,绝非虚言
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2