SQL*Net more data from dblink引起library cache pin
今天論壇中發現一個問題在進行編譯或者刪除儲存過程的時候一直卡住,
當然這個很可能是LIBRARY CACHE PIN引起的。概念如下:
An Oracle instance has a library cache that contains the description of
different types of objects e.g. cursors, indexes, tables, views, procedures,
... Those objects cannot be changed when they are used. They are locked by a
mechanism based on library locks and pins. A session that need to use an object
will first acquire a library lock in a certain mode (null, shared or exclusive)
on the object, in order to prevent other sessions from accessing the same
object (e.g. exclusive lock when recompiling a package or view) or to maintain
the object definition for a long time. Locking an object is sometimes referred
as the job to locate it in the library cache and lock it in a certain mode.
If the session wants to modify or examine the object, it must acquire after
the lock also a pin in a certain mode (again null, shared or exclusive).
透過語句
different types of objects e.g. cursors, indexes, tables, views, procedures,
... Those objects cannot be changed when they are used. They are locked by a
mechanism based on library locks and pins. A session that need to use an object
will first acquire a library lock in a certain mode (null, shared or exclusive)
on the object, in order to prevent other sessions from accessing the same
object (e.g. exclusive lock when recompiling a package or view) or to maintain
the object definition for a long time. Locking an object is sometimes referred
as the job to locate it in the library cache and lock it in a certain mode.
If the session wants to modify or examine the object, it must acquire after
the lock also a pin in a certain mode (again null, shared or exclusive).
透過語句
select distinct decode(lob.kglobtyp,
0,
'NEXT OBJECT',
1,
'INDEX',
2,
'TABLE',
3,
'CLUSTER',
4,
'VIEW',
5,
'SYNONYM',
6,
'SEQUENCE',
7,
'PROCEDURE',
8,
'FUNCTION',
9,
'PACKAGE',
11,
'PACKAGE BODY',
12,
'TRIGGER',
13,
'TYPE',
14,
'TYPE BODY',
19,
'TABLE PARTITION',
20,
'INDEX PARTITION',
21,
'LOB',
22,
'LIBRARY',
23,
'DIRECTORY',
24,
'QUEUE',
28,
'JAVA SOURCE',
29,
'JAVA CLASS',
30,
'JAVA RESOURCE',
32,
'INDEXTYPE',
33,
'OPERATOR',
34,
'TABLE SUBPARTITION',
35,
'INDEX SUBPARTITION',
40,
'LOB PARTITION',
41,
'LOB SUBPARTITION',
42,
'MATERIALIZED VIEW',
43,
'DIMENSION',
44,
'CONTEXT',
46,
'RULE SET',
47,
'RESOURCE PLAN',
48,
'CONSUMER GROUP',
51,
'SUBSCRIPTION',
52,
'LOCATION',
55,
'XML SCHEMA',
56,
'JAVA DATA',
57,
'SECURITY PROFILE',
59,
'RULE',
62,
'EVALUATION CONTEXT',
'UNDEFINED') object_type,
lob.KGLNAOBJ object_name,
pn.KGLPNMOD lock_mode_held,
pn.KGLPNREQ lock_mode_requested,
ses.sid,
ses.serial#,
ses.username,
ses.process,
vp.spid
FROM x$kglpn pn,
v$session ses,
x$kglob lob,
v$session_wait vsw,
v$process vp
WHERE pn.KGLPNUSE = ses.saddr
and pn.KGLPNHDL = lob.KGLHDADR
and lob.kglhdadr = vsw.p1raw
and ses.PADDR = vp.ADDR
and vsw.event = 'library cache pin'
order by lock_mode_held desc;
檢視PIN的物件,確實有一個阻塞源。原來是在跑JOB,進一步分析發現了
0,
'NEXT OBJECT',
1,
'INDEX',
2,
'TABLE',
3,
'CLUSTER',
4,
'VIEW',
5,
'SYNONYM',
6,
'SEQUENCE',
7,
'PROCEDURE',
8,
'FUNCTION',
9,
'PACKAGE',
11,
'PACKAGE BODY',
12,
'TRIGGER',
13,
'TYPE',
14,
'TYPE BODY',
19,
'TABLE PARTITION',
20,
'INDEX PARTITION',
21,
'LOB',
22,
'LIBRARY',
23,
'DIRECTORY',
24,
'QUEUE',
28,
'JAVA SOURCE',
29,
'JAVA CLASS',
30,
'JAVA RESOURCE',
32,
'INDEXTYPE',
33,
'OPERATOR',
34,
'TABLE SUBPARTITION',
35,
'INDEX SUBPARTITION',
40,
'LOB PARTITION',
41,
'LOB SUBPARTITION',
42,
'MATERIALIZED VIEW',
43,
'DIMENSION',
44,
'CONTEXT',
46,
'RULE SET',
47,
'RESOURCE PLAN',
48,
'CONSUMER GROUP',
51,
'SUBSCRIPTION',
52,
'LOCATION',
55,
'XML SCHEMA',
56,
'JAVA DATA',
57,
'SECURITY PROFILE',
59,
'RULE',
62,
'EVALUATION CONTEXT',
'UNDEFINED') object_type,
lob.KGLNAOBJ object_name,
pn.KGLPNMOD lock_mode_held,
pn.KGLPNREQ lock_mode_requested,
ses.sid,
ses.serial#,
ses.username,
ses.process,
vp.spid
FROM x$kglpn pn,
v$session ses,
x$kglob lob,
v$session_wait vsw,
v$process vp
WHERE pn.KGLPNUSE = ses.saddr
and pn.KGLPNHDL = lob.KGLHDADR
and lob.kglhdadr = vsw.p1raw
and ses.PADDR = vp.ADDR
and vsw.event = 'library cache pin'
order by lock_mode_held desc;
檢視PIN的物件,確實有一個阻塞源。原來是在跑JOB,進一步分析發現了
SQL*Net more data from dblink
這個應該是網路問題,在INSERT到遠端庫的時候引起的,由於在JOB中有這個過程,所以JOB遲遲不能完成,同時儲存過程也不能完成。
下面是METALINK的原文
Insert Into Remote Table Using DBLINK Over VPN Tunnel Hangs on Large Number of Rows [ID 742535.1]
--------------------------------------------------------------------------------
修改時間 19-MAR-2010 型別 PROBLEM 狀態 PUBLISHED
In this Document
Symptoms
Changes
Cause
Solution
References
--------------------------------------------------------------------------------
Applies to:
Oracle Net Services - Version: 9.2.0.1.0 to 11.1.0.7.0
Information in this document applies to any platform.
Checked for relevance on 19-MAR-2010.
Symptoms
Suddenly an INSERT (as) SELECT FROM DBLINK hangs with source database waiting on "SQL*Net more data from dblink" wait event and the remote (target) shadow process disappearing.
SQL> INSERT INTO TABLEX (SELECT SESSION_ID, OBS_DT, UNIT_ID FROM
WEB_SUMM WHERE ROWNUM < 281);
280 rows created.
SQL> INSERT INTO TABLEX (SELECT SESSION_ID, OBS_DT, UNIT_ID FROM
WEB_SUMM WHERE ROWNUM < 282);
This hangs indefinitely with source in "SQL*Net more data from dblink" wait event.
Similarly, create table as select over the DBLINK also hangs:
SQL> CREATE TABLE TEST1 AS (SELECT SESSION_ID, OBS_DT, UNIT_ID FROM
WEB_SUMM WHERE ROWNUM < 32767);
Table created.
---------------
SQL> CREATE TABLE TEST1 AS (SELECT SESSION_ID, OBS_DT, UNIT_ID FROM
WEB_SUMM WHERE ROWNUM < 32768);
-- This also hangs indefinitely with source in "SQL*Net more data from dblink" wait event.
A PL/SQL doing an explicit cursor just fetching (not inserting) fails after 20 or so rows.
The only thing that runs to completion is plain SELECT from Sqlplus.
Changes
Database Links to databases on Local Area Network (LAN) do not exhibit this problem. This issue is limited to a database link where the target is a remote database accessed via a VPN Tunnel using default port 1521.
Cause
Problem was isolated to use of port 1521 over a VPN Tunnel that utilizes Cisco 5400/5500 Series
Adaptive Security Appliances (ASA) where the Cisco SQLnet fixup protocol/Sql Inspector was
enabled. However, on port 1522 where this Sql packet Inspection was not enabled, the problem did
not reproduce. Note: The Cisco 5400/5500 Series Adaptive Security Appliances (ASA) have this SQLnet fixup protocol/Sql Inspection enabled by default for port 1521.
--------------------------------------------------------------------------------
修改時間 19-MAR-2010 型別 PROBLEM 狀態 PUBLISHED
In this Document
Symptoms
Changes
Cause
Solution
References
--------------------------------------------------------------------------------
Applies to:
Oracle Net Services - Version: 9.2.0.1.0 to 11.1.0.7.0
Information in this document applies to any platform.
Checked for relevance on 19-MAR-2010.
Symptoms
Suddenly an INSERT (as) SELECT FROM DBLINK hangs with source database waiting on "SQL*Net more data from dblink" wait event and the remote (target) shadow process disappearing.
SQL> INSERT INTO TABLEX (SELECT SESSION_ID, OBS_DT, UNIT_ID FROM
WEB_SUMM WHERE ROWNUM < 281);
280 rows created.
SQL> INSERT INTO TABLEX (SELECT SESSION_ID, OBS_DT, UNIT_ID FROM
WEB_SUMM WHERE ROWNUM < 282);
This hangs indefinitely with source in "SQL*Net more data from dblink" wait event.
Similarly, create table as select over the DBLINK also hangs:
SQL> CREATE TABLE TEST1 AS (SELECT SESSION_ID, OBS_DT, UNIT_ID FROM
WEB_SUMM WHERE ROWNUM < 32767);
Table created.
---------------
SQL> CREATE TABLE TEST1 AS (SELECT SESSION_ID, OBS_DT, UNIT_ID FROM
WEB_SUMM WHERE ROWNUM < 32768);
-- This also hangs indefinitely with source in "SQL*Net more data from dblink" wait event.
A PL/SQL doing an explicit cursor just fetching (not inserting) fails after 20 or so rows.
The only thing that runs to completion is plain SELECT from Sqlplus.
Changes
Database Links to databases on Local Area Network (LAN) do not exhibit this problem. This issue is limited to a database link where the target is a remote database accessed via a VPN Tunnel using default port 1521.
Cause
Problem was isolated to use of port 1521 over a VPN Tunnel that utilizes Cisco 5400/5500 Series
Adaptive Security Appliances (ASA) where the Cisco SQLnet fixup protocol/Sql Inspector was
enabled. However, on port 1522 where this Sql packet Inspection was not enabled, the problem did
not reproduce. Note: The Cisco 5400/5500 Series Adaptive Security Appliances (ASA) have this SQLnet fixup protocol/Sql Inspection enabled by default for port 1521.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-680780/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【等待事件】SQL*Net more data from dblink事件SQL
- SQL*Net more data from dblink Reference NoteSQL
- SQL*Net more data from clientSQLclient
- Oracle的SQL*Net more data from client 等待事件分析OracleSQLclient事件
- Library Cache Pin 及 Library Cache Lock分析
- library cache lock和library cache pin理解
- 【等待事件】library cache pin事件
- 等待事件--library cache pin事件
- library cache pin等待分析
- library cache pin 等待事件事件
- 【等待事件】SQL*Net more data to client事件SQLclient
- SDU&SQL*NET MORE data to clientSQLclient
- library cache pin和library cache lock的診斷分析
- library cache lock和library cache pin區別總結
- sql version count引發cursor:pin s wait x及library cache latch library cache lockSQLAI
- 【等待事件】SQL*Net message from dblink事件SQL
- oracle library cache之library cache lock_library cache pin wait event釋義OracleAI
- 定位Library Cache pin,Library Cache lock等待的解決方法
- Oracle Edit product卡死不動,引起的等待事件‘library cache pin’解決方案Oracle事件
- 解決library cache pin等待事件事件
- enq:Library cache lock/pin等待事件ENQ事件
- library cache pin 阻塞程式查詢
- Library cache lock/pin詳解(轉)
- 查詢Library Cache Pin等待原因
- [20180918]等待事件SQL/Net more data from client.txt事件SQLclient
- zt_如何平面解決library cache lock和library cache pin
- SQL* Net message to client 和SQL * Net more data to client等待事件SQLclient事件
- DBA手記(學習)-library cache pin
- library cache pin等待事件的模擬事件
- 分析解決因”library cache pin”等待
- 【ASK_ORACLE】Library Cache概念篇(二)之Library Cache Pin的定義Oracle
- 由最長SQL想到的Latch Free( Library Cache Pin/Lock)整理~~草稿SQL
- 模擬cache buffers chains與library cache pin等待事件AI事件
- library cache pin/lock的解決辦法
- zt_library cache pin和lock等待分析
- zt_如何使用event 10049分析定位library cache lock and library cache pin
- 短連線 引起的 library cache lock
- 0124奇怪的SQL*Net message from dblinkSQL