|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
平台即服务PaaS、基础设施即服务IaaS、软件即服务SaaS都是我们比较熟悉的MySQL学习教程,现在又出现了数据库即服务DBaaS,以基于云的方式存储结构化数据。oracle|历程在诊断数据库体系功能的过程当中,总会触及到跟踪效力低下的sql语句,如今就怎样跟踪sql语句来做一个复杂的总结。权做举一反三之用。
假如我们能够修正使用体系的源代码,则能够间接在程序中到场以下的语句:
1)altersessionsettimed_statistics=true;/*合用于Oracle7.3今后的版本*/
2)altersessionsetmax_dump_file_size=unlimited;/*合用于Oracle7.3今后的版本*/
3)altersessionsettracefile_identifier=POX20031031a;/*合用于Oracle8.1.7今后的版本*/
4)altersessionsetevents10046tracenamecontextforever,level8;
/*在这里编写使用程序的代码*/
5)altersessionsetevents10046tracenamecontextoff;
在上述语句中,语句1)是把该会话的工夫统计翻开,该参数默许为false.在Oracle7.3之前的版本中,不克不及在会话级设置该参数,只能修正初始化文件然后从头启动数据库,如许将在实例级翻开工夫统计。
语句2)是把跟踪文件的巨细设置成操纵体系所同意的最年夜尺寸,如许能够避免跟踪文件在完成所必要的跟踪之前被添补满,别的必要注重的是确保留放跟踪文件的目次要有充足的空间,不然将会收到“文件体系已满”毛病。
语句3)的感化是使天生的跟踪文件称号中包括POX20031031a字符串,如许可使你很简单的找到所需的跟踪文件,该参数在Oracle8.1.7以后可用。
语句4)和语句5)的感化分离是翻开和封闭跟sql跟踪,你能够在这两个语句之间写进使用程序的代码,这些代码的实行情形都将被跟踪。必要注重的是语句4)的level关头字,它用来指定跟踪级别,一共有0,1,2,4,8,12六个级别能够设置,0相称于封闭跟踪;1是输入一样平常的跟踪信息,不包含绑定变量和守候信息;2和1不异;4是在级别1的基本上增添绑定变量信息;8是在级别1的基本上增添守候信息;级别12是输入包括级别1,4,8的一切信息。
假如使用程序的代码没法修正大概是不想往修正,则能够在其他会话中翻开对特定会话的跟踪,办法以下:
1)sys.dbms_system.set_bool_param_in_session(:sid,:serial,timed_statistics,true);
2)sys.dbms_system.set_int_param_in_session(:sid,:serial,max_dump_file_size,2147483647);
翻开和封闭跟踪的第一种办法(oracle保举):
3.1)sys.dbms_support.start_trace_in_session(:sid,:serial,waits=>true,binds=>false);
/*在此时代运转要跟踪的使用程序*/
4.1)sys.dbms_support.stop_trace_in_session(:sid,:serial);
翻开和封闭跟踪的第二种办法:
3.2)sys.dbms_system.set_ev(:sid,:serial,10046,8,);
/*在此时代运转要跟踪的使用程序*/
3.2)sys.dbms_system.set_ev(:sid,:serial,10046,0,);
以上语句中的:sid和:serial分离代表所要跟踪的会话的ID和序列号,这些信息能够从V$SESSION视图的SID和SERIAL#列取得。翻开封闭跟踪中第一种办法的优点是你不必本人写10046这个事务号,如许能够削减毛病,可是dbms_support程序包在你的数据库中大概会不存在,如许就只要用第二种办法了。
到如今为止,我们已天生了所必要的跟踪文件,然后我们必要找到该文件来举行剖析。跟踪文件的寄存地位只要两种大概,Oracle参数USER_DUMP_DEST大概BACKGROUND_DUMP_DEST指定的目次;文件称号依据分歧的平台会有所分歧,可是在文件名中城市包括会话所对应的操纵体系历程(线程)号,也就是V$PROCESS的SPID列(V$PROCESS.SPID),该信息能够经由过程v$process.addr和v$session.paddr做表毗连查询失掉。比方:selectspidfromv$processp,v$sessionswherep.addr=s.paddrands.sid=:sidands.serial#=:serial.
本文只对Oracle在利用公用服务器历程(DedicatedServer)形式做了总结,至于的共享服务器(SharedServer)形式和在使用级利用毗连池的情形下,搜集sql跟踪信息的办法会对照庞大,但愿有相干履历的妙手来总结。通过支付一定费用,客户可以得到优先的24/7支持,访问内容丰富的在线知识库和联系一个专门的技术负责经理。 |
|