database link 關閉session問題
database link 關閉session問題
db-link session在基於連線池的管理中可能會引起目標管理系統的Session氾濫,從而消耗程式資源。
最近出現一個關於db-link session的問題,在A資料庫建立了一個DBLINK,其他有三臺伺服器利用DBLINK連線到A資料庫,但是在應用中利用了連線池進行
session管理,當使用DBLINK時,在A資料庫出現session快速增長,達到了頂峰從而導致程式資源消耗連線出現中斷。
方式一:
使用命令
alter sesssion close database link
使用系統包
DBMS_SESSION.CLOSE_DATABASE_LINK(dblink_name);
此種方式需要用在應用程式當中,ORACLE文件說明,此方式只對當前session起作用,所以管理員SYS去關閉也是不成功的。
SQL> conn / as sysdba
Connected.
SQL> alter session close database link test;
ERROR:
ORA-02081: database link is not open
注意,在使用此方式的命令之前需要用commit命令首先提交,否則會出現ora-02080錯誤。
--eg:實現關閉dblink
declare
v varchar2(50);
CURSOR r IS
select first_name from t1@test;
begin
open r;
loop
fetch r
into v;
exit when r%NOTFOUND;
end loop;
close r;
commit;
execute immediate 'alter session close database link test';
end;
/
方式二:
SQLNET.ORA檔案中的引數設定(針對PROFILE的建立,限制使用者資源使用)
SQLNET.EXPIRE_TIME=
注:用此方式會導致使用者的會話都受到影響,除非DBLINK是單獨使用一個使用者。
方式三:
用SELECT查詢並形成命令
select sid,
serial#,
username,
osuser,
machine,
'alter system kill session ' || '''' || sid || ',' || serial# ||
''' immediate;' session_level
from v$session
where machine in ('DB01', 'DB02', 'DB03');
注意每個命令後面後加的immediate,沒有加此關鍵字則v$session中的STATUS列會變為KILLED,但是資源並未釋放。
利用方式三可以做成JOB定時kill session,但這樣存在很大的風險。
總之,在使用DBLINK時一定要注意session的回收,在應用程式中使用
commit;
alter sesssion close database link
有關dblink的基礎問題參照:http://www.dbabeta.com/2008/oracle_database_link_basics.html#more-13
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9932141/viewspace-631509/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於session的問題Session
- hibernateTemplate session關閉Session
- 關於session的奇怪問題Session
- php關於session的問題PHPSession
- 關於database link的物件型別Database物件型別
- Oracle kill session相關問題(上)OracleSession
- Oracle kill session相關問題(下)OracleSession
- 關於session leak的問題分析Session
- 關於Session值丟失問題Session
- database link概述Database
- CREATE DATABASE LINKDatabase
- Database Link使用Database
- 建立Database LinkDatabase
- oracle database linkOracleDatabase
- Management on database linkDatabase
- 急問:關於servlet中得session問題ServletSession
- 關於jetty連線關閉問題Jetty
- Hiberante問題:session關閉後如何獲得該物件的懶載入物件。Session物件
- 關於session的銷燬的問題Session
- 關於filter獲取session的問題!!!FilterSession
- Database Link的建立Database
- Oracle Database Link ProblemsOracleDatabase
- Oracle database link 詳解OracleDatabase
- oracle database link 應用OracleDatabase
- oracle database link 的使用OracleDatabase
- session共享問題???Session
- OpenSessionInView裡的Session不能自動關閉?SessionView
- 關於session.auto_start報警的問題Session
- 新手關於jbuilder中除錯session的問題UI除錯Session
- alter database datafile offline drop相關問題Database
- session的存取問題Session
- database 空值問題Database
- 關於session.auto_start報警的問題薦Session
- 關於SESSION中出現的奇怪的問題!高手進~~Session
- 關於Action中的setAttribute,和session的問題!!!!Session
- 關於 PHP Session ID 改變的問題解決PHPSession
- 關於GI和DATABASE軟體版本高低的問題Database
- vivo 手機自動關閉開發者模式問題模式