电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

userenv和sys


发布日期:2023/5/2
 

这两个函数用来记录连接的session信息经常用于触发器中记录客户端的连接信息(比如IP)我比较关注的是sessionid和ip但是 select userenv(sessionid)得到的并不是用户的sid而是v$session中的audsidsid根据audsid再得到

SQL> select sid from v$session where audsid=userenv(sessionid);

SID

至于sid和audsid的区别自己也没太搞明白网上摘了一段

from asktom

the audsid column is populated via a sequence and for normal

sessions is the same as userenv(sessionid) but for some background sessions it is not set

(it comes back as making the view not work

So Id just ignore audsid for now and use SID

下面记录了两个函数的具体用法

USERENV(OPTION)

返回当前的会话信息

OPTION=ISDBA若当前是DBA角色则为TRUE否则FALSE

OPTION=LANGUAGE返回数据库的字符集

OPTION=SESSIONID为当前会话标识符

OPTION=ENTRYID返回可审计的会话标识符

OPTION=LANG返回会话语言名称的ISO简记

OPTION=INSTANCE返回当前的实例

OPTION=terminal返回当前计算机名

SELECT USERENV(LANGUAGE) FROM DUAL;

返回系统会话信息sys_context

select

SYS_CONTEXT(USERENVTERMINAL) terminal

SYS_CONTEXT(USERENVLANGUAGE) language

SYS_CONTEXT(USERENVSESSIONID) sessionid

SYS_CONTEXT(USERENVINSTANCE) instance

SYS_CONTEXT(USERENVENTRYID) entryid

SYS_CONTEXT(USERENVISDBA) isdba

SYS_CONTEXT(USERENVNLS_TERRITORY) nls_territory

SYS_CONTEXT(USERENVNLS_CURRENCY) nls_currency

SYS_CONTEXT(USERENVNLS_CALENDAR) nls_calendar

SYS_CONTEXT(USERENVNLS_DATE_FORMAT) nls_date_format

SYS_CONTEXT(USERENVNLS_DATE_LANGUAGE) nls_date_language

SYS_CONTEXT(USERENVNLS_SORT) nls_sort

SYS_CONTEXT(USERENVCURRENT_USER) current_user

SYS_CONTEXT(USERENVCURRENT_USERID) current_userid

SYS_CONTEXT(USERENVSESSION_USER) session_user

SYS_CONTEXT(USERENVSESSION_USERID) session_userid

SYS_CONTEXT(USERENVPROXY_USER) proxy_user

SYS_CONTEXT(USERENVPROXY_USERID) proxy_userid

SYS_CONTEXT(USERENVDB_DOMAIN) db_domain

SYS_CONTEXT(USERENVDB_NAME) db_name

SYS_CONTEXT(USERENVHOST) host

SYS_CONTEXT(USERENVOS_USER) os_user

SYS_CONTEXT(USERENVEXTERNAL_NAME) external_name

SYS_CONTEXT(USERENVIP_ADDRESS) ip_address

SYS_CONTEXT(USERENVNETWORK_PROTOCOL) network_protocol

SYS_CONTEXT(USERENVBG_JOB_ID) bg_job_id

SYS_CONTEXT(USERENVFG_JOB_ID) fg_job_id

SYS_CONTEXT(USERENVAUTHENTICATION_TYPE) authentication_type

SYS_CONTEXT(USERENVAUTHENTICATION_DATA) authentication_data

from dual ;

其中第二个参数的可选值如下

AUTHENTICATION_DATA

Data being used to authenticate the login user For X certificate authenticated sessions this field returns the context of the certificate in HEX format

Note: You can change the return value of the AUTHENTICATION_DATA attribute using the length parameter of the syntax Values of up to 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

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

CLIENT_INFO

Returns up to bytes of user session information that can be stored by an application using the DBMS_APPLICATION_INFO package

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

CURRENT_SCHEMAID

Identifier of the default schema being used in the current session

CURRENT_USER

The name of the user whose privilege the current session is under

CURRENT_USERID

User ID of the user whose privilege the current session is under

DB_DOMAIN

Domain of the database as specified in the DB_DOMAIN initialization parameter

DB_NAME

Name of the database as specified in the DB_NAME initialization parameter

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

EXTERNAL_NAME

External name of the database user For SSL authenticated sessions using v certificates this field returns the distinguished name (DN) stored in the user certificate

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

HOST

Name of the host machine from which the client has connected

INSTANCE

The instance identification number of the current instance

IP_ADDRESS

IP address of the machine from which the client is connected

ISDBA

TRUE if you are logged on as SYS

LANG

The ISO abbreviation for the language name a shorter form than the existing LANGUAGE parameter

LANGUAGE

The language and territory currently used by your session along with the database character set in the form:language_territorycharacterset

NETWORK_PROTOCOL

Network protocol being used for communication as specified in the PROTOCOL=protocol portion of the connect string

NLS_CALENDAR

The current calendar of the current session

NLS_CURRENCY

The currency of the current session

NLS_DATE_FORMAT

The date format for the session

NLS_DATE_LANGUAGE

The language used for expressing dates

NLS_SORT BINARY

or the linguistic sort basis

NLS_TERRITORY

The territory of the current session

OS_USER

Operating system username of the client process that initiated the database session

PROXY_USER

Name of the database user who opened the current session on behalf of SESSION_USER

PROXY_USERID

Identifier of the database user who opened the current session on behalf of SESSION_USER

SESSION_USER

Database user name by which the current user is authenticated This value remains the same throughout the duration of the session

SESSION_USERID

Identifier of the database user name by which the current user is authenticated

SESSIONID

The auditing session identifier You cannot use this option in distributed SQL statements

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)

上一篇:判断一个死事务的恢复进度

下一篇:充分利用自动撤销管理的优点