如何查询一段时间连接oracle服务器的ip以及操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何查询一段时间连接oracle服务器的ip以及操作相关的知识,希望对你有一定的参考价值。

oracle 的数据库,很多表被人删除掉了,现在已经确定了删除动作发生的时间段,
如何查询一段时间连接oracle服务器的ip以及操作

SELECT USER,SID,SERIAL#,UTL_INADDR.GET_HOST_ADDRESS AS HOST,SYS_CONTEXT('USERENV','IP_ADDRESS') AS LOCAL,SYSDATE
FROM V$SESSION WHERE AUDSID=SYS_CONTEXT('USERENV','SESSIONID');
这个SQL可以查到连接的IP,但可能只能取当前的,你可以在你确定删除动作发生的时间段来运行试试!
参考技术A 方法一
1 通过触发器,当产生新会话时触发将ip和操作写入到表中
当前会话ip
select USER,sid,serial#,UTL_INADDR.GET_host_ADDRESS as host,SYS_CONTEXT('USERENV','ip_ADDRESS') as local,SYSDATE
from V$session;

方法二:
查询监听日志,可以查看ip信息
cd $ORACLE_HOME/network/log/listener.log
通过审计功能,对用户或对操作进行审计

方法三:
通过日志挖掘,找出当前日志或归档日志里的sql
exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);
参考技术B host-only方式 ? 是不可能联通对方的

1.要想找到某台电脑,必须是同一网段
2.如果不同网段想找到某台计算机,则要告诉计算机下一步转弯处该如何走,要有个找路的过程,也就是我们常说的路由,在路由表中填写跨网段的网关,这样也可以实现互相联通

这方面的网络问题,推荐一个群,大家可以加,一起探讨 125933508
参考技术C 兔~*子&转换器 ,支持手机和电脑用的,转换器覆盖全国,转换器很多
你如果需要改不同的转换器地址,刷网站点击量,这个对你有很大帮助
一键换转换器,特别的方便
参考技术D LogMiner Viewer

oracle闲置超时,怎么样重新连接(急)

用的是数据源,当长时间不操作时,突然查询,会报ORA-02396: exceeded maximum idle time, please connect again错,不能修改oracle中配置以及数据源的配置;就是说我用try catch捕获到这个查询异常后,怎么样再次用JAVA代码重新恢复登录查询

原因:
1、EF 、EFCore 中默认存在链接池,每次数据库操作完成之后,会将连接丢到连接池。连接的释放过程单独管控(这里不做详细解释);
2、当Oracle数据库中设置有连接(会话)有效期时,到期后,Oracle服务端会中断连接,并将会话标识为:SNIPED状态;

注:查询数据中已超时,未释放的会话:select * from v$session where status = 'SNIPED';
3、当Oracle数据库中连接超时后,EF连接池中的连接依然存在,若再次进行数据库操作,则会提示 idle 超时异常;
解决方案:
方案1:调整数据库设置,将数据库中的“IDLE_TIME”设置未“UNLIMITED”,具体方式请自行百度;
可通过以下语句查看当前设置:
select username, b.* from dba_users a, dba_profiles b where a.profile = b.profile and username='IOT_SUB_ALL';
方案2:
在项目代码数据库连接字符串中添加:min pool size=0;设置,将EF连接池最小连接保持数设置为0(默认为1);
连接字符串样式:
"User Id=用户id;Password=密码;Data Source=IP:端口/服务器名;min pool size=0;"
连接字符串参数详细说明见:
https://docs.oracle.com/database/121/ODPNT/OracleConnectionClass.htm#ODPNT805
参考技术A 因为你使用的用户被设置了最大空闲时间的profile
建议你如果远程数据库的用户profile设置不能改,那每次使用完dblink后,及时关闭
用的时候再打开追问

说的很对,但是我的那个白天使用频繁,所以不能采纳使用完后及时关闭,只能想想报了这个错,怎么用JAVA重新登录一次,有样例吗,不胜感激

追答

你代码里的connect to数据库的那句话重新run下就好,连接语句可以重复执行

追问

我用的是JDBC,jdbcTemplate.getDataSource().getConnection()获取到connection,后面怎么弄,简单举个例子,辛苦了

本回答被提问者采纳
参考技术B 再次调用getConnection()获取连接就可以了 参考技术C 重新连接一下

以上是关于如何查询一段时间连接oracle服务器的ip以及操作的主要内容,如果未能解决你的问题,请参考以下文章

oracle如何获取调用者的IP,机器名等信息,以及他们操作的SQL

oracle数据库用了定时器查询数据库,每一分钟查询一次,一段时间后导致数据库最大连接数太大

如何优化操作大数据量数据库

浏览器窗口输入网址后发生的一段事情(http完整请求)

oracle 连接一段时间自动断开

oracle 远程连接超时问题!