oracle动态性能表

v$session

 

SADDR: session address

 

SID: session identifier,常用于连接其它列。

 

SERIAL#: sid 会重用,但是同一个sid被重用时,serial#会增加,不会重复。

 

AUDSID: audit session id。可以通过audsid查询当前session的sid。select sid from v$session where audsid=userenv('sessionid');

 

PADDR: process address,关联v$process的addr字段,可以通过这个字段查处当前session对应操作系统的那个进程的id。

 

USER#: session's user id。等于dba_users中的user_id。Oracle内部进程的user#为0。

 

USERNAME: session's username。等于dba_users中的username。Oracle内部进程的username为空。

 

COMMAND: session正在执行的SQL Id。1代表create table,3代表select。

 

TADDR: 当前的transaction address。可以用来关联v$transaction的addr字段。

 

LOCKWAIT: 可以通过这个字段查询出当前正在等待的锁的相关信息。sid & lockwait与v$lock中的sid & kaddr相对应。

 

STATUS: 用来判断session状态。Active:正执行SQL语句。Inactive:等待操作。Killed:被标注为删除。

 

SERVER: server type (dedicated or shared)

 

SCHEMA#: schema user id。Oracle内部进程的schema#为0。

 

SCHEMANAME: schema username。Oracle内部进程的schemaname为sys。

 

OSUSER: 客户端操作系统用户名。

 

PROCESS: 客户端process id。

 

MACHINE: 客户端machine name。

 

TERMINAL: 客户端执行的terminal name。

 

PROGRAM: 客户端应用程序。比如ORACLE.EXE (PMON)或者sqlplus.exe

 

TYPE: session type (background or user)

 

SQL_ADDRESS, SQL_HASH_VALUE, SQL_ID, SQL_CHILD_NUMBER: session正在执行的sql statement,和v$sql中的address, hash_value, sql_id, child_number相对应。

 

PREV_SQL_ADDR, PREV_HASH_VALUE, PREV_SQL_ID, PREV_CHILD_NUMBER: 上一次执行的sql statement。

 

MODULE, MODULE_HASH, ACTION, ACTION_HASH, CLIENT_INFO: 应用通过DBMS_APPLICATION_INFO设置的一些信息。

 

FIXED_TABLE_SEQUENCE: 当session完成一个user call后就会增加的一个数值,也就是说,如果session inactive,它就不会增加。因此可以根据此字段的值变化来监控某个时间点以来的session的性能情况。例如,一个小时以前,某个session的FIXED_TABLE_SEQUENCE是10000,而现在是20000,则表明一个小时内其user call比较频繁,可以重点关注此session的performance statistics。

 

ROW_WAIT_OBJ#: 被锁定行所在table的object_id。和dba_objects中的object_id关联可以得到被锁定的table name。

 

ROW_WAIT_FILE#: 被锁定行所在的datafile id。和v$datafile中的file#关联可以得到datafile name。

 

ROW_WAIT_BLOCK#: Identifier for the block containing the row specified in ROW_WAIT_ROW#

 

ROW_WAIT_ROW#: session当前正在等待的被锁定的行。

 

LOGON_TIME: session logon time

 

v$process

 

ADDR: process address。可以和v$session的paddr字段关联。

 

PID: Oracle进程identifier。

 

SPID: 操作系统进程identifier。

 

USERNAME: 操作系统进程的用户名。并非Oracle用户名。

 

SERIAL#:: process serial number。

 

TERMINAL: 操作系统terminal identifier(e.g., computer name)。

 

PROGRAM: 进程正在执行的程序(e.g., ORACLE.EXE (ARC0)),和v$session中的program类似。

 

BACKGROUND: 1代表oracle background process,null代表normal process。

 

 

查看当前用户的sid和serial#:

select sid, serial#, status from v$session where audsid=userenv('sessionid');

 

查看当前用户的spid:

select spid from v$process p, v$session s where s.audsid=userenv('sessionid') and s.paddr=p.addr;

select spid from v$process p join v$session s on p.addr=s.paddr and s.audsid=userenv('sessionid');

 

查看当前用户的trace file路径:

select p.value || '\' || t.instance || '_ora_' || ltrim(to_char(p.spid,'fm99999')) || '.trc'

    from v$process p, v$session s, v$parameter p, v$thread t

    where p.addr = s.paddr and s.audsid = userenv('sessionid') and p.name = 'user_dump_dest';

 

已知spid,查看当前正在执行或最近一次执行的语句:

select /*+ ordered */ sql_text from v$sqltext sql

    where (sql.hash_value, sql.address) in (

        select decode(sql_hash_value, 0, prev_hash_value, sql_hash_value), decode(sql_hash_value, 0, prev_sql_addr, sql_address)

        from v$session s where s.paddr = (select addr from v$process p where p.spid = to_number('&pid')))

    order by piece asc;

 

查看锁和等待:

col user_name format a10

col owner format a10

col object_name format a15

col sid format 999999

col serial# format 999999

col spid format a6

select /*+ rule */ lpad(' ', decode(l.xidusn, 0, 3, 0)) || l.oracle_username user_name,

    o.owner, o.object_name, o.object_type, s.sid, s.serial#, p.spid

    from v$locked_object l, dba_objects o, v$session s, v$process p

    where l.object_id = o.object_id and l.session_id = s.sid and s.paddr = p.addr

    order by o.object_id, xidusn desc;

 

这两个函数用来记录连接的session信息,经常用于触发器中,记录客户端的连接信息(比如IP)。我比较关注的是sessionid和ip,但是 select userenv('sessionid')得到的并不是用户的sid,而是v$session中的audsid,sid根据audsid再得到: 
SQL> select sid from v$session where audsid=userenv('sessionid'); 
       SID 
---------- 
       159 
至于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 "0" making the view not work. 
So, I'd just ignore "audsid" for now and use SID. 

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

1、 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; 
2、返回系统会话信息sys_context 
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 ; 

其中,第二个参数的可选值如下: 
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. 
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 

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 64 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.503 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_territory.characterset. 

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.) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值