如何打开oracle的sql后台跟踪功能

如何打开oracle的sql后台跟踪功能,第1张

一.在系统级别上设置sql跟踪

该方法优点:可以跟踪所有的oracle的后台进程所执竖颤友行的sql,包括系统后台进程和用户进程,并且可以跟踪所有的 *** 作

缺点:跟踪所有的后台进程,跟踪信息量比较大

1.在sqlplus中以sys/ as sysdba身份登陆到数据库

2.打开跟踪,在sqlplus中输入alter sysetem set events '10046 trace name context forever,level &level'

(其中&level可以输入1,4,8,12三个级别,不同的级别含有不同级别的信息)

3.然后到ArcMap或ArcCatalog中进行你想跟踪的 *** 作

4.关闭跟踪,在sqlplus中输入alter systemm set events '10046 trace name context off'

5.查找你所跟踪的session的ID

A 修改时间格式:alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'

B.对使用sde服务的输入:select sid,logon_time from v$session where username=&username and program='gsrvr.exe'

C.对直连这种方式输入:select sid,logon_time from v$session where username=&username and program='ArcCatalog'

select sid,logon_time from v$session where username=&username and program='ArcMap'

(其中&username是程序登陆到数据库的用户名,如果返回多个余槐结果,在根据登陆的时间确定具体的sid值)

6.执行以下的sql语句

SELECTd.VALUE

|| '/'

|| LOWER (RTRIM (i.INSTANCE, CHR (0)))

|| '_ora_'

|| p.spid

|| '.trc' trace_file_name

FROM (SELECT p.spid

FROM v$mystat m, v$session s, v$process p

WHERE m.statistic# = 1 AND s.SID = &SID AND p.addr = s.paddr) p,

(SELECT t.INSTANCE

FROM v$thread t, v$parameter v

WHERE v.NAME = 'thread'

AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,

(SELECT VALUE

FROM v$parameter

WHERE NAME = 'user_dump_dest') d

在输入sid后,即得到后台的跟踪文件。

二. 在session级别上设置跟踪

该方法只适用于跟踪洞唤登陆数据后所进行的一系列的 *** 作,比如跟踪在ArcCatalog中创建一个Dataset,FeatureClass等的 *** 作

1.在sqlplus中以sys / as sysdba身份登陆到数据库

2.查找你所要跟踪的session的sid和serial#

A 修改时间格式:alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'

B.对使用sde服务的输入:select sid,serial#,logon_time from v$session where username=&username and program='gsrvr.exe'

C.对直连这种方式输入:select sid,serial#,logon_time from v$session where username=&username and program='ArcCatalog'

select sid,serial#,logon_time from v$session where username=&username and program='ArcMap'

(其中&username是程序登陆到数据库的用户名,如果返回多个结果,在根据登陆的时间确定具体的sid和serial#的值)

3.开始跟踪,输入exec dbms_support.start_trace_in_session(&sid,&serial#,true,true).(如果系统没有安装dbms_support包,可以执行$ORACLE_HOME\rdbms\admin\dbmssupp.sql进行安装)

4.然后到ArcMap或ArcCatalog中进行你想跟踪的 *** 作

5.结束跟踪exec dbms_support.stop_trace_in_session(&sid,&serial#)

6.执行以下的sql语句

SELECTd.VALUE

|| '/'

|| LOWER (RTRIM (i.INSTANCE, CHR (0)))

|| '_ora_'

|| p.spid

|| '.trc' trace_file_name

FROM (SELECT p.spid

FROM v$mystat m, v$session s, v$process p

WHERE m.statistic# = 1 AND s.SID = &SID AND p.addr = s.paddr) p,

(SELECT t.INSTANCE

FROM v$thread t, v$parameter v

WHERE v.NAME = 'thread'

AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,

(SELECT VALUE

FROM v$parameter

WHERE NAME = 'user_dump_dest') d

在输入sid后,即得到后台的跟踪文件。

三. 在Aix系统下跟踪消耗内存的session的办法

1.在Aix系统上执行export TERM=vt100

2.执行topas命令,确定最占cpu资源的process的进程号

3,然后利用select a.sid,b.serial# from v$session a,v$process b where a.paddr=b.addr and b.spid=&spid

4.确定sid和serial#后利用二方法进行跟踪。

如果是C-S的租念系统,推荐TOAD--sql-monitor,可以跟踪到客户端所有发起的数据库 *** 搏培作.很强大.特别对于排错.

如果是只是需要查看特别对象的变化话,没有这么针对性强的东西,除非你们自己编写一个. 不过,可以使用TOAD或者其它可视化工具进行查看.有"刷新"按钮的.

哦,看来我理解错了...你是说要看整个数据库资源的情况么基型唯?这个工具里面有现成的,可以自动定时刷新.当然也可以看日志. 也可以从当前 *** 作系统提供的命令来辅助查看.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8212152.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存