Oracle cursor pin S wait on X 等待事件 說明
這個等待事件也算一個常見的等待事件。 在warehouse blog和itpub 上有相關的2個帖子。 連線如下:
cursor: pin S wait on X等待事件模擬
cursor: pin S wait on X
一.Mutex 說明
Oracle Mutex 機制說明
To improve cursor execution and also hard parsing, a new memory serialization mechanism has been created in 10gR2.
For certain shared-cursor related operations,
mutexes are used as a replacement for library cache latches and librarycache pins.
-- mutexes 替代 library cache latches 和 librarycache pins。
Using mutexes is faster, uses less CPU and also allows significantly improved concurrency over the existing latch mechanism.
The use of mutexes for cursor pins
can be enabled by setting the init.ora parameter _use_kks_mutex toTRUE.
Btw, things get more fun in 10.2, you can pin cursors without getting library cache pin latch, using KGX mutexes.
So if your environment supports atomic compare and swap operation (as CMPXCHG on Intel), you might get away without cursor_space_for_time setting for ultrahigh execution rates. Otherwise the atomic mutex operations would be achieved
using new KGX latches.
At least on my laptop this feature isn’t enabled by default (from andOracleWorld’s paper I remember that it should become default in 10.2.0.2), but
so far you can experiment with it if you set _kks_use_mutex_pin = true and bounce the instance
There are also x$mutex_sleep and x$mutex_sleep_history fixed tables that can show some interesting information if you generate some mutex waits into them.
在Oracle 10.2中,對shared pool中的一些Serialization operation使用更輕量的 KGX mutexes (_use_kks_mutex) 取代library cache pin,從而降低CPU Usage, 是否使用這種muetx機制受到隱含引數_kks_use_mutex_pin的限制。
從10.2.0.2開始該引數default為true,使用這種機制oracle是為了解決library cache bin latch的序列使用問題,但是mutex貌似還不是很穩定,在很多系統中會出現cursor: pin S wait on X等待事件,這個事件和mutex的使用有關,最近一客戶受到cursor: pin S wait on X等待事件的困擾,出現cursor: pin S wait on X等待事件時通常等待比較嚴重,系統會出現hang。
cursor: pin S wait on X
A session waits for this event when it is requesting a shared mutex pin and another session is holding an exclusive mutex pin on the same cursor object.
Wait Time: Microseconds
Parameter Description
P1 Hash value of cursor
P2 Mutex value (top 2 bytes contains SID holding mutex in exclusive mode, and bottom two bytes usually hold the value 0)
P3 Mutex where (an internal code locator) OR'd with Mutex Sleeps
這個事件的出現受到很多因素的影響,在高併發的情況下:
(1)sga自動管理,sga的頻繁擴充套件和收縮
(2)過渡硬解析,造成library cache中的cursor object被頻繁的reload
(3)bug
_kks_use_mutex_pin 是隱含引數,通過v$parameter 檢視查不到,需要通過如下SQL 來檢視。
SELECTi.ksppinm name,
i.ksppdesc description,
CV.ksppstvl VALUE,
CV.ksppstdf isdefault,
DECODE(BITAND(CV.ksppstvf,7),
1,'MODIFIED',
4,'SYSTEM_MOD',
'FALSE')
ismodified,
DECODE(BITAND(CV.ksppstvf,2),2,'TRUE','FALSE') isadjusted
FROMsys.x$ksppi i, sys.x$ksppcv CV
WHEREi.inst_id =USERENV('Instance')
ANDCV.inst_id =USERENV('Instance')
AND i.indx =CV.indx
AND i.ksppinm LIKE'/_%'ESCAPE'/'
and i.ksppinm like'_kks%'
ORDERBYREPLACE(i.ksppinm,'_','');
Oracle 引數分類和 引數的檢視方法
二. 相關測試
[email protected](rac2)> select * from v$version where rownum<2;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
SESSION 1:
-------------------------
--建立測試表
[email protected](rac2)> create table t as select * from dba_objects;
Table created.
--檢視session ID
[email protected](rac2)> select sid from v$mystat where rownum=1;
SID
----------
125
[email protected](rac2)> declare
2v_string varchar2(100) := 'alter system flush shared_pool';
3msql varchar2(200);
4begin
5loop
6execute immediate v_string;
7for i in 1..100 loop
8msql:='select object_id from t where object_id='||i;
9execute immediate msql;
10end loop;
11end loop;
12end;
13/
session 2:
-------------------------
--檢視session ID
[email protected](rac2)> select sid from v$mystat where rownum=1;
SID
----------
130
[email protected](rac2)> declare
2v_string varchar2(100) := 'alter system flush shared_pool';
3msql varchar2(200);
4begin
5loop
6execute immediate v_string;
7for i in 1..100 loop
8msql:='select object_id from t where object_id='||i;
9execute immediate msql;
10end loop;
11end loop;
12end;
13/
session 3:
------------------------
用如下SQL 進行監控,在sqlplus 裡看起來格式有點亂,我放到Toad執行了。
/* Formatted on 2011/6/16 16:06:44 (QP5 v5.163.1008.3004) */
SELECT b.*, sq.sql_text
FROM v$session se,
v$sql sq,
(SELECTa.*, s.sql_text
FROM v$sql s,
(SELECTsid,
event,
wait_class,
p1,
p2raw,
TO_NUMBER(SUBSTR(p2raw,1,4),'xxxx')
sid_hold_mutex_x
FROM v$session_wait
WHERE event LIKE'cursor%')a
WHERE s.HASH_VALUE =a.p1) b
WHERE se.sid= b.sidAND se.sql_hash_value = sq.hash_value;
通過監控發現兩個session在執行相同的sql,他們在相同的cursor object上互動請求a shared mutex pin或者 an exclusive mutex pin 從而造成等待。
--監視sql reae區的cursor object reload情況
[email protected](rac2)>select namespace ,reloads from v$librarycache;
NAMESPACERELOADS
--------------- ----------
SQL AREA790805
TABLE/PROCEDURE103713
BODY59
TRIGGER27
INDEX94280
CLUSTER11
OBJECT0
PIPE0
JAVA SOURCE0
JAVA RESOURCE0
JAVA DATA0
11 rows selected.
--監視parse情況
[email protected](rac2)> col name format a40
[email protected](rac2)> select s.sid, s.serial#,b.name,a.value
2from v$sesstat a, v$statname b, v$session s
3where a.statistic# = b.statistic# and s.sid=a.sid
4and b.name like '%parse%'
5and s.sid in (130,125);
sidserial# namevalue
---------- ---------- ---------------------------------------- ----------
12541915 parse time cpu115260
12541915 parse time elapsed146605
12541915 parse count (total)633792
12541915 parse count (hard)602732
12541915 parse count (failures)4
1306074 parse time cpu69559
1306074 parse time elapsed99149
1306074 parse count (total)394689
1306074 parse count (hard)365538
1306074 parse count (failures)0
從這裡看出,硬解析很多,library cache中的cursor object被頻繁的reload。
三. 幾個與mutex 相關的檢視
在第一部分,提到了x$mutex_sleep 和x$mutex_sleep_history。我們在聯機文件裡看不到相關的說明。
不過可以檢視到v$mutex_sleep和v$mutex_sleep_history的說明。 但是v$ 比x$ 字典顯示的列要少。
select * from x$mutex_sleep;
select * from v$mutex_sleep;
這個等待事件也算一個常見的等待事件。
在warehouse blog和itpub 上有相關的2個帖子。
連線如下:
cursor: pin S wait on X等待事件模擬
cursor
下午接到維護髮來的郵件,大體記憶體如下:
3月7號晚10點左右,資源管理系統資料庫 gxdb1 發生大量鎖等待,而且出現多個阻塞鎖。活動session數達到350左右, 等待事件為 cursor : pin s wait on X 。經殺掉相關session後系 現象:
alter system switch logfile; 會hang住解決步驟:
SQL> select event,count(*) from v$session group by event;
EVENT
今天晚上在一個比較重要的庫上,CPU嚴重的衝了一下,導致DB響應變慢,大量應用連線timeout,緊接著LISTENER就掛了,連線數也滿了等一連串問題。
我們的監控抓取了當時系統的等待事件,ACTIVE SQL及SESSION_WAIT等待事件,所以問題比較容量定位,檢
37.Oracle深度學習筆記——RAC的相關等待事件
歡迎轉載,轉載請標明出處:http://blog.csdn.net/notbaron/article/details/50891037
在效能BENCHMARK中碰到的幾個等待事件:
gc cr multi block request
來自白大師(白鱔)對log file sync等待事件優化的總結,供各位puber們學習參考:一、 log file sync平均等待事件時間超過7ms,如果等待時間過長,說明log write每次寫入的時間過長,如果能夠優化redo日誌檔案儲存,使之存放在更快的磁 SQL> select sid, event,wait_class, seconds_in_wait
2 from v$session_wait w
3 where w.WAIT_CLASS <> 'Idle';
SID EVENT oracle local write wait Note 1: TypicallyDBWR has to free up some buffers when you want to read something from the disk.During this process the turn dex com llb 供應商 tab cnblogs buffer 創建
BAPI_TRANSACTION_COMMIT
IF WAIT EQ SPACE.
COMMIT WORK.
ELSE.
COMMIT WORK AND WAIT.
I link 選擇 var prop timeline asc 規則 coo tex Safari 11.0 針對網頁開發者的新功能
設備媒體調用
Safari 11.0中的新功能 - 支持使用WebRTC的實時通信。
Safari 11.0中的新功能 - 支持對攝像 dlink append 訪問性 wak date 告訴 wakeup 優先級 led log file sycn是ORACLE裏最普遍的等待事件之一,一般log file sycn的等待時間都非常短 1-5ms,不會有什麽問題,但是一旦出問題,往往都比較難解決。什麽時候會 nal 但是 總結 rom 全部 right light style 是把 sql常用聯合查詢的 join on 、 left join(左連接) 、 right join (右連接)、inner join (等值連接)以及常用的集合運算有:union、unionall、m 一個個 全部 clu 個數 amp 序列 sin 篩法 The 題意:
設一個等差數列,首元素為a,公差為d
現在要求輸入a,d,n ,要求找出屬於該等差數列中的第n個素數並輸出
思路:空間換時間是個主旋律。素數表的生成用素數篩選法。方法是從2開始,對每個目前還標記為素數的 發現 pcm 需要 其他 一個數 通過 數據塊 包含 從數據 PCM資源相關的等待事件gc current/cr block request:這個等待事件說明申請實例要申請一個當前塊或CR塊,但是資源主實例的LMS進程還沒有響應它的請求。gc current/cr bloc 共享鎖和排它鎖
Mysql的鎖系統:shared lock 和 exclusive lock (共享鎖和排它鎖,也叫讀鎖和寫鎖,即read lock和write lock)
讀鎖是共享的,或者說是相互不阻塞的寫鎖是排他的,一個寫鎖會阻塞其他的寫鎖和讀鎖在實際的資料庫系統中,每時每刻都發生鎖定,當
檔案表示式
if [ -f file ] 如果檔案存在 if [ -d … ] 如果目錄存在 if [ -s file ] 如果檔案存在且非空 if [ -r file ] 如果檔案存在且可讀 if [ -w file ] 如果檔案存在且可寫 if [ -x file ] 如果檔案存
前言:因為工作原因需要安裝低版本的jdk7,下載了安裝包以後提示如下圖:
這是由於蘋果公司的過,在安裝包裡面加入了版本檢測的程式碼,所以電腦版本過高無法安裝,解決辦法就是就安裝包pkg解壓以後修改裡面的判斷版本的程式碼,然後在打包安裝就可以了。
過程如下:
1
總結1.防火牆(是否關閉)2. 入站規則(3306)3. 許可權問題(我的是許可權問題)
問題1.2參考: 請自行搜尋我的是問題三誤刪管理員賬戶導致的許可權問題
-------------------------------------------------
概述 --------------------- gc buffer busy是RAC資料庫中常見的等待事件,11g開始gc buffer busy分為gc buffer busy acquire和gc buffer busyrelease。 gc buffer busy acquire是當sess
Cursor
Cursors are one of the most common and fundamental terms in the database terminology.
It is one of the core database programming concepts, wh 相關推薦
Oracle cursor pin S wait on X 等待事件 說明
一次cursor: pin S wait on X事件的跟蹤
ARCH wait on ATTACH等待事件引起的切換歸檔hang住
cursor: pin S產生原理及解決方法
37 Oracle深度學習筆記——RAC的相關等待事件
ORACLE AWR報告之 log file sync等待事件優化的總結【轉自ITPUB】
Oracle 11g下重現library cache lock等待事件
Oracle local write wait等待事件
Commit 函數WAIT = 'X'.
What's new on safari 11
oracle之 等待事件LOG FILE SYNC (awr)優化
oracle中 常用的 join on 相關和 集合運算的總結
POJ3006-Dirichlet's Theorem on Arithmetic Progressions
Oracle RAC 等待事件
Mysql的鎖(S鎖和X鎖的區別)
shell-if表示式(-f,-d,-s,-r,-w,-x,-eq,-ne,-ge,-gt,-le,-lt )
macbook安裝低版本的jdk,提示“Oracle 的 Java 要求 Mac OS X 10.7.3 或更高版本”
Can't connect to MySQL server on 'x.x.x.x' (10038) mysql資料庫連線不上問題
【Oracle資料庫技術支援】RAC效能分析 - gc buffer busy acquire 等待事件
Oracle Cursor Introduction