自动断开,重新连接Oracle8x
在实际的数据库应用中,我们经常会遇到这样的问题。用户连接到Oracle数据库不跟进术后做手术,但他们没有连接很长一段时间的数据库,一个小型的应用系统,连接本身的数量是有限的,这似乎不会有什么严重的后果,但如果它适用于大型数据库等。税务,工商,如果许多数据库连接数,数据库服务器,一个消耗资源的连接,如果大量用户连接到数据库系统,但并没有进行任何操作,这是造成资源浪费的服务系统看不见,也造成服务器负荷的提高,对于那些在用户方面的工作,服务器不能最大限度的资源利用率大幅下降,严重的情况下可能会导致系统的性能。
如何处理这个问题对于流行的三层架构(浏览器/应用程序/服务器)的发展,这个问题可以通过设置应用程序的服务器端共享池避免。但传统的两层结构(客户端/服务器)的应用,我们必须避免这种资源浪费的混凝土。可以通过后台任务来监视系统中的所有进程,采取一定的措施,特别那些闲置超过一段时间的过程中,如客户提示用户连接时间太长,如果没有后续的操作系统会自动杀连接或打发空闲连接。以下是讨论如何实现用户自动监测过程在Oracle 8x环境和如何处理超过一定数量的空闲时间。
1。在系统中连接超过一定数量的空闲时间。
为了实现在一定时间内空闲连接后台任务的自动化处理,第一步是从所有连接识别这些关系需要处理,数据库服务器的工作是需要得到每个用户连接到服务器的登录时间和上次手术后的时间。在Oracle系统,有一个动态性能视图V $ SESSION,保存当前的系统连接的各种动态信息。其中,有两个领域,logon_time和last_call_et,得到上述两个答案。
我logon_time是日期型(日期)用户登陆时间领域;
我last_call_et是数字(number)领域,这意味着用户的最后陈述结束后的时间,单位为秒。每次用户执行一个新的声明,字段设置为0,和数是重新启动,我们可以使用此字段获取数据库上手术后的空闲时间用来连接用户。
下面的SQL查询可以得到一些基本的信息和当前连接到数据库的所有用户,如名称、用户名称、状态机连接,操作系统的用户的名字,这个过程的UNIX系统,在UNIX操作系统级断开语句,Oracle数据库系统断开的语句,落地时间和自由时间的最后操作的今天。
在上面的查询,我们可以屏蔽一些机器substr(机,1, 19)不在(机器名)条件。这些机器可能需要运行一些长时间的SQL语句或其他特殊情况,屏蔽这些机器的原因是这些机器不在后台后台处理,自动识别和处理任务。
{分页}
两。识别和断开空闲用户的存储过程
上面的查询可以获得系统中连接用户的所有基本情况,但是我们如何自动判断空闲时间的连接并自动断开连接呢Oracle系统提供了一种称为后端任务(作业)自动处理的机制,我们可以编写一个后台任务以定期执行,以确定是否有这样的用户连接。如果存在,它可以通过后台任务自动断开它。
创建一个存储过程来完成用户空闲时间的识别,必须先断开连接,然后添加一个后台任务定时(根据空闲时间的大小来确定执行的过程),可以在一定时间内自动断开系统空闲的用户需求。
存储过程p_monitor如下所示,其中的参数an_nimutes是用户输入的参数,它是用来识别是识别并断开闲置时间长的用户。该单元在几分钟内,默认是60分钟,即1小时。要注意的一点是,存储过程需要作为sys用户运行。因此,调用存储过程的后台任务也需要作为sys添加。
三。后台任务的定时执行
最后,我们向系统添加一个定时任务,并调用上面创建的存储过程来完成系统对空闲用户的工作的自动识别和处理。
下面是一个真正调用的示例。首先,将一个任务添加到sys用户中。任务每半小时运行,调用存储过程的p_monitor每次发现了超过1小时的空闲时间的连接,然后自动断开。
上一页