最近在梳理資料庫程式連線資訊,這裡對指令碼做個總結,希望對需要的同仁有所幫助
一、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連線資訊統計