⑴ 请问win7 64位下Statement Tracer For Oracle 和 sql Monitor 不能使用,还有其他工具吗
这两款程序一般都可以在Win 7 x64平台上运行,个人使用的是Statement Tracer For Oracle 。 其它类似的工具也有很多,比如NavicatforOracleEnterprisev,如果不能运行用户可以参考如下方法:
1、换一个Statement Tracer For Oracle 或者 SQL Monitor的安装包重新安装,64位的系统可以下载相应软件的64位安装包。
2、正确的使用此类工具,以Statement Tracer For Oracle为例说明一下使用步骤:
1)、打开了sql developer 登陆数据库
⑵ oracle SQL跟踪,如何跟踪某个用户发出的所有SQL
需要打开oracle审计功能才能记录,并且消耗一定性能。
简单打开审计如下
1、设置参数
alter system set audit_trail=db scope=spfile;
2、重启数据库
3、打开相应的审计(审计选项很多),如,对用户test对表操作的审计
audit table by test;
4、以dba查看审计记录
select * from dba_audit_trail;
⑶ ORACLE有SQL MONITOR ,SQL SERVER有没有类似工具
有个叫 SQL SPY 的,可以实现 类似的 部分的 功能。
不过好像只能查询到,某个用户,最后一次执行的 SQL 语句的信息。
如果这个用户,连续执行了好多条SQL语句。
中间执行的语句,不知道怎么看得到。
因为我 SQL MONITOR 和 SQL SPY 都是只用过一点点,很短的时间。
主要也就是来 跟踪某个 EXE,具体执行了什么 SQL 语句这个功能。
别的就不大清楚了。
⑷ 如何打开oracle的sql后台跟踪功能
一.在系统级别上设置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语句
SELECT d.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_mp_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语句
SELECT d.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_mp_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#后利用二方法进行跟踪。
⑸ Oracle中有没有什么工具 可以像MSSQL的Profiler工具一样实时跟踪被执行的SQL语句
trace工具,如果你想在当前session 会话(sqlplus)当中看的换,直接执行 set autotrace on,再执行你的sql就可以看到执行计划,也可以保存成trc文件,使用tkprof工具转义后查看。
⑹ 请问什么工具可以跟踪ORACLE的SQL执行语句
还是自己来回答下吧~~在网上找了一个软件~TOAD FOR ORACLE~~可以跟踪SQL~其实sql developer也是可以跟踪的~ 查看原帖>>
采纳哦
⑺ 有没有什么工具可以监控oracle数据库里数据的变化
如果是C-S的系统,推荐TOAD--sql-monitor,可以跟踪到客户端所有发起的数据库操作.很强大.特别对于排错.
如果是只是需要查看特别对象的变化话,没有这么针对性强的东西,除非你们自己编写一个. 不过,可以使用TOAD或者其它可视化工具进行查看.有"刷新"按钮的.
哦,看来我理解错了...你是说要看整个数据库资源的情况么?这个工具里面有现成的,可以自动定时刷新.当然也可以看日志. 也可以从当前操作系统提供的命令来辅助查看.
⑻ oracle怎样跟踪一条sql语句的执行过程
需要建立一张表来记录
explain plan SET statement_id='name' FOR (这里是你要调试的语句 )
SELECT
A.OPERATION,
OPTIONS,
OBJECT_NAME,
OBJECT_TYPE,
ID,
PARENT_ID
FROM
PLAN_TABLE A
WHERE
STATEMENT_ID='name'
ORDER BY
Id;
ID 'name'是一个标识,你可以自己取,字段有很多个,以下是各个字段的解释(可能格式不对,你可以复制后看):
字段名 字段类型 含义
STATEMENT_ID VARCHAR2(30) explain PLAN 语句中所指定的最优STATEMENT_ID 参数值, 如果在EXPLAN PLAN语句中没有使用SET STATEMENT_ID,那么此值会被设为NULL。
REMARKS VARCHAR2(80) 与被解释规划的各步骤相关联的注释最长可达80 字节
OPERATION VARCHAR2(30) 各步骤所执行内部操作的名称在某条语句所产生的第一行中该列的可能取值如下DELETE STATEMENT INSERT STATEMENT SELECT STATEMENT UPDATE STATEMENT
OPTIONS VARCHAR2(30) 对OPERATION 列中所描述操作的变种
OBJECT_NODE VARCHAR2(128) 用于访问对象的数据库链接database link 的名称对于使用并行执行的本地查询该列能够描述操作中输出的次序
OBJECT_OWNER VARCHAR2(30) 对于包含有表或索引的架构schema 给出其所有者的名称
OBJECT_NAME VARCHAR2(30) 表或索引的名称
OBJECT_INSTANCE INTEGER 根据对象出现在原始original 语句中的次序所给出的相应次序编号就原始的语句文本而论其处理顺序为自左至右自外向内景象扩张view
OBJECT_TYPE VARCHAR2(30) 用于提供对象描述性信息的修饰符例如索引的NON-UNIQUE
OPTIMIZER VARCHAR2(255) 当前优化程序的模式
ID INTEGER 分配给执行规划各步骤的编号
PARENT_ID INTEGER 对ID 步骤的输出进行操作的下一个执行步骤的ID
POSITION INTEGER 对于具有相同PARENT_ID 的步骤其相应的处理次序
COST INTEGER 根据优化程序的基于开销的方法所估计出的操作开销值对于使用基于规则方法的语句该列为空该列值没有特定的测量单位它只是一个用于比较执行规划开销大小的权重值
CARDINALITY INTEGER 根据基于开销的方法对操作所访问行数的估计值
BYTES INTEGER 根据基于开销的方法对操作所访问字节的估计
=============================================
你按照我说的做,后面用
SELECT
*
FROM
PLAN_TABLE A
WHERE
STATEMENT_ID='name'
结果已经很清楚了,全部满足你的要求。
各列的具体含义上面已经给出。
⑼ Oracle 数据库如何跟踪SQL语句
没用,只想从后台数据库看对这个数据库执行的sql问题补充:unika_ly12 写道 那你直接查询 v$sqltext 和 v$session 好了 首先,你要以dba身份登陆数据库。 第二,为某个用户开启sql跟踪。那个用户就是你要跟踪的、正在执行sql语句的那个用户。命令如下: execute dbms_system.set_sql_trace_in_session(sid,serial#,true) 其中参数的意义是,sid-会话id,serial#-序列号,这两个参数可以从v$session中得到。 第三,上面的命令执行成功之后数据库就自动对该用户所发出的所有sql语句进行跟踪,并把结果写在用户跟踪文件里。用户跟踪文件存放在数据库服务器上,路径请参考init.ora文件中的ump参数值。文件名为ora_sid_xxxx.trc(for unix)或者oraxxxxx.trc(for NT),其中xxxx文件系统进程编号,这个编号可以从v$process和v$session两个表通过关联的方式查询得到。当然你也可以简单的查看一下哪个trc文件的日期最新,哪个文件就是你要的结果了。 首先,你要以dba身份登陆数据库。 第二,为某个用户开启sql跟踪。那个用户就是你要跟踪的、正在执行sql语句的那个用户。命令如下: execute dbms_system.set_sql_trace_in_session(sid,serial#,true) 其中参数的意义是,sid-会话id,serial#-序列号,这两个参数可以从v$session中得到。 第三,上面的命令执行成功之后数据库就自动对该用户所发出的所有sql语句进行跟踪,并把结果写在用户跟踪文件里。用户跟踪文件存放在数据库服务器上,路径请参考init.ora文件中的ump参数值。文件名为ora_sid_xxxx.trc(for unix)或者oraxxxxx.trc(for NT),其中xxxx文件系统进程编号,这个编号可以从v$process和v$session两个表通过关联的方式查询得到。当然你也可以简单的查看一下哪个trc文件的日期最新,哪个文件就是你要的结果了。