
在实际的工作中,数据库管理员(DBA)需要经常要定时对数据库的连接情况进行检查,查看与数据库建立的会话数目是不是正常,假如建立了过多的连接,会消耗许多数据库的资源。与此同时,针对一些“挂死”的连接,可能会需要DBA自行手工进行清理。
下面的SQL语句列出当前数据库建立的会话情况:
select sid,serial#,username,program,machine,status
from v$session;
输出的结果:
SID SERIAL# USERNAME PROGRAM MACHINE STATUS
---- ------- ---------- ----------- --------------- --------
1 1 ORACLEEXE WORK3 ACTIVE
2 1 ORACLEEXE WORK3 ACTIVE
3 1 ORACLEEXE WORK3 ACTIVE
4 1 ORACLEEXE WORK3 ACTIVE
5 3 ORACLEEXE WORK3 ACTIVE
6 1 ORACLEEXE WORK3 ACTIVE
7 1 ORACLEEXE WORK3 ACTIVE
8 27 SYS SQLPLUSEXE WORKGROUP\WORK3 ACTIVE
11 5 DBSNMP dbsnmpexe WORKGROUP\WORK3 INACTIVE
其中SID 会话(session)的ID号;
SERIAL# 会话的序列号,和SID一起用来唯一标识一个会话;
USERNAME 建立该会话的用户名;
STATUS 当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何 *** 作;
假如要手工断开某个会话,则执行:
alter system kill session 'SID,SERIAL#';注意:在上面的示例中,SID为1到7(USERNAME列为空)的会话,它是Oracle数据库的后台进程,请大家不要对这些会话进行任何 *** 作。
1、用SQL语句:select
count()
from
masterdbosysprocesses
或者
sp_who
2、用管理界面:
SQL2000:进入企业管理器,管理——当前活动——进程信息
SQL2005:进入manager
studio
,展开对象管理器,管理——右键“活动监视器”——查看进程
SQL2008:进放manager
studio
在菜单栏下面有一行图标,点击最后一个图标“活动监视器”,进入活动监视器的界面后,点击“进程”
1)点击Net Configuration Assistant
2) 在d出的对话框中选择本地Net服务名配置,点下一步
3) 在服务名配置对话框中选择添加,点下一步
4)在如下对话框中填写要访问的oralce数据库的服务名,该服务名可以通过oralce登录用户名进入环境,在cshrc中,环境变量ORACLE_SID对应的值便是这个服务名,也可以在oracle用户环境下执行grep | env ORACLE_SID查找。
点击下一步
5)选择TCP协议,点下一步
6)主机名中填写要访问的oracle数据库服务器,使用标准端口号1521,点下一步
7)选中“是,进行测试”,点下一步
8) 点更改登录,填写要访问的数据库用户名和密码,确保其正确。此处主要是验证前面配置是否正确,如正确这里的测试就可以成功。
如果不正确请检查服务名、ip地址、用户名、密码中是否有写错,并改之,就可以成功了。
测试成功后点下一步
9)在下图中填写网络服务名,此处的网络服务名可以随意取名,点下一步,后面配置数据源的时候用的就是这个网络服务名
方法一用起来有点小复杂,不过可以了解数据库的配置步骤,方法二相对来说简单很多
找到本机oracle数据库安装的如下路径,如:
F:\app\Administrator\product\1110\client_1\network\admin,在该路径下有个文件tnsnamesora,打开文件会发现里面有很多连接配置,直接拷贝一个修改如下红色字
SYSDB_102 = //对应的就是上面方法一提到的网络服务名
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 104124102)(PORT = 1521)) //访问数据库的ip
)
(CONNECT_DATA =
(SERVICE_NAME = sysdb) //数据库服务名
)
)
当配置好后,就可以用PLSQL访问数据库了
1、通过系统的“性能”来查看:
开始->管理工具->性能(或者是运行里面输入
mmc)然后通过
添加计数器添加
SQL
的常用统计
然后在下面列出的项目里面选择用户连接就可以时时查询到sql
server数据库连接数了。
不过此方法的话需要有访问那台计算机的权限,就是要通过windows账户登陆进去才可以添加此计数器。
2、通过系统表来查询:
SELECT
FROM
[Master][dbo][SYSPROCESSES]
WHERE
[DBID]
IN
(
SELECT
[DBID]
FROM
[Master][dbo][SYSDATABASES]
WHERE
NAME='databaseName'
)
databaseName
是需要查看的数据库,然后查询出来的行数,就是当前的sql
server数据库连接数。不过里面还有一些别的状态可以做参考用。
3、通过系统过程来查询:
SP_WHO
'loginName'
loginName
是当然登陆Sql的用户名,一般程序里面都会使用一个username来登陆SQL这样通过这个用户名就能查看到此用户名登陆之后占用的连接了。
如果不写loginName,那么返回的就是所有的sql
server数据库连接。
你好,判断连接是否成功,可以判断conn是否为空,或者是否有异常抛出
try{
Connection
con
=
DriverManagergetConnection(url
,
username
,
password
)
;
}catch(SQLException
se){
Systemoutprintln("数据库连接失败!");
seprintStackTrace()
;
}
希望可以帮助到你
以上就是关于如何实时查看数据库当前活动连接全部的内容,包括:如何实时查看数据库当前活动连接、如何查看当前数据库的连接信息、如何用plsql查看数据库连接等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)