[20160818]關閉資料庫會話的dblink.txt
[20160818]關閉資料庫會話的dblink.txt
--昨天在跟別人聊天提到說對方的資料庫出現session長時間存在事務無法提交的情況,問我什麼回事。
--實際上很簡單,問題很有可能出在使用dblink的情況,透過測試說明問題並且學習如何關閉連結。
1.環境:
SCOTT@book> @ &r/ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
create public database link "loopback"
connect to scott
identified by "book"
using '127.0.0.1/BOOK';
--我以前提到,這樣可以dblink的測試,滿足dblink的測試需求。
2.測試:
SCOTT@book> select count(*) from v$session where username='SCOTT';
COUNT(*)
----------
1
--注意測試前僅僅1個會話username='SCOTT'。
SCOTT@book> select * from dept@loopback;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SCOTT@book> column XIDUSN_XIDSLOT_XIDSQN format a30
SCOTT@book> select dbms_transaction.local_transaction_id() XIDUSN_XIDSLOT_XIDSQN from dual ;
XIDUSN_XIDSLOT_XIDSQN
------------------------------
10.11.1182
SCOTT@book> @ &r/xid
XIDUSN_XIDSLOT_XIDSQN
------------------------------
10.11.1182
XIDUSN XIDSLOT XIDSQN UBAFIL UBABLK UBASQN UBAREC STATUS USED_UBLK USED_UREC XID ADDR START_DATE C70
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------------- ---------- ---------- ---------------- ---------------- ------------------- ----------------------------------------------------------------------
10 11 1182 0 0 0 0 ACTIVE 1 1 0A000B009E040000 000000008194F210 2016-08-19 09:43:27 ALTER SYSTEM DUMP UNDO BLOCK '_SYSSMU10_1197734989$' XID 10 11 1182;
ALTER SYSTEM DUMP UNDO HEADER '_SYSSMU10_1197734989$';
ALTER SYSTEM DUMP DATAFILE 0 BLOCK 0;
--很明顯執行dblink,會產生事務。
SCOTT@book> select count(*) from v$session where username='SCOTT';
COUNT(*)
----------
2
--現在變成了2個username='SCOTT'。
--如果這個時候執行如下:
SCOTT@book> alter session close database link loopback;
ERROR:
ORA-02080: database link is in use
--必須要先commit。
SCOTT@book> commit ;
Commit complete.
SCOTT@book> select count(*) from v$session where username='SCOTT';
COUNT(*)
----------
2
SCOTT@book> alter session close database link loopback;
Session altered.
SCOTT@book> select count(*) from v$session where username='SCOTT';
COUNT(*)
----------
1
--要發一個commit,在執行後面的語句才能關閉alter session close database link loopback;。
總結:
1.使用dblink會執行事務。
2.如果應用大量使用dblink訪問資料庫,消耗的連線會很可觀,即使你commit,dblink的連線也沒有斷開,要關閉必須執行:
commit或者rollback,才能執行alter session close database link loopback;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2123710/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫關閉資料庫
- 3.3.1 關於關閉資料庫資料庫
- 安全關閉Oracle資料庫Oracle資料庫
- 關閉資料庫會導致cache的sequence值丟失嗎?資料庫
- oracle資料庫的關閉過程Oracle資料庫
- 資料庫關閉的學問 (轉)資料庫
- CommMonitor 如何關閉監控會話?會話
- 【Shutdown】同一會話存在未提交事務時使用immediate選項無法關閉資料庫會話資料庫
- mongodb關閉資料庫例項MongoDB資料庫
- 資料庫啟動和關閉資料庫
- RAC 資料庫的啟動與關閉資料庫
- Oracle資料庫的啟動與關閉Oracle資料庫
- Oracle資料庫的啟動和關閉Oracle資料庫
- 關閉資料庫比較好的方法資料庫
- uWSGI 使用基於資料庫的方式會話資料庫會話
- 怎麼殺掉特定的資料庫會話資料庫會話
- 資料庫會話數量過多,定期清理inactive會話資料庫會話
- Laravel框架關鍵技術解析(3)redis資料庫,會話等Laravel框架Redis資料庫會話
- 3.3.3 使用immiedit模式關閉資料庫模式資料庫
- 資料庫自動啟動關閉資料庫
- rac 管理 啟動關閉資料庫資料庫
- 再次理解:關閉資料庫的幾個模式資料庫模式
- 關閉資料庫的備份與恢復資料庫
- 資料庫連線未關閉的問題資料庫
- ORACLE資料庫的啟動和關閉(轉)Oracle資料庫
- dataguard standby資料庫的關閉和啟動資料庫
- 我的10G資料庫關閉LOG資料庫
- SQLAlchemy - 資料庫的連線、建立會話與模型SQL資料庫會話模型
- db2資料庫的啟動和關閉DB2資料庫
- 如何以最快方式乾淨的關閉資料庫?資料庫
- 例項管理及資料庫的啟動關閉資料庫
- 啟動、關閉與資料庫的特殊狀態資料庫
- 隨系統啟動關閉的oracle資料庫Oracle資料庫
- 關閉ORACLE資料庫步驟參考Oracle資料庫
- ora-24324資料庫無法關閉資料庫
- informix 資料庫啟動關閉指令碼ORM資料庫指令碼
- Mysql 5.5 資料庫啟動關閉命令MySql資料庫
- DBA要謹慎關閉資料庫(轉)資料庫