在Oracle中跟踪后台所执行的SQL语句
分享
在oracle中可以跟踪后台所执行的sql,具体有以下两种设置方法:
在实际排查问题的过程中,尤其是在前端应用已经报出ORA错误的时候用此方法非常奏效,在前几章排查问题的过程中我也多次使用了该方法。以下是设置跟踪的方法。
一.在系统级别上设置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语句 在输入sid后,即得到后台的跟踪文件。
1: SELECT d.VALUE
2: || '/'
3: || LOWER (RTRIM (i.INSTANCE, CHR (0)))
4: || '_ora_'
5: || p.spid
6: || '.trc' trace_file_name
7: FROM (SELECT p.spid
8: FROM v$mystat m, v$session s, v$process p
9: WHERE m.statistic# = 1 AND s.SID = &SID AND p.addr = s.paddr) p,
10: (SELECT t.INSTANCE
11: FROM v$thread t, v$parameter v
12: WHERE v.NAME = 'thread'
13: AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,
14: (SELECT VALUE
15: FROM v$parameter
16: WHERE NAME = 'user_dump_dest') d
二. 在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语句 在输入sid后,即得到后台的跟踪文件。
1: SELECT d.VALUE
2: || '/'
3: || LOWER (RTRIM (i.INSTANCE, CHR (0)))
4: || '_ora_'
5: || p.spid
6: || '.trc' trace_file_name
7: FROM (SELECT p.spid
8: FROM v$mystat m, v$session s, v$process p
9: WHERE m.statistic# = 1 AND s.SID = &SID AND p.addr = s.paddr) p,
10: (SELECT t.INSTANCE
11: FROM v$thread t, v$parameter v
12: WHERE v.NAME = 'thread'
13: AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,
14: (SELECT VALUE
15: FROM v$parameter
16: WHERE NAME = 'user_dump_dest') d
三. 在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#后利用二方法进行跟踪。
文章来源:http://blog.csdn.net/liufeng1980423/article/details/6072515
在实际排查问题的过程中,尤其是在前端应用已经报出ORA错误的时候用此方法非常奏效,在前几章排查问题的过程中我也多次使用了该方法。以下是设置跟踪的方法。
一.在系统级别上设置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语句 在输入sid后,即得到后台的跟踪文件。
1: SELECT d.VALUE
2: || '/'
3: || LOWER (RTRIM (i.INSTANCE, CHR (0)))
4: || '_ora_'
5: || p.spid
6: || '.trc' trace_file_name
7: FROM (SELECT p.spid
8: FROM v$mystat m, v$session s, v$process p
9: WHERE m.statistic# = 1 AND s.SID = &SID AND p.addr = s.paddr) p,
10: (SELECT t.INSTANCE
11: FROM v$thread t, v$parameter v
12: WHERE v.NAME = 'thread'
13: AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,
14: (SELECT VALUE
15: FROM v$parameter
16: WHERE NAME = 'user_dump_dest') d
二. 在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语句 在输入sid后,即得到后台的跟踪文件。
1: SELECT d.VALUE
2: || '/'
3: || LOWER (RTRIM (i.INSTANCE, CHR (0)))
4: || '_ora_'
5: || p.spid
6: || '.trc' trace_file_name
7: FROM (SELECT p.spid
8: FROM v$mystat m, v$session s, v$process p
9: WHERE m.statistic# = 1 AND s.SID = &SID AND p.addr = s.paddr) p,
10: (SELECT t.INSTANCE
11: FROM v$thread t, v$parameter v
12: WHERE v.NAME = 'thread'
13: AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,
14: (SELECT VALUE
15: FROM v$parameter
16: WHERE NAME = 'user_dump_dest') d
三. 在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#后利用二方法进行跟踪。
文章来源:http://blog.csdn.net/liufeng1980423/article/details/6072515
0 个评论
推荐内容
相关问题
- 通过桌面链接sde oracle 怎么样可以创建空间数据库? 现在新建没有要素类可以选择? 是不是新建有什么顺序
- Python 中游标的查询语句
- arcgis不能连接到oracle数据库,因为数据库客户端软件加载失败,请问这是什么原因呢?
- 语句未结束
- [ESRI杯比赛]ASP是什么,是后台那方面的吗
- 从sql server导入要素类到oracle的问题
- 在没有创建企业级地理数据库的前提下,如何使用桌面创建以oracle spatial存储格式存储的图层?
- FAQ: 安装Oracle的Instant客户端是否可以建立ArcSDE的直连
- 字段计算器IF语句出错
- ArcGIS Server注册Oracle数据库出错 [ORA-12504]:监听程序无法获得SERVICE_NAME
- 多边形压盖问题oracle存储机制