如何通过SQL语句得到类似于Listener.log文件中的信息 , 包括登入用户名, 登入program ,ip , pc机器名 , 登入时间 ,所做的动作(sql语句). 
     目前我是想用程序或者PL/SQL或其他方法抓取特定IP(如: 192.10开头的)登入用户对数据库所作的动作 , 以便于查找由于删除资料或对数据库作动作而导致的数据库或数据库相连的程序异常 , 找出原因 .

解决方案 »

  1.   

    获得系统资源
    set feedback offdeclare   cursor c_ctx is select
              SYS_CONTEXT('USERENV','TERMINAL') terminal,
              SYS_CONTEXT('USERENV','LANGUAGE') language,
              SYS_CONTEXT('USERENV','SESSIONID') sessionid,
              SYS_CONTEXT('USERENV','INSTANCE') instance,
              SYS_CONTEXT('USERENV','ENTRYID') entryid,
              SYS_CONTEXT('USERENV','ISDBA') isdba,
              SYS_CONTEXT('USERENV','NLS_TERRITORY') nls_territory,
              SYS_CONTEXT('USERENV','NLS_CURRENCY') nls_currency,
              SYS_CONTEXT('USERENV','NLS_CALENDAR') nls_calendar,
              SYS_CONTEXT('USERENV','NLS_DATE_FORMAT') nls_date_format,
              SYS_CONTEXT('USERENV','NLS_DATE_LANGUAGE') nls_date_language,
              SYS_CONTEXT('USERENV','NLS_SORT') nls_sort,
              SYS_CONTEXT('USERENV','CURRENT_USER') current_user,
              SYS_CONTEXT('USERENV','CURRENT_USERID') current_userid,
              SYS_CONTEXT('USERENV','SESSION_USER') session_user,
              SYS_CONTEXT('USERENV','SESSION_USERID') session_userid,
              SYS_CONTEXT('USERENV','PROXY_USER') proxy_user,
              SYS_CONTEXT('USERENV','PROXY_USERID') proxy_userid,
              SYS_CONTEXT('USERENV','DB_DOMAIN') db_domain,
              SYS_CONTEXT('USERENV','DB_NAME') db_name,
              SYS_CONTEXT('USERENV','HOST') host,
              SYS_CONTEXT('USERENV','OS_USER') os_user,
              SYS_CONTEXT('USERENV','EXTERNAL_NAME') external_name,
              SYS_CONTEXT('USERENV','IP_ADDRESS') ip_address,
              SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') network_protocol,
              SYS_CONTEXT('USERENV','BG_JOB_ID') bg_job_id,
              SYS_CONTEXT('USERENV','FG_JOB_ID') fg_job_id,
              SYS_CONTEXT('USERENV','AUTHENTICATION_TYPE')
    authentication_type,
              SYS_CONTEXT('USERENV','AUTHENTICATION_DATA')
    authentication_data,
              SYS_CONTEXT('USERENV','CURRENT_SQL') current_sql,
              SYS_CONTEXT('USERENV','CLIENT_IDENTIFIER') client_identifier,
              SYS_CONTEXT('USERENV','GLOBAL_CONTEXT_MEMORY')
    global_context_memory
       from dual;
      

  2.   

    这条语句你可以得到,你想要的,但所做的动作(sql语句). 得要其他工具来
    查看 例如工具PLSQL Developer:的session选项
    select
              SYS_CONTEXT('USERENV','TERMINAL') terminal,
              SYS_CONTEXT('USERENV','LANGUAGE') language,
              SYS_CONTEXT('USERENV','SESSIONID') sessionid,
              SYS_CONTEXT('USERENV','INSTANCE') instance,
              SYS_CONTEXT('USERENV','ENTRYID') entryid,
              SYS_CONTEXT('USERENV','ISDBA') isdba,
              SYS_CONTEXT('USERENV','NLS_TERRITORY') nls_territory,
              SYS_CONTEXT('USERENV','NLS_CURRENCY') nls_currency,
              SYS_CONTEXT('USERENV','NLS_CALENDAR') nls_calendar,
              SYS_CONTEXT('USERENV','NLS_DATE_FORMAT') nls_date_format,
              SYS_CONTEXT('USERENV','NLS_DATE_LANGUAGE') nls_date_language,
              SYS_CONTEXT('USERENV','NLS_SORT') nls_sort,
              SYS_CONTEXT('USERENV','CURRENT_USER') current_user,
              SYS_CONTEXT('USERENV','CURRENT_USERID') current_userid,
              SYS_CONTEXT('USERENV','SESSION_USER') session_user,
              SYS_CONTEXT('USERENV','SESSION_USERID') session_userid,
              SYS_CONTEXT('USERENV','PROXY_USER') proxy_user,
              SYS_CONTEXT('USERENV','PROXY_USERID') proxy_userid,
              SYS_CONTEXT('USERENV','DB_DOMAIN') db_domain,
              SYS_CONTEXT('USERENV','DB_NAME') db_name,
              SYS_CONTEXT('USERENV','HOST') host,
              SYS_CONTEXT('USERENV','OS_USER') os_user,
              SYS_CONTEXT('USERENV','EXTERNAL_NAME') external_name,
              SYS_CONTEXT('USERENV','IP_ADDRESS') ip_address,
              SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') network_protocol,
              SYS_CONTEXT('USERENV','BG_JOB_ID') bg_job_id,
              SYS_CONTEXT('USERENV','FG_JOB_ID') fg_job_id,
              SYS_CONTEXT('USERENV','AUTHENTICATION_TYPE')
    authentication_type,
              SYS_CONTEXT('USERENV','AUTHENTICATION_DATA')
    authentication_data
       from dual
    /
      

  3.   

    AUTHENTICATION_DATA 
     Data being used to authenticate the login user. For X.503 certificate authenticated sessions, this field returns the context of the certificate in HEX2 format. 
     256 
     
     
     Note: You can change the return value of the AUTHENTICATION_DATA attribute using the length parameter of the syntax. Values of up to 4000 are accepted. This is the only attribute of USERENV for which Oracle implements such a change. 
      
     
    AUTHENTICATION_TYPE 
     How the user was authenticated: DATABASE: username/password authentication OS: operating system external user authentication NETWORK: network protocol or ANO authentication PROXY: OCI proxy connection authentication   30 
     
    BG_JOB_ID 
     Job ID of the current session if it was established by an Oracle background process. Null if the session was not established by a background process. 
     30 
     
    CLIENT_INFO 
     Returns up to 64 bytes of user session information that can be stored by an application using the DBMS_APPLICATION_INFO package. 
     64 
     
    CURRENT_SCHEMA 
     Name of the default schema being used in the current schema. This value can be changed during the session with an ALTER SESSION SET CURRENT_SCHEMA statement. 
     30 
     
    CURRENT_SCHEMAID 
     Identifier of the default schema being used in the current session. 
     30 
     
    CURRENT_USER 
     The name of the user whose privilege the current session is under. 
     30 
     
    CURRENT_USERID 
     User ID of the user whose privilege the current session is under 
     30 
     
    DB_DOMAIN 
     Domain of the database as specified in the DB_DOMAIN initialization parameter. 
     256 
     
    DB_NAME 
     Name of the database as specified in the DB_NAME initialization parameter 
     30 
     
    ENTRYID 
     The available auditing entry identifier. You cannot use this option in distributed SQL statements. To use this keyword in USERENV, the initialization parameter AUDIT_TRAIL must be set to true.  
     30 
     
    EXTERNAL_NAME 
     External name of the database user. For SSL authenticated sessions using v.503 certificates, this field returns the distinguished name (DN) stored in the user certificate. 
     256 
     
    FG_JOB_ID 
     Job ID of the current session if it was established by a client foreground process. Null if the session was not established by a foreground process. 
     30 
     
    HOST 
     Name of the host machine from which the client has connected. 
     54 
     
    INSTANCE 
     The instance identification number of the current instance.  
     30 
     
    IP_ADDRESS 
     IP address of the machine from which the client is connected. 
     30 
     
    ISDBA 
     TRUE if you currently have the DBA role enabled and FALSE if you do not.  
     30 
     
    LANG 
     The ISO abbreviation for the language name, a shorter form than the existing 'LANGUAGE' parameter. 
     62 
     
    LANGUAGE 
     The language and territory currently used by your session, along with the database character set, in this form: language_territory.characterset 
     52 
     
    NETWORK_PROTOCOL 
     Network protocol being used for communication, as specified in the 'PROTOCOL=protocol' portion of the connect string. 
     256 
     
    NLS_CALENDAR 
     The current calendar of the current session. 
     62 
     
    NLS_CURRENCY 
     The currency of the current session. 
     62 
     
    NLS_DATE_FORMAT 
     The date format for the session. 
     62 
     
    NLS_DATE_LANGUAGE 
     The language used for expressing dates. 
     62 
     
    NLS_SORT 
     BINARY or the linguistic sort basis. 
     62 
     
    NLS_TERRITORY 
     The territory of the current session. 
     62 
     
    OS_USER 
     Operating system username of the client process that initiated the database session 
     30 
     
    PROXY_USER 
     Name of the database user who opened the current session on behalf of SESSION_USER. 
     30 
     
    PROXY_USERID 
     Identifier of the database user who opened the current session on behalf of SESSION_USER. 
     30 
     
    SESSION_USER 
     Database user name by which the current user is authenticated. This value remains the same throughout the duration of the session. 
     30 
     
    SESSION_USERID 
     Identifier of the database user name by which the current user is authenticated. 
     30 
     
    SESSIONID 
     The auditing session identifier. You cannot use this option in distributed SQL statements. 
     30 
     
    TERMINAL 
     The operating system identifier for the client of the current session. In distributed SQL statements, this option returns the identifier for your local session. In a distributed environment, this is supported only for remote SELECT statements, not for remote INSERT, UPDATE, or DELETE operations. (The return length of this parameter may vary by operating system.) 
     
      

  4.   

    Very Good , 随后给分 .
      

  5.   

    v$session 也能告诉你不少东西
      

  6.   

    v$session 中可以保留多久的session ? 我看了一下 , 好像几乎一个星期的访问纪录都有保留在v$session中 ,但是只有最近两天的比较完整 ? 不知道Oracle内部是如何控制的 ?