仓酷云

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

[学习教程] MSSQL网页编程之利用跟踪事务10046

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:40:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
这类操作的执行过程是,1)按照新的表定义建立一个临时表tmpa,2)将原表数据拷贝到临时表,3)将原始表改名tmpb,4)将tmpa改名为原表名,5)将tmpb删除。
良多时分,对数据库举行功能诊断可使用SQL跟踪的办法,把一些信息纪录在trace文件里今后剖析。一样平常情形下我们能够经由过程初始化参数SQL_TRACE=TRUE来设置SQL跟踪。















我们也能够经由过程设置10046事务来举行SQL跟踪,而且能够设置分歧的跟踪级别,比利用SQL_TRACE取得更多的信息。















Level0停用SQL跟踪,相称于SQL_TRACE=FALSE







Level1尺度SQL跟踪,相称于SQL_TRACE=TRUE







Level4在level1的基本上增添绑定变量的信息







Level8在level1的基本上增添守候事务的信息







Level12在level1的基本上增添绑定变量和守候事务的信息















10046事务不仅能够跟踪用户会话(trace文件位于USER_DUMP_DEST),也能够跟踪background历程(trace文件位于BACKGROUND_DUMP_DEST)。trace文件的巨细决意于4个要素:跟踪级别,跟踪时长,会话的举动级别和MAX_DUMP_FILE_SIZE参数。















启用跟踪事务10046















1.在全局设置















修正初始化参数







EVENT="10046tracenamecontextforever,level8"















2.在以后session设置















altersessionsetevents10046tracenamecontextforever,level8;







altersessionsetevents10046tracenamecontextoff;















3.对其他用户session设置















起首取得要跟踪的session的sessionid和serialnumber







selectsid,serial#,usernamefromv$sessionwhereusername=TRACE_USERNAME;























execdbms_support.start_trace_in_session(sid=>1234,serial#=>56789,waits=>true,binds=>true);







execdbms_support.stop_trace_in_session(sid=>1234,serial#=>56789);















大概







execdbms_system.set_ev(1234,56789,10046,8,);







execdbms_system.set_ev(1234,56789,10046,0,);















大概







execdbms_monitor.session_trace_enable(session_id=>1234,serial_num=>56789,waits=>true,binds=>true);







execdbms_monitor.session_trace_disable(session_id=>1234,serial_num=>56789);















也能够经由过程利用oradebug工具来设置10046事务















起首经由过程V$PROCESS取得该session的osprocessid。







selects.username,p.spidos_process_id,p.pidoracle_process_id







fromv$sessions,v$processp







wheres.paddr=p.addrands.username=upper(TRACE_USERNAME);















oradebugsetospid12345;







oradebugunlimit;







oradebugevent10046tracenamecontextforever,level8;







oradebugevent10046tracenamecontextoff;















猎取跟踪文件















1.利用oradebug



SQL>oradebugsetmypid







Statementprocessed.







SQL>oradebugtracefile_name







/opt/oracle/product/9.2.0/rdbms/log/uxdb_ora_9183.trc















2.设置初始参数TRACEFILE_IDENTIFIER



altersessionsettracefile_identifier=MyTrace;







如许在天生的trace文件名中会包括有MyTrace字样







/opt/oracle/product/9.2.0/rdbms/log/uxdb_ora_9183_MyTrace.trc















3.经由过程SQL查询



selectd.value||/||lower(rtrim(i.instance,chr(0)))||_ora_||p.spid||.trctrace_file_name







from







(selectp.spid







fromsys.v$mystatm,sys.v$sessions,sys.v$processp







wherem.statistic#=1ands.sid=m.sidandp.addr=s.paddr)p,







(selectt.instancefromsys.v$threadt,sys.v$parameterv







wherev.name=threadand(v.value=0ort.thread#=to_number(v.value)))i,







(selectvaluefromsys.v$parameterwherename=user_dump_dest)d;



?/rdbms/log/uxdb_ora_9183.trc







检察以后session的跟踪级别







SQL>Setserveroutputon



SQL>declare



event_levelnumber;



begin



dbms_system.read_ev(10046,event_level);



dbms_output.put_line(to_char(event_level));



end;



/




优化的SQL查询算法,有效地提高查询速度
只想知道 该用户已被删除
沙发
发表于 2015-1-19 21:11:31 | 只看该作者
如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。
admin 该用户已被删除
板凳
发表于 2015-1-28 10:51:47 | 只看该作者
对递归类的树遍历很有帮助。个人感觉这个真是太棒了!阅读清晰,非常有时代感。
不帅 该用户已被删除
地板
发表于 2015-2-5 20:47:25 | 只看该作者
原来公司用过MYSQL自己也只是建个表写个SQL
变相怪杰 该用户已被删除
5#
发表于 2015-2-13 13:48:03 | 只看该作者
是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。
精灵巫婆 该用户已被删除
6#
发表于 2015-3-3 22:35:06 | 只看该作者
所以你总能得到相应的升级版本,来满足你的需求。
活着的死人 该用户已被删除
7#
发表于 2015-3-11 14:20:46 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
莫相离 该用户已被删除
8#
发表于 2015-3-18 23:00:52 | 只看该作者
个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。
第二个灵魂 该用户已被删除
9#
发表于 2015-3-26 20:22:22 | 只看该作者
如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-20 08:32

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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