CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  高级技术

求助:如何截获客户端应用程序发出的sql命令语句

楼主hu_jb(从不决不永不)2005-04-01 15:47:29 在 Oracle / 高级技术 提问

是这样,本来是一个数据库,现在把其中一部份数据放到了另外一个orcal数据库中,但是前台的客户端程序一点都不能动,这样一来,用客户端去操作移走的数据的时候,就会提示数据不存在,有什么好的办法,在不动客户端的情况下,还能对移走的数据进行操作。不知道orcal有没有这样的功能,就是可以截获客户端发出的sql语句命令,这样就能进行判断是在哪个数据库里了,请大家帮帮忙! 问题点数:0、回复次数:8Top

1 楼cronuz(cronus)回复于 2005-04-01 16:21:13 得分 0

用建「DATABASE   LINK」方式把另外一个orcal数据库連接起来。  
   
  --建   DATABASE   LINK  
  CREATE   PUBLIC   DATABASE   LINK   linkname   CONNECT   TO   username   IDENTIFIED   BY   password   USING   'linkoracle'  
   
  --取  
  SELECT   *   FROM   tablename@linkname  
  Top

2 楼chanet(牧师)回复于 2005-04-01 17:48:01 得分 0

select   *   from   v$sql;Top

3 楼skystar99047(天星)回复于 2005-04-01 17:49:40 得分 0

在这台数据库中用dblink连接另外一台数据库  
  SQL>   create   public   database   link   dblinkname   connect   to   username   identified   by   password   using   'sid';  
  然后创建同义词  
  比如你的表table_name   已经移到了另外一个数据库中  
  SQL>   create   public   synonym   table_name   for   table_name@dblinkname;  
  然后就可以像操作本台机器上的表一样去操作这个同义词指向的表,如  
  SQL>   select   *   from   table_name;  
  SQL>   delete   from   table_name;  
  这样你的程序就不用改变Top

4 楼gzhughie(hughie)回复于 2005-04-01 19:18:46 得分 0

建立数据库的集群,不就什么多解决了,连程序改动都少。Top

5 楼hu_jb(从不决不永不)回复于 2005-04-01 21:15:20 得分 0

skystar99047(天星):不是表的转移,是数据的转移,新建的数据库和原来的数据库里面的表一模一样的,就是把原来的数据库里的一些历史数据转移到新的数据库里面去了,但是客户端的应用程序是封装好的exe,没有原码,所以一点都改动不了,这样的情况,用您说的这样方法能够实现么?可否再具体的讲一下解决方案,谢谢了!Top

6 楼nebulaly(极高明而道中庸)回复于 2005-04-02 18:48:22 得分 0

按照skystar99047(天星)的方法建DBLINK  
  把表名改掉,建立一个和表名同名的视图,数据来源于本地表和远程表的UNIONTop

7 楼skystar99047(天星)回复于 2005-04-02 19:09:38 得分 0

原来你是这样的情况呀  
  如果你的应用程序都是通过存储过程访问数据库的话,只修改存储过程就可以了,不过大多都是直接传入SQL语句处理的,所以不太好办。  
  我想你只是查询用到另一个数据库的历史数据,插入更新都是这台数据库上吧。  
   
  有这样一个方案你可以考虑:  
  1.比如原来有表A,现在分在两个数据库中,用上面我给你的方法将另一个数据库中的表关键到这台数据库,假如对象名(同义词)为B(另外一台数据库的表A)  
  2.将现在的表A重命名为C  
  3.然后新建一个视图命名为A,该视图数据来源于B和C,这样你的SQL语句查询就可以通过该视图进行,比如原来select   *   from   A查询的是表数据,而现在是通过视图中操作;对于插入和更新,因为操作的是视图,所以需要在该视图上建立替代触发器(需要你自己查资料如何去写,我这里就不给你细写了),以便对表数据进行插入更新操作,至于是插入更新到表C还是B,需要在触发器中实现。  
  通过此种方式,我想应该可以满足你的需求。Top

8 楼lijietz(臭流氓)回复于 2005-04-02 22:48:39 得分 0

alter   system   set   sql_trace=true;  
  在到user_dump_dest下寻找trace文件,可以用tkprof记录用户的所有sql。Top

相关问题

  • 有没有可以截获应用程序发出的SQL查询语句的工具?
  • 高分,如何监视应用程序向oracle 8i发送的sql语句?
  • 截取应用程序向Oracle数据库发送的SQL语句!
  • 用ClientDataSet开发单层文件型数据库应用程序时如何使用SQL语句?
  • 在三层数据库程序中,怎么才能让ClientDataSet传送SQL语句给应用程序服务器呢?
  • 高分讨论,不够再加:在应用程序中插入数据用insert sql语句还是用存储过程效率高?
  • ***********请问如何取得在客户端对表1所作操作的sql 语句和应用程序名、ip地址??*************
  • c#应用程序中连接数据库的语句怎么写?
  • 求救!如何把SQL命令从前端应用程序传给应用程序服务器
  • 请问如何点击按钮重启一个vb的应用程序。或是在vb如何用语句打开一个.exe应用程序?

关键词

  • 数据库
  • 视图
  • 语句
  • sql
  • 数据
  • 应用程序
  • 客户
  • database
  • 表
  • 客户端

得分解答快速导航

  • 帖主:hu_jb

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo