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

Oracle
常见的一些Oracle初学者的问题
ORACLE认证系统概述
数据库考试简介:Oracle认证
Oracle认证基础知识介绍
ADO连接Oracle Access示例及记录集处理源码
SQL Server和MySQL的安全性分析
用Oracle和SQL Server数据库组合利弊分析
Oracle 11g分区功能新革命
Flashback Query 恢复误删除的数据
基于Oracle高性能动态SQL程序开发
怎样在Oracle 9i中正确的转换时区
Oracle 10g导出的数据库能否导入Oracle 9i?
增加Distinct后查询效率反而提高
Oracle限制返回结果集的大小
Java语言数据库操作的基本流程
美国甲骨文(ORACLE)公司入驻渝中区大都会商厦
RHEL AS4上安装oracle 10R2 的方法
DB中如何查询Table占用空间的大小
编写高质量高性能的MySQL语法
Oracle数据库自动备份的具体实现步骤

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-31   浏览: 185 ::
收藏到网摘: 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     -- 关闭, 彻底释放