是这样的,刚接手一个oracle数据库,发现有个账号user1,所有的应用都在用,而且这个账号权限比较大,我需要修改这个账号密码,但是修改之前要修改掉所有应用的数据库配置信息。现在是谁也不记得所有的应用了,可能有些知道用了这个账号user1,有些就不记得了。有没有办法获取所有连接这个oracle数据库的客户端的ip地址,然后我根据这个ip地址去找应用,然后修改数据库的账号配置呢?

解决方案 »

  1.   

    从v$session的machine字段能看到机器名,如果需要ip,则要配合触发器
    触发器中
    dbms_application_info.set_client_info( sys_context('userenv','ip_address'));
    下一次建立会话的时候就会记录下ip地址
      

  2.   

    SQL> select dbms_application_info.set_client_info( sys_context('userenv','ip_address')) from dual;
    select dbms_application_info.set_client_info( sys_context('userenv','ip_address')) from dual
    ORA-00904: "DBMS_APPLICATION_INFO"."SET_CLIENT_INFO": invalid identifierSQL> 
      

  3.   

    不是这么用的。你搜下吧
    例如
    http://www.cnblogs.com/aoyihuashao/archive/2013/07/19/3200914.html
      

  4.   

    v$session 可以查到 机器名和 OS 的登录名。