连接 :用户进程和 Oracle 实例间的通信通道(communication pathway)。这个通信通道是通过进程间的通信机制(interprocess communication mechanisms)(在同一个计算机上运行用户进程和 Oracle 进程)或网络软件(network software)(当数据库应用程序与 Oracle 服务器运行在不同的计算机上时,就需要通过网络来通信)建立的。
会话 :用户通过用户进程与 Oracle 实例建立的连接[此处连接与上文中的连接含义不同 ,主要指用户和数据库间的联系 ]。例如,当用户启动 SQL*Plus 时必须提供有效的用户名和密码,之后 Oracle 为此用户建立一个会话。从用户开始连接到用户断开连接(或退出数据库应用程序)期间,会话一直持续。
Oracle 数据库中的同一个用户可以同时创建多个会话。例如,用户名/密码为的SCOTT/TIGER 用户可以多次连接到同一个 Oracle 实例。
当系统没有运行在共享服务模式下时,Oracle 为每个用户会话创建一个服务进程(server process)。而当系统运行在共享服务模式下时,多个用户会话可以共享同一个服务进程。
在实际的工作中,数据库管理员(dba)需要经常要定时对数据库的连接情况进行检查,查看与数据库建立的会话数目是不是正常,假如建立了过多的连接,会消耗许多数据库的资源。与此同时,针对一些“挂死”的连接,可能会需要dba自行手工进行清理。下面的sql语句列出当前数据库建立的会话情况:
select
sid,serial#,username,program,machine,status
from
v$session
输出的结果:
sid
serial#
username
program
machine
status
----
-------
----------
-----------
---------------
--------
1
1
oracle.exe
work3
active
2
1
oracle.exe
work3
active
3
1
oracle.exe
work3
active
4
1
oracle.exe
work3
active
5
3
oracle.exe
work3
active
6
1
oracle.exe
work3
active
7
1
oracle.exe
work3
active
8
27
sys
sqlplus.exe
workgroup\work3
active
11
5
dbsnmp
dbsnmp.exe
workgroup\work3
inactive
其中sid
会话(session)的id号
serial#
会话的序列号,和sid一起用来唯一标识一个会话
username
建立该会话的用户名
status
当前这个会话的状态,active表示会话正在执行某些任务,inactive表示当前会话没有执行任何 *** 作
假如要手工断开某个会话,则执行:
alter
system
kill
session
'sid,serial#'注意:在上面的示例中,sid为1到7(username列为空)的会话,它是oracle数据库的后台进程,请大家不要对这些会话进行任何 *** 作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)