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

简介: [20130226]跟踪特定IP的sql语句.txt工作需要,跟踪特定IP地址发出的sql语句.可惜我们生产系统是10g的,如果是11G支持trcsess可以合并trc文件,再分析.
[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语句.

目录
相关文章
|
SQL Java 数据库连接
如何在 Java 代码中使用 JSqlParser 解析复杂的 SQL 语句?
大家好,我是 V 哥。JSqlParser 是一个用于解析 SQL 语句的 Java 库,可将 SQL 解析为 Java 对象树,支持多种 SQL 类型(如 `SELECT`、`INSERT` 等)。它适用于 SQL 分析、修改、生成和验证等场景。通过 Maven 或 Gradle 安装后,可以方便地在 Java 代码中使用。
5183 11
|
SQL Oracle 关系型数据库
mysql和oracle 命令行执行sql文件 数据库执行sql文件 执行sql语句
mysql和oracle 命令行执行sql文件 数据库执行sql文件 执行sql语句
504 0
|
SQL 存储 关系型数据库
MySQL的第一篇文章——了解数据库、简单的SQL语句
MySQL的第一篇文章——了解数据库、简单的SQL语句
|
SQL 程序员 开发工具
【Sql Server】基础之分组查询重复出现多条记录的SQL语句,以及group by和having、min函数运用
基础之分组查询重复出现多条记录的SQL语句,以及group by和having、min函数运用
【Sql Server】基础之分组查询重复出现多条记录的SQL语句,以及group by和having、min函数运用
SQL 查询表中每门课程成绩最好的前n名学生 优于group by语句的方法
SQL 查询表中每门课程成绩最好的前n名学生 优于group by语句的方法
SQL 查询表中每门课程成绩最好的前n名学生 优于group by语句的方法
|
SQL 网络协议 数据库
异地远程访问本地SQL Server数据库【无公网IP内网穿透】(下)
异地远程访问本地SQL Server数据库【无公网IP内网穿透】(下)
537 0
|
SQL 关系型数据库 数据库
异地远程访问本地SQL Server数据库【无公网IP内网穿透】(上)
异地远程访问本地SQL Server数据库【无公网IP内网穿透】
577 0
|
SQL 网络协议 关系型数据库
【SQL】公网远程访问局域网SQL Server数据库【无公网IP内网穿透】
【SQL】公网远程访问局域网SQL Server数据库【无公网IP内网穿透】
666 0
|
SQL 关系型数据库 MySQL
SQL语句优化方法
SQL语句优化方法
462 0
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")