zoukankan      html  css  js  c++  java
  • 通过触发器记录数据库连接信息

    最近在梳理数据库程序连接信息,这里对脚本做个总结,希望对需要的同仁有所帮助

    一、Oracle连接信息统计

    create table logon_logs (logon_time date,
    username varchar2(30),
    machine varchar2(64),
    ipaddr varchar2(30))
    tablespace users; 
    
    
    create or replace trigger logusersconnects
    after logon on database 
    begin
    insert into logon_logs values(sysdate,
    user,
    sys_context('USERENV','HOST'),
    sys_context('USERENV','IP_ADDRESS'));
    commit;
    end;
    / 

    sys_context函数使用方法以及含义如下:

    第一个参数为'USERENV',是固定的,第二个参数也是固定的,但是是多选固定,可选的值如下所示:
    
    select sys_context('USERENV','AUTHENTICATION_TYPE') from dual;--用户的认证类型
    select sys_context('USERENV','AUTHENTICATION_DATA') from dual;--未知
    select sys_context('USERENV','BG_JOB_ID') from dual;--当前指定id的会话是否为oracle后台程序建立,不是则返回null
    select sys_context('USERENV','CLIENT_INFO') from dual;--通过dbms_application_info包可以存储高达64字节的用户会话信息
    select sys_context('USERENV','CURRENT_SCHEMA') from dual;--默认的schema将被当做当前的schema。当在当前会话中使用ALTER SESSION SET CURRENT_SCHEMA语句的时候,它的查询返回值将被改变
    select sys_context('USERENV','CURRENT_SCHEMAID') from dual;--当前schema的id
    select sys_context('USERENV','CURRENT_USER') from dual;--当前的登陆用户
    select REPLACE(SUBSTR(sys_context('USERENV','HOST'),1,30),'',':') from dual;--当前会话主机操作系统名
    select sys_context('USERENV','CURRENT_USERID') from dual;--当前登陆的用户的id
    select sys_context('USERENV','DB_DOMAIN') from dual;--为数据库的域指定初始化参数
    select sys_context('USERENV','DB_NAME') from dual;--数据库实例名
    select sys_context('USERENV','ENTRYID') from dual;--可用的审计标示符。不能再分布式sql语句中使用此选项。使用USERENV关键字必须置AUDIT_TRAIL的初始化参数为真。
    select sys_context('USERENV','EXTERNAL_NAME') from dual;--数据库用户的扩展名
    select sys_context('USERENV','FG_JOB_ID') from dual;--返回作业id当此会话是客户端进程创建。否则,返回null
    select sys_context('USERENV','INSTANCE') from dual;--当前数据库实例的标示id
    
    select sys_context('USERENV','ISDBA') from dual;--当前用户是否是以dba身份登录
    select sys_context('USERENV','LANG') from dual;--iso对‘LANGUAGE’的简称,查询的参数比“LANGUAGE”短
    select sys_context('USERENV','LANGUAGE') from dual;--结果为当前数据库使用的存储语言,跟上面查询意义一样
    select sys_context('USERENV','NETWORK_PROTOCOL') from dual;--用于通信的网络协议
    select sys_context('USERENV','NLS_CALENDAR') from dual;--当前会话使用的,格林尼治时间
    select sys_context('USERENV','NLS_CURRENCY') from dual;--本地化的货币符,如人民币为¥,美元符为$
    select sys_context('USERENV','NLS_DATE_FORMAT') from dual;--当前使用的日期格式,一般中国为dd-mon-rr
    select sys_context('USERENV','NLS_DATE_LANGUAGE') from dual;--表示日期的语言,如中文简体SIMPLIFIED CHINESE
    
    select sys_context('USERENV','NLS_TERRITORY') from dual;--数据库服务器所在区域,如中国CHINA
    select sys_context('USERENV','OS_USER') from dual;--操作系统的用户名
    select sys_context('USERENV','PROXY_USER') from dual;--是否使用代理用户。否返回null
    select sys_context('USERENV','PROXY_USERID') from dual;--代理用户id
    select sys_context('USERENV','SESSION_USER') from dual;--当前认证的数据库用户名
    select sys_context('USERENV','SESSION_USERID') from dual;--当前认证的数据库用户名id
    select sys_context('USERENV','SESSIONID') from dual;--当前会话id
    select sys_context('USERENV','TERMINAL') from dual;--操作系统用户组
    select sys_context('USERENV','IP_ADDRESS') from dual;--当前会话主机ip
    select sys_context('USERENV','HOST') from dual;--当前会话主机操作系统名

    二、SQLServer连接信息统计

    三、MySQL连接信息统计

    四、PG连接信息统计

  • 相关阅读:
    【转】Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件-十有三博客
    jfinal undertow项目集成JDK做成系统服务
    【转】解决undertow多个https证书的web项目部署问题
    说说 C# 9 新特性的实际运用
    php RSA加解密
    mscomm控件使用详解 转
    VB中让listview自动调整列宽
    QueryPerformanceFrequency使用方法--Windows高精度定时计数
    VB6鼠标滚轮插件
    Microsoft Visual C++ 6.0快捷键(绝对值得掌握)
  • 原文地址:https://www.cnblogs.com/rangle/p/8796370.html
Copyright © 2011-2022 走看看