目的:目前正在做数据库监控脚本,小部分功能是监控各种应用在数据库上的连接状态,其中重要的是获取会话ip,再根据ip远程连接,查看各种应用的功能。原因:由于数据库较多,且每个数据库上连接的应用不一,应用开发人员不一,监测数据库应用结果非应用开发人员也能看懂
方法/步骤
1、查询v$session并不能明确知道应用的具体功能selectt.MACHINE,t.PROCESS,t.PORT,t.PROGRAM,t.MODULEfromv$sessiontwhereusername='SA'orderbyt.MACHINE
2、查询到v$session中客户端信息为空selectt.CLIENT_INFOfromv$sessiontwheret.USERNAME='ZXX';
3、sys_context('use筠续师诈renv','ip_address')只能获取本地连接ipselec墉掠载牿tsys_context('userenv','ip_address'),sys_context('userenv','host')fromdual;如何获取其他主机session的ip呢?
4、添加触发器createorreplacetrigg娣定撰钠ertrg_login_onafterlogo荏鱿胫协nondatabasebegindbms_application_info.set_client_info(sys_context('userenv','ip_address'));end;一旦有新的session连接,oracle就会将session的ip_address写入到v$session中CLIENT_INFO字段中
5、缺陷:已经连接进来的session还是不能获取ip,只能和开发人员讨论