怎样才能截获web服务器向数据库服务器发送的sql请求 怎样才能截获web服务器向数据库服务器发送的sql请求,有什么方法吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果WEB数据库连接是固定的,可以通过以下跟踪针对某一个会话的跟踪可以通过set_sql_trace_in_session来实现(1) 以管理员登录查询v$session表,查出具体是的SID及SERIAL#(2) exec dbms_system.set_sql_trace_in_session(SID,SERIAL#,true);(3) 执行WEB操作(4) exec dbms_system.set_sql_trace_in_session(SID,SERIAL#,false);然后通过查看Oracle安装目录下udump目录下生成的trc文件来分析。建议在WEB服务端对有关数据库操作的做封装,能过参数可以随时开启关闭跟踪信息。 跟踪倒是可以,只是我想把这个sql截获下来,控制它,然后根据需要发送给数据库服务器。还有办法吗? 补充kingright(kingright) (1) 以管理员登录查询v$session表,查出具体是的SID及SERIAL#(通过v$session的last_call_et字段确定)(2) exec dbms_system.set_sql_trace_in_session(SID,SERIAL#,true);(3) 执行WEB操作(4) exec dbms_system.set_sql_trace_in_session(SID,SERIAL#,false); 以上两位说的好像和我的意思是不一样的。我是说是否可以在到达数据库前截获,比如在http协议层上将其截获? LZ的想在HTTP层上截获但WEB服务器连数据库并不走HTTP,是tcp/ip协议 自己想办法分析tcp/ip包吧,不过有难度哦,建议还是在发送前验证的好 9441(不知道) WEB服务器连数据库并不走HTTP,那咱们在浏览器中登陆时不是也访问数据库了吗,浏览器不是用的http协议吗? 1 如果是10g的web服务功能,实际上好象是10g的web服务器自己再通过内部协议(具体什么协议没研究过)去访问数据库;2 如果是你自己的web服务器,一般是通过jdbc\ado\odbc等通过tcp/ip等协议去和数据库通信 如果是上面的第二种情况该如何将请求截获呢? 只能在数据库服务器机器上的某一个端口用socket监听了吧? 如果是上面的第二种情况该如何将请求截获呢? 只能在数据库服务器机器上的某一个端口用socket监听了吧? 反过来思考一下吧,如果是你自己的web服务器,一般是通过jdbc\ado\odbc等通过tcp/ip等协议去和数据库通信,但是通信之前构造的sql是你可以控制的,比如在java中,所有的sql都是先放入string或string buffer然后由statement对象调用执行的,你可以再执行前获取sql语句集,把语句和执行时间log到指定文件组,这样在web服务器记录log要比在数据库服务器上记录log简单的多嘛;其实最好的是花点时间和人力写个平台,实现web到数据库的通信,其它程序直接调用你自己定义的平台,既省去了重复写连接数据库的操作,又可以实现你说的统一控制 可以web服务器向数据库服务器发送的sql请求,都通过一个存储过程入口去执行!Create or Replace procedure WebRequestDB(c_sql varchar2;c_user Type;c_IP Type;.....)利用存储过程去截获Sql Text , user ,IP ...等信息,去检查合法性等... 有人说在session中就能将这些信息截获,有朋友做过这方面的程序吗? 看来只能先把sql放在固定的字符串里面了,分析这个字符串,然后调度!各位看是这样吗! UNDO表空间不能释放空间 请问关于oem的问题 数据查询~~谢谢 客户端 监听 现有一个商店的数据库,记录顾客及其购物情况 oracle数据从别的机器的F盘考到服务器的D盘,启动不了,要怎么修改 oracle7.3 oracle 805如何导入 oracle815 在线急等 请高手告诉我怎么能通过身份证计算出到现在的年龄 这句SQL怎么写?好难啊! oracle12c RAC安装配置 oracle global_name问题 高手请帮忙解决!高分! oracle的存储过程加密/解密
针对某一个会话的跟踪可以通过set_sql_trace_in_session来实现
(1) 以管理员登录查询v$session表,查出具体是的SID及SERIAL#
(2) exec dbms_system.set_sql_trace_in_session(SID,SERIAL#,true);
(3) 执行WEB操作
(4) exec dbms_system.set_sql_trace_in_session(SID,SERIAL#,false);然后通过查看Oracle安装目录下udump目录下生成的trc文件来分析。建议在WEB服务端对有关数据库操作的做封装,能过参数可以随时开启关闭跟踪信息。
(2) exec dbms_system.set_sql_trace_in_session(SID,SERIAL#,true);
(3) 执行WEB操作
(4) exec dbms_system.set_sql_trace_in_session(SID,SERIAL#,false);
但WEB服务器连数据库并不走HTTP,是tcp/ip协议
9441(不知道) WEB服务器连数据库并不走HTTP,那咱们在浏览器中登陆时不是也访问数据库了吗,浏览器不是用的http协议吗?
2 如果是你自己的web服务器,一般是通过jdbc\ado\odbc等通过tcp/ip等协议去和数据库通信
其实最好的是花点时间和人力写个平台,实现web到数据库的通信,其它程序直接调用你自己定义的平台,既省去了重复写连接数据库的操作,又可以实现你说的统一控制
Create or Replace procedure WebRequestDB(
c_sql varchar2;
c_user Type;
c_IP Type;
.....
)
利用存储过程去截获Sql Text , user ,IP ...等信息,去检查合法性等...