ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 如何跟踪记录客户端发来的命令。

如何跟踪记录客户端发来的命令。

原创 Linux操作系统 作者:ZALBB 时间:2019-03-18 18:48:04 0 删除 编辑

环境windows 2000 server(sp4), oracle9207.

ITPUB 上有好多同学询问,如何跟踪客户端发来的SQL,很多大仙也给了不同的方法。
但都有局限,尤其是不能跟踪select语句。回忆起几年前学的个方法,今天再做测试,
通过后,供大家拍砖。


步骤:

1、在数据库的sqlnet.ora 增加下面内容:
TRACE_LEVEL_SERVER=support -- 跟踪级别(off user, admin, support),只有使用support 才有效。
TRACE_FILE_SERVER=trace --跟踪文件名
TRACE_DIRECTORY_SERVER=g:temp --文件的存放路径

2、此时若登陆数据库操作,则会在TRACE_DIRECTORY_SERVER=g:temp 发现类似的文件:trace_3236.trc
其中trace 为 TRACE_FILE_SERVER=trace 中的信息,而3236 则为进程的spid,此文件将记录该会话的
所有操作信息,包括select , dml, ddl 等动作,如下:

[27-JUN-2006 15:59:46:859] nsprecv: 00 00 00 00 00 00 00 00 |........|
[27-JUN-2006 15:59:46:859] nsprecv: FA AE F0 00 8C 46 F2 00 |.....F..|
[27-JUN-2006 15:59:46:859] nsprecv: 00 00 00 00 FE 40 73 65 |.....@se|
[27-JUN-2006 15:59:46:859] nsprecv: 6C 65 63 74 20 73 70 69 |lect.spi|
[27-JUN-2006 15:59:46:859] nsprecv: 64 20 66 72 6F 6D 20 76 |d.from.v|
[27-JUN-2006 15:59:46:859] nsprecv: 24 70 72 6F 63 65 73 73 |$process|
[27-JUN-2006 15:59:46:859] nsprecv: 20 77 68 65 72 65 20 61 |.where.a|
[27-JUN-2006 15:59:46:859] nsprecv: 64 64 72 20 3D 0A 28 73 |ddr.=.(s|
[27-JUN-2006 15:59:46:859] nsprecv: 65 6C 65 63 74 20 70 61 |elect.pa|
[27-JUN-2006 15:59:46:859] nsprecv: 64 64 72 20 66 72 6F 6D |ddr.from|
[27-JUN-2006 15:59:46:859] nsprecv: 20 76 24 73 65 73 11 73 |.v$ses.s|
[27-JUN-2006 15:59:46:859] nsprecv: 69 6F 6E 20 77 68 65 72 |ion.wher|
[27-JUN-2006 15:59:46:859] nsprecv: 65 20 73 69 64 3D 38 29 |e.sid=8)|
[27-JUN-2006 15:59:46:859] nsprecv: 00 01 00 00 00 00 00 00 |........|
[27-JUN-2006 15:59:46:859] nsprecv: 00 00 00 00 00 00 00 00 |........|


[27-JUN-2006 16:40:32:875] nsprecv: 00 AC 00 00 06 00 00 00 |........|
[27-JUN-2006 16:40:32:875] nsprecv: 00 00 11 69 23 84 AA 3A |...i#..:|
[27-JUN-2006 16:40:32:875] nsprecv: 01 01 00 00 00 01 00 00 |........|
[27-JUN-2006 16:40:32:875] nsprecv: 00 03 5E 24 21 80 00 00 |..^$!...|
[27-JUN-2006 16:40:32:875] nsprecv: 00 00 00 00 1C C8 0B 07 |........|
[27-JUN-2006 16:40:32:875] nsprecv: 0F 00 00 00 18 4E 3B 01 |.....N;.|
[27-JUN-2006 16:40:32:875] nsprecv: 0C 00 00 00 00 00 00 00 |........|
[27-JUN-2006 16:40:32:875] nsprecv: 48 4E 3B 01 00 00 00 00 |HN;.....|
[27-JUN-2006 16:40:32:875] nsprecv: 01 00 00 00 00 00 00 00 |........|
[27-JUN-2006 16:40:32:875] nsprecv: 00 00 00 00 00 00 00 00 |........|
[27-JUN-2006 16:40:32:875] nsprecv: 00 00 00 00 00 00 00 00 |........|
[27-JUN-2006 16:40:32:875] nsprecv: 00 00 00 00 00 00 00 00 |........|
[27-JUN-2006 16:40:32:875] nsprecv: 4A 4E 3B 01 74 C8 0B 07 |JN;.t...|
[27-JUN-2006 16:40:32:875] nsprecv: 00 00 00 00 0F 64 72 6F |.....dro|
[27-JUN-2006 16:40:32:875] nsprecv: 70 20 74 61 62 6C 65 20 |p.table.|
[27-JUN-2006 16:40:32:875] nsprecv: 74 61 62 31 01 00 00 00 |tab1....|
[27-JUN-2006 16:40:32:875] nsprecv: 01 00 00 00 00 00 00 00 |........|
[27-JUN-2006 16:40:32:875] nsprecv: 00 00 00 00 00 00 00 00 |........|

3 如若在数据库里定义一个触发器,用来记录会话的登陆信息,如: ip, 机器名,
登陆用户, sid, spid, logon_time 等,则可以使用这些信息和这些文件对应起来。
这样就可以知道所有登陆系统的会话的sql语句。

美中不足的是, 每个会话都会产生一个文件,并且,每个文件都有很多庞大的,无用的
垃圾信息,如上,只有这个才是我们需要的:

[27-JUN-2006 15:59:46:859] nsprecv: 00 00 00 00 FE 40 73 65 |.....@se|
[27-JUN-2006 15:59:46:859] nsprecv: 6C 65 63 74 20 73 70 69 |lect.spi|
[27-JUN-2006 15:59:46:859] nsprecv: 64 20 66 72 6F 6D 20 76 |d.from.v|
[27-JUN-2006 15:59:46:859] nsprecv: 24 70 72 6F 63 65 73 73 |$process|
[27-JUN-2006 15:59:46:859] nsprecv: 20 77 68 65 72 65 20 61 |.where.a|
[27-JUN-2006 15:59:46:859] nsprecv: 64 64 72 20 3D 0A 28 73 |ddr.=.(s|
[27-JUN-2006 15:59:46:859] nsprecv: 65 6C 65 63 74 20 70 61 |elect.pa|
[27-JUN-2006 15:59:46:859] nsprecv: 64 64 72 20 66 72 6F 6D |ddr.from|
[27-JUN-2006 15:59:46:859] nsprecv: 20 76 24 73 65 73 11 73 |.v$ses.s|
[27-JUN-2006 15:59:46:859] nsprecv: 69 6F 6E 20 77 68 65 72 |ion.wher|
[27-JUN-2006 15:59:46:859] nsprecv: 65 20 73 69 64 3D 38 29 |e.sid=8)|

[27-JUN-2006 16:40:32:875] nsprecv: 00 00 00 00 0F 64 72 6F |.....dro|
[27-JUN-2006 16:40:32:875] nsprecv: 70 20 74 61 62 6C 65 20 |p.table.|
[27-JUN-2006 16:40:32:875] nsprecv: 74 61 62 31 01 00 00 00 |tab1....|

我们得努力地从这些信息中找出我们需要的信息,当然,可以写个程序从这些文件
中提炼出我们需要的信息。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/1112/viewspace-103718/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-08-15

  • 博文量
    46
  • 访问量
    34493