当前位置: 首页 > 图文教程 > 数据库 > Oracle > 教你在Oracle中启动脚本跟踪存储过程

Oracle
oracle sys_connect_by_path 函数 结果集连接
oracle join on 数据过滤问题
Oracle 当前用户下所有表的记录总数
oracle 树查询 语句
oracle 触发器 实现出入库
Oracle 函数大全
oracle 删除重复数据
ORACLE 最大连接数的问题
oracle 层次化查询(行政区划三级级联)
oracle 查询表名以及表的列名
Oracle 数据显示 横表转纵表
oracle 服务启动,关闭脚本(windows系统下)
ORCLE 表中列的修改
oracle 数据库连接分析
Oracle 实现类似SQL Server中自增字段的一个办法
Oracle 常用的SQL语句
Oracle 数组的学习 小知识也要积累,养成好的学习态度
Oracle 日期的一些简单使用
Oracle 数据库连接查询SQL语句
Oracle DBA常用语句

教你在Oracle中启动脚本跟踪存储过程


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-31   浏览: 180 ::
收藏到网摘: n/a

一、用脚本启动并设置跟踪的示例

    我们可以用脚本进行跟踪存储过程,当然要了解这些存储过程的具体语法和参数的含义,至于这些语法和参数含义请查询联机帮助。下面请看一实例:


/*******************************************/
/* Created by: SQL Profiler                 */
/* Date: 2004/06/19 16:50:05       */
/*******************************************/
-- Create a Queue
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
set @maxfilesize = 5

-- Please replace the text InsertFileNameHere, with an appropriate
-- filename prefixed by a path, e.g., c:\MyFolder\MyTrace. The .trc extension
-- will be appended to the filename automatically. If you are writing from
-- remote server to local drive, please use UNC path and make sure server has
-- write access to your network share

exec @rc = sp_trace_create @TraceID output, 0, N'c:\test', @maxfilesize, NULL
if (@rc != 0) goto error

-- Client side File and Table cannot be scripted
-- Writing to a table is not supported through the SP's
-- Set the events
declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 12, 1, @on
exec sp_trace_setevent @TraceID, 12, 12, @on
exec sp_trace_setevent @TraceID, 12, 14, @on

-- Set the Filters
declare @intfilter int
declare @bigintfilter bigint
exec sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Profiler'
set @intfilter = 100
exec sp_trace_setfilter @TraceID, 22, 0, 4, @intfilter
set @intfilter = 1
exec sp_trace_setfilter @TraceID, 23, 1, 0, @intfilter
exec sp_trace_setfilter @TraceID, 35, 1, 6, N'pubs'

-- Set the trace status to start
exec sp_trace_setstatus @TraceID, 1
-- display trace id for future references
select TraceID=@TraceID
goto finish

error:
select ErrorCode=@rc
finish:
go
 

二、生成跟踪脚本的最简式

事件探查器建立跟踪, 并设置好各种选项, 完成后运行跟踪,然后生成脚本。

    事件探查器--文件--导出跟踪定义的文件--选择合适的版本。这样就会生成一个跟踪的脚本, 打开生成的脚本, 修改里面的:exec @rc = sp_trace_create部分, 设置跟踪结果的保存文件(用语句跟踪的时候, 跟踪结果只能保存到文件)。然后, 在需要跟踪的时候, 运行这个脚本来启动跟踪。启动跟踪后, 跟踪自动进行, 所以你可以关闭查询分析器做其他事情去了。

三、已知的问题

1.跟踪记录不是实时写入跟踪文件的, 因此, 可能会到你停止跟踪的时候, 跟踪信息才写入跟踪文件

2.查看当前已经进行的跟踪可以用(关于结果集的解释, 请看联机帮助):


SELECT * FROM ::fn_trace_getinfo(0)
 

3. 停止某个跟踪, 可以在sp_trace_create 语句中设置自动停止时间, 也可以手动停止跟踪, 用下面的语句:


EXEC sp_trace_setstatus
  @traceid = 1 ,   -- 跟踪的id
  @status = 0     -- 停止, 这样以后还可能指定此项为来启用
EXEC sp_trace_setstatus
  @traceid = 1 ,
  @status = 2     -- 关闭, 彻底释放