[20130226]跟踪特定IP的sql语句.txt

[20130226]跟踪特定IP的sql语句.txt

工作需要,跟踪特定IP地址发出的sql语句.可惜我们生产系统是10g的,如果是11G支持trcsess可以合并trc文件,再分析.
自己做一个测试看看.

http://space.itpub.net/267265/viewspace-754003

1.建立logon触发器:

CREATE OR REPLACE TRIGGER SYS.on_logon_trigger
   AFTER LOGON ON DATABASE
DECLARE
   v_client_info   v$session.client_info%TYPE;
   v_sid           v$session.SID%TYPE;
BEGIN
   select SYS_CONTEXT ('userenv', 'ip_address') into v_client_info  from dual ; 
   DBMS_APPLICATION_INFO.set_client_info (v_client_info);
   --增加的代码
   dbms_session.set_identifier(v_client_info);
   EXECUTE IMMEDIATE 'alter session set tracefile_identifier = ''' || replace(nvl(v_client_info,'local'),'.','_')||'''';
END;
/

2.以scott,system用户为例子来说明:
SQL> show parameter iden

NAME                                 TYPE                       VALUE
------------------------------------ -------------------------- ---------------------
tracefile_identifier                 string                     172_16_100_6
--在回话2执行如下:
exec dbms_monitor.client_id_trace_enable(client_id=>'172.16.100.6', waits=>true, binds=>true);

以scott用户登录执行如下:
select count(*) from dept;
select * from emp where empno=7934;
以system用户登录执行如下:
select count(*) from dba_objects ;
--在回话2执行如下:
exec dbms_monitor.client_id_trace_disable(client_id=>'172.16.100.6');
3. 检查文件:
$ cd /u01/app/oracle11g/diag/rdbms/test/test/trace
$ ls -l *172_16_100_6*.trc
-rw-r-----  1 oracle11g oinstall 27632 2013-02-27 12:00:19 test_ora_16793_172_16_100_6.trc
-rw-r-----  1 oracle11g oinstall 18808 2013-02-27 12:00:30 test_ora_16855_172_16_100_6.trc
--合并文件.
$ trcsess utput=172_16_100_6.out clientid=172.16.100.6 *172_16_100_6.trc
$ tkprof trc1.out aaa.txt record=bbb.txt
$ cat bbb.txt
SELECT USER FROM DUAL ;
BEGIN DBMS_OUTPUT.DISABLE; END;
/
SELECT ATTRIBUTE,SCOPE,NUMERIC_VALUE,CHAR_VALUE,DATE_VALUE FROM SYSTEM.PRODUCT_PRIVS WHERE (UPPER('SQL*Plus') LIKE UPPER(PRODUCT)) AND (UPPER(USER) LIKE USERID) ;
SELECT CHAR_VALUE FROM SYSTEM.PRODUCT_PRIVS WHERE   (UPPER('SQL*Plus') LIKE UPPER(PRODUCT)) AND   ((UPPER(USER) LIKE USERID) OR (USERID = 'PUBLIC')) AND   (UPPER(ATTRIBUTE) = 'ROLES') ;
BEGIN DBMS_APPLICATION_INFO.SET_MODULE(:1,NULL); END;
/
SELECT DECODE('A','A','1','2') FROM DUAL ;
BEGIN DBMS_OUTPUT.ENABLE(1000000); END;
/
BEGIN DBMS_OUTPUT.DISABLE; END;
/
select count(*) from dept ;
select * from emp where empno=7934 ;
SELECT USER FROM DUAL ;
BEGIN DBMS_OUTPUT.DISABLE; END;
/
BEGIN DBMS_APPLICATION_INFO.SET_MODULE(:1,NULL); END;
/
SELECT DECODE('A','A','1','2') FROM DUAL ;
BEGIN DBMS_OUTPUT.ENABLE(1000000); END;
/
BEGIN DBMS_OUTPUT.DISABLE; END;
/
select count(*) from dba_objects  ;

--bbb.txt记录的sql语句.

时间: 2024-10-26 01:00:13

[20130226]跟踪特定IP的sql语句.txt的相关文章

[20131031]从跟踪文件中抽取sql语句.txt

[20131031]从跟踪文件中抽取sql语句.txt 以前写过利用tkprof顺序抽取执行的sql语句http://space.itpub.net/267265/viewspace-748041但是递归语句没有记录下来. 今天看了一篇blog,记录如下:--说明:我修改2处:dept那行里面的-1原文有错,应该是半角-1.--printf "%s %s %s>>>> %s\n", stmt_count, depth_level, cursor_no, $0--

0624使用10035事件跟踪无法执行的sql语句

[20160624]使用10035事件跟踪无法执行的sql语句.txt --昨天看一份awr报表,链接如下: http://www.itpub.net/thread-2061952-1-1.html --摘要如下: Top 10 Foreground Events by Total Wait Time Event                              Waits     Total Wait Time (sec)    Wait Avg(ms)  % DB time    W

[20160704]从跟踪文件抽取sql语句.txt

[20160704]从跟踪文件抽取sql语句.txt --以前写过两篇,链接如下: http://blog.itpub.net/267265/viewspace-775398/ http://blog.itpub.net/267265/viewspace-748041/ 1个利用tkprof的recodr参数,可以记录跟踪整个sql语句序列,缺点就是丢失一些递归的sql语句.另外一个利用awk脚本抽取sql语句. 今天再写一个简单一点的脚本: 1.环境: SCOTT@book> @ &r/v

[20150527]跟踪单个sql语句.txt

[20150527]跟踪单个sql语句.txt --11G下可以使用如下脚本跟踪单个sql语句,&1 表示 sql_id.   $ cat sql_trace.sql alter system set events 'sql_trace[SQL:&1] level 12'; host sleep 300 alter system set events 'sql_trace[SQL:&1] off'; --缺点生成的文件在各个用户的trc文件中.

[20121101]tkprof抽取sql语句.txt

[20121101]tkprof抽取sql语句.txt 有时候跟踪分析sql语句,并不是要看里面的递归的执行,或者性能问题.而是要收集跟踪命令的执行序列. 查看tkprof的帮助: Usage: tkprof tracefile outputfile [explain= ] [table= ]               [print= ] [insert= ] [sys= ] [sort= ]   table=schema.tablename   Use 'schema.tablename'

[20150403]修正sql语句.txt

[20150403]修正sql语句.txt --主要在一些调试与优化时加入hint容易. --参考了链接,我自己做了小量的修改. http://blog.itpub.net/22034023/viewspace-1063610/ /* Formatted on 2015/4/3 9:01:53 (QP5 v5.252.13127.32867) */ --SET LINESIZE 153 SET VERIFY OFF --SET PAGESIZE 10000 --ACCEPT sql_id - -

[20161230]查看父游标中sql语句.txt

[20161230]查看父游标中sql语句.txt --上午巡检完,无聊,测试使用oradebug下查看sql语句在父游标中的内容.sql语句在执行第一次硬解析时生成父子游标,其中父游标chunk --中保存sql语句,测试通过oradebug下如何查看: 1.环境: SCOTT@book> select * from dept where deptno=10;     DEPTNO DNAME          LOC ---------- -------------- -----------

[20150705]从AWR抽取有问题的sql语句.txt

[20150705]从AWR抽取有问题的sql语句.txt --闲着没事,写一个脚本从awr数据里面抽取有问题的sql语句,主要我不想看awr报表,而优化80%的问题集中在sql语句,实际上可能更多. --另外我看报表主要集中在9-11点,下午3-5点这些报表,这样可能漏调一些晚上的一些schedule,job等相关sql语句的优化. --注意一定要在环境变量中设置 --NLS_DATA_FORMAT='YYYY/MM/DD HH24:MI:SS' prompt prompt @deltasql

[20150831]中文符号在sql语句.txt

[20150831]中文符号在sql语句.txt --今天在检查代码时发现sql语句中存在全角的等号"=",很明显oracle并没有报错. --实际上itpub上以前有人提到全角","也不会报错. --自己也测试一下: SCOTT@test> @ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- -----