Oracle 中記錄使用者登入資訊

來源:互聯網
上載者:User

標籤:os   使用   io   for   ar   art   log   sp   on   

我們可以使用 Oracle Audit 函數來記錄使用者登入資訊,但是如果開放了 Audit 函數將會使 Oracle 效能下降,甚至導致 Oracle 崩潰。那我們如何才能記錄使用者登入資訊呢?其實我們可以通過建立觸發器的方式來實現。方法如下:

1. 用 sys 使用者登入 Oracle
2. 建立記錄使用者登入資訊的表
CREATE TABLE LOG$INFORMATION
(
   ID        NUMBER(10),
   USERNAME  VARCHAR2(30),
   LOGINTIME DATE,
   TERMINAL  VARCHAR2(50),
   IPADRESS  VARCHAR2(20),
   OSUSER    VARCHAR2(30),
   MACHINE   VARCHAR2(64),
   PROGRAM   VARCHAR2(64),
   SID       NUMBER,
   SERIAL#   NUMBER,
   AUSID     NUMBER
)
/
 
3. 建立一個 Sequence,作為登入資訊的主鍵
CREATE SEQUENCE LOGIN_SEQ
minvalue 1
maxvalue 9999999999
start with 1
increment by 1
cache 20
/
 
4. 建立觸發器,記錄使用者登入資訊
CREATE OR REPLACE TRIGGER LOGIN_RECORD_TR
AFTER logon ON DATABASE
DECLARE
  mtSession v$session%ROWTYPE;
  CURSOR cSession(iiQuerySid IN NUMBER) IS
    SELECT * FROM v$session
       WHERE audsid = iiQuerySid;
BEGIN
OPEN cSession(userenv(‘SESSIONID‘));
   FETCH cSession INTO mtSession;
      IF cSession%FOUND AND SYS_CONTEXT (‘USERENV‘,‘IP_ADDRESS‘) IS NOT NULL THEN
         INSERT INTO log$information(
            id,
            username,
            logintime,
            terminal,
            ipadress,
            osuser,
            machine,
            program,
            sid,
            serial#,
            ausid
         ) VALUES(
            login_seq.nextval,
            USER,
            SYSDATE,
            mtSession.Terminal,
            SYS_CONTEXT (‘USERENV‘,‘IP_ADDRESS‘),
            mtSession.Osuser,
            mtSession.Machine,
            mtSession.Program,
            mtSession.Sid,
            mtSession.Serial#,
            userenv(‘SESSIONID‘)
         ); 
      END IF;
   CLOSE cSession;
EXCEPTION
   WHEN OTHERS THEN
     RAISE;
END;
/
 
5. 將 SYS.LOG$INFORMATION 授權給需要查看登入記錄的使用者
Grant select on SYS.LOG$INFORMATION to XXX

Oracle 中記錄使用者登入資訊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.