认识⼀下oracle中session、connection、process三者间的关
⼀、connection
connection:就是从客户端到ORACLE实例的⼀条物理路径。他实际上是和session描述的是同⼀件事,只是描述的层次不⼀样,当创建了session,同时也会创建connection。connection可以在⽹络上建⽴,或者在本机通过IPC机制建⽴。通常会在客户端进程与⼀个专⽤服务器或⼀个调度器之间建⽴连接。
⼆、session
session:在计算机专业术语中,Session是指⼀个客户端⽤户与服务器系统间进⾏通信的时间间隔,通常指从注册进⼊系统到注销退出系统之间所经过的时间。通俗来讲,会话(Session) 是通信双⽅从开始通信到通信结束期间的⼀个上下⽂(Context)。这个上下⽂是⼀段位于服务器端的内存:记录了本次连接的客户端机器、通过哪个应⽤程序、哪个⽤户登录等信息。
会话(Session) 是和连接(Connection)是同时建⽴的,两者是对同⼀件事情不同层次的描述。简单讲,连接(Connection)是物理上的客户端同服务器的通信链路,会话(Session)是逻辑上的⽤户同服务器的
通信交互
三、process
process:是操作系统层⾯的概念。在专有服务模式下,⼀个session对应⼀个process。
四、⽤户进程和会话间的关系(专有服务模式下,⼆者是⼀⼀对应的)
4.1、⽆连接、⽆会话,只有⽤户进程:sqlplus  /nolog  ---> 只有⽤户进程,表⽰没有⼈登录,只是打开了sqlplus⼯具
# ps -elf |grep oracle<SID> |grep -v grep |wc -l              统计服务进程有多少个 (wc -l 做⼀个统计)
4.2、单个连接,单个会话,单个服务进程
$ sqlplus scott/tiger
4.3、⽆连接,⽆会话,单个服务进程 (异常断开,资源未释放)
4.4、单连接(物理连接),多会话,使⽤⼀个服务进程  在会话中开启autotrace功能
五、关于session和process两个视图
V$SESSION 显⽰每个当前会话的会话信息。
柱数据类型描述
SADDR RAW(4 | 8)会话地址
SID NUMBER会话标识符
SERIAL#NUMBER会话序列号。⽤于唯⼀标识会话的对象。如果会话结束且另⼀个会话以相同的会话ID开始,则保证会话级
命令应⽤于正确的会话对象。
AUDSID NUMBER审核会话ID
PADDR RAW(4 | 8)拥有会话的进程的地址
USER#NUMBER Oracle⽤户标识符
USERNAME VARCHAR2(30)Oracle⽤户名
COMMAND NUMBER正在进⾏的命令(解析最后⼀条语句); 有关值列表,请参阅。这些值也出现在AUDIT_ACTIONS表格中。
OWNERID NUMBER拥有可迁移会话的⽤户的标识符; 如果值为列,则列内容⽆效2147483644
对于使⽤Parallel Slaves的操作,将此值解释为4字节值。低位2字节表⽰会话编号,⾼位字
节表⽰查询协调器的实例ID。
TADDR VARCHAR2(8)事务状态对象的地址
LOCKWAIT VARCHAR2(8)会话等待的锁的地址; 如果没有则为NULL
STATUS VARCHAR2(8)会议现状:
ACTIVE - 当前正在执⾏SQL的会话
INACTIVE
KILLED - 标记为被杀的会话
CACHED - 会话临时缓存以供Oracle * XA使⽤
SNIPED - 会话⽆效,等待客户端
SERVER VARCHAR2(9)服务器类型:
DEDICATED
SHARED
PSEUDO
POOLED
NONE
SCHEMA#NUMBER架构⽤户标识符
SCHEMANAME VARCHAR2(30)架构⽤户名
OSUSER VARCHAR2(30)操作系统客户端⽤户名
PROCESS VARCHAR2(24)操作系统客户端进程ID
MACHINE VARCHAR2(64)操作系统机器名称
PORT NUMBER客户端端⼝号
TERMINAL VARCHAR2(30)操作系统终端名称
PROGRAM VARCHAR2(48)操作系统程序名称
TYPE VARCHAR2(10)会话类型
SQL_ADDRESS RAW(4 | 8)⽤于SQL_HASH_VALUE标识当前正在执⾏的SQL语句
SQL_HASH_VALUE NUMBER⽤于SQL_ADDRESS标识当前正在执⾏的SQL语句
SQL_ID VARCHAR2(13)当前正在执⾏的SQL语句的SQL标识符
SQL_CHILD_NUMB
ER
NUMBER当前正在执⾏的SQL语句的⼦编号
SQL_EXEC_START DATE此会话当前执⾏的SQL执⾏开始的时间; 如果SQL_ID为NULL ,则为NULL
SQL_EXEC_ID NUMBER SQL执⾏标识符; NULL如果SQL_ID为NULL或者该SQL的执⾏尚未启动(请参阅参考资
料V$SQL_MONITOR)
PREV_SQL_ADDR RAW(4 | 8)⽤于PREV_HASH_VALUE标识最后执⾏的SQL语句
PREV_HASH_VALU
E
NUMBER⽤于SQL_HASH_VALUE标识最后执⾏的SQL语句
PREV_SQL_ID VARCHAR2(13)执⾏的最后⼀个SQL语句的SQL标识符
PREV_CHILD_NUM
BER
NUMBER执⾏的最后⼀个SQL语句的⼦编号
PREV_EXEC_STAR T DATE SQL执⾏开始执⾏最后⼀次执⾏的SQL语句
柱数据类型描述
PREV_EXEC_ID NUMBER最后执⾏的SQL语句的SQL执⾏标识符
PLSQL_ENTRY_OBJ
ECT_ID
NUMBER堆栈中最顶层PL / SQL⼦程序的对象ID; 如果堆栈上没有PL / SQL⼦程序,则为NULL
PLSQL_ENTRY_SU
BPROGRAM_ID
NUMBER堆栈中最顶层PL / SQL⼦程序的⼦程序ID; 如果堆栈上没有PL / SQL⼦程序,则为NULL PLSQL_OBJECT_ID NUMBER当前正在执⾏的PL / SQL⼦程序的对象ID; 执⾏SQL时为NULL
PLSQL_SUBPROGR
AM_ID
NUMBER当前正在执⾏的PL / SQL对象的⼦程序ID; 执⾏SQL时为NULL
MODULE VARCHAR2(48)通过调⽤DBMS_APPLICATION_INFO.SET_MODULE过程设置的当前正在执⾏的模块的名称MODULE_HASH NUMBER MODULE列的哈希值
ACTION VARCHAR2(32)通过调⽤DBMS_APPLICATION_INFO.SET_ACTION过程设置的当前正在执⾏的操作的名称ACTION_HASH NUMBER ACTION列的哈希值
CLIENT_INFO VARCHAR2(64)由DBMS_APPLICATION_INFO.SET_CLIENT_INFO程序设置的信息
FIXED_TABLE_SEQ UENCE NUMBER这包含⼀个数字,每次会话完成对数据库的调⽤时都会增加,并且从动态性能表中进⾏了⼲预选择。性能监视器可以使⽤此列来监视数据库中的统计信息。每次性能监视器查看数据库时,它只需要查看当前活动
的会话或此列中的值⾼于性能监视器上次查看的最⾼值。⾃上次性能监视器查看数据库以来,所有其他会
提交更改是内存条吗话都处于空闲状态。
ROW_WAIT_OBJ#NUMBER包含指定⾏的表的对象ID ROW_WAIT_ROW#
ROW_WAIT_FILE#NUMBER包含指定⾏的数据⽂件的标识符ROW_WAIT_ROW#。仅当会话当前正在等待提交另⼀个事务且
值ROW_WAIT_OBJ#不是时,此列才有效-1。
ROW_WAIT_BLOCK #NUMBER包含指定⾏的块的标识符ROW_WAIT_ROW#。仅当会话当前正在等待提交另⼀个事务且值ROW_WAIT_OBJ#不是时,此列才有效-1。
ROW_WAIT_ROW#NUMBER当前⾏被锁定。仅当会话当前正在等待提交另⼀个事务且值ROW_WAIT_OBJ#不是时,此列才有效-1。TOP_LEVEL_CALL#NUMBER Oracle顶级电话号码
LOGON_TIME DATE登录时间
LAST_CALL_ET NUMBER如果会话STATUS当前ACTIVE,则该值表⽰⾃会话变为活动以来经过的时间(以秒为单位)。
如果会话STATUS当前INACTIVE,则该值表⽰⾃会话变为⾮活动状态以来经过的时间(以秒
为单位)。
PDML_ENABLED VARCHAR2(3)此列已替换为该PDML_STATUS列
FAILOVER_TYPE VARCHAR2(13)指⽰是否以及在何种程度上为会话启⽤透明应⽤程序故障转移(TAF):
NONE - 此会话禁⽤故障转移
SESSION - 客户端能够在断开连接后对其会话进⾏故障转移
SELECT - 客户端也可以对正在进⾏的查询进⾏故障转移
也可以看看:
有关TAF的更多信息,请参见
有关配置TAF的信息,请参见
FAILOVER_METHO D VARCHAR2(10)表⽰会话的透明应⽤程序故障转移⽅法:
NONE - 此会话禁⽤故障转移
BASIC - 客户端本⾝在断开连接后重新连接
PRECONNECT - 备份实例可以⽀持备份它的每个实例的所有连接
柱数据类型描述
FAILED_OVER VARCHAR2(3)指⽰会话是在故障转移模式下运⾏YES还是已发⽣故障转移()或不是(NO)
RESOURCE_CONS
UMER_GROUP
VARCHAR2(32)会话的当前资源使⽤者组的名称
PDML_STATUS VARCHAR2(8)如果ENABLED,会话处于PARALLEL DML启⽤模式。如果DISABLED,PARALLEL DML会话不⽀持启⽤
模式。如果FORCED,会话已被更改为强制PARALLEL DML。
PDDL_STATUS VARCHAR2(8)如果ENABLED,会话处于PARALLEL DDL启⽤模式。如果DISABLED,PARALLEL DDL会话不⽀持启⽤
模式。如果FORCED,会话已被更改为强制PARALLEL DDL。
PQ_STATUS VARCHAR2(8)如果ENABLED,会话处于PARALLEL QUERY启⽤模式。如果DISABLED,PARALLEL QUERY会话不⽀
持启⽤模式。如果FORCED,会话已被更改为强制PARALLEL QUERY。
CURRENT_QUEUE_
DURATION
NUMBER如果是queued(1),则会话已排队的当前时间量。如果当前没有排队,则值为0。
CLIENT_IDENTIFIE
R
VARCHAR2(64)会话的客户端标识符
BLOCKING_SESSIO N_STATUS VARCHAR2(11)阻⽌会话状态:
VALID
NO HOLDER
GLOBAL
NOT IN WAIT
UNKNOWN
BLOCKING_INSTAN
CE
NUMBER阻塞会话的实例标识符
BLOCKING_SESSIO
N
NUMBER阻塞会话的会话标识符
SEQ#NUMBER唯⼀标识当前或最后等待的数字(每次等待递增)
EVENT#NUMBER活动编号
EVENT VARCHAR2(64)会话正在等待的资源或事件
另请参阅:
P1TEXT VARCHAR2(64)第⼀个等待事件参数的描述
P1NUMBER第⼀个等待事件参数(⼗进制)
P1RAW RAW(8)第⼀个等待事件参数(⼗六进制)
P2TEXT VARCHAR2(64)第⼆个等待事件参数的描述
P2NUMBER第⼆个等待事件参数(⼗进制)
P2RAW RAW(8)第⼆个等待事件参数(⼗六进制)
P3TEXT VARCHAR2(64)第三个等待事件参数的描述
P3NUMBER第三个等待事件参数(⼗进制)
P3RAW RAW(8)第三个等待事件参数(⼗六进制)
WAIT_CLASS_ID NUMBER等待事件类的标识符
WAIT_CLASS#NUMBER等待事件的类的编号
WAIT_CLASS VARCHAR2(64)等待事件的类的名称
WAIT_TIME NUMBER如果会话当前正在等待,则值为0。如果会话未处于等待状态,则值如下:柱数据类型描述
脚注1 此列的数据类型VARCHAR2(64)从Oracle Database 11g第2版(11.2.0.2)开始。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。