當前位置:首頁 » 編程語言 » oraclesql慢

oraclesql慢

發布時間: 2023-09-02 03:27:54

❶ oracle資料庫運行sql很卡很慢很頓,看等待事件都是cursor:pin s on x,這是啥

詳解cursor: pin S wait on X等待事件
『cursor: pin * events』等待事件
該類等待事件一般是為了pin相關的子游標
『Cursor: pin S on X』 最常見的等待事件, 進程為了共享操作例如執行pin游標而以SHRD S mode申請mutex, 但是未立即獲得。原因是該游標被其他進程以EXCL X mode 持有了。
實際該 cursor: pin S wait on X等待事件往往是由於其他因素誘發的。Mutex爭用僅僅是問題的症狀,但根本原因需要Database Consultant 進一步挖掘。

下面我們列出一些已知的常見案例, 在這些例子中可以看到 我上面提到的 Mutex的爭用僅僅是偽爭用:

過多的子游標 High Version Counts

過多的子游標版本Version Count可能導致Mutex 爭用,一般一個SQL的Version Count不要高於500。
檢查High Version Count很簡單, 在AWR里就有SQL ordered by High Version Count,也可以寫SQL查V$SQL、V$SQLAREA

昂貴的X$、V$視圖查詢

一些對於V$、X$視圖的查詢,需要訪問X$KGL*之類的fixed table,可能觸發Mutex爭用。

Mutex持有者得不到CPU

Mutex持有者若得不到足夠的CPU片可能一直阻塞他人,直到它拿到需要的CPU。
這種情況可能由於OS操作系統的實際情況或者使用Resource Manager而引起。需要配合AWR中的Host CPU、Instance CPu一起看。

已經被KILLED的SESSION仍持有Mutex

當session正持有Mutex,而其對應的Process被強制KILL掉, 則直到PMON徹底清理掉該Dead Process並釋放Mutex,其他session才能不再等待。 診斷該類問題,最好能檢查PMON的TRACE。 當然也存在部分BUG會導致PMON清理過程非常慢。
舉例來說,bug 9312879描述了一種場景:PMON 需要獲得某個Mutex以便清理某個dead process,但是該Mutex又被其他進程持有,則PMON甚至無法開始真正清理並釋放Mutex。

如果自己搞不定可以找ASKMACLEAN專業ORACLE優化團隊成員幫您搞定!

❷ oracle資料庫執行sql很慢怎麼回事

由於經常執行sql語句,如果一條一條執行效率低下。
oarclecmd.commandtext
=
sqlstr;
oraclecmd.executenonquery();
sqlstr
可以寫成如下所示語句
begin
sql1;
sql2;
......
sqln;
end;
//注意此處的分號很重要
然後同樣調用executenonquery()方法,可以一次執行多條sql語句。

❸ oracle 查詢的sql語句特別慢,是什麼原因,是or特別慢嗎,用什麼優化,急急急!!!

把查詢計劃的內容發出來,你這一大堆代碼誰能看出來啥啊。看你的代碼這么長,條件那麼多,語句用了函數,很多低效的or,not in等操作,另外還用了group by,order by,左右連接等等,如果表數據量很大的話,你這個語句性能不好是預料中的事情。如果你這條語句無法優化,建議從調整表結構角度考慮

❹ oracle sql 查詢我使用自已寫的函數查詢很快,加了函數做條件就很慢是為什麼

慢是因為
對於 幾十萬條記錄左右,
你那個 test(a) 函數, 需要執行 很多次, 每行執行一次, 然後判斷 LIKE '%123%'

至於:
select a,b, test(a) c from demo; --只這樣查很快

我估計你使用的是 PLSQL Developer。
查詢的時候, 默認是查詢第一頁, 因此很快。
因為只顯示少部分行。
例如一頁20行的話, 那麼也就執行你那個函數 20次。

❺ oracle資料庫運行sql很卡很慢很頓,看等待事件都是cursor:pin s on x,這是啥

詳解cursor: pin S wait on X等待事件 『cursor: pin * events』等待事件 該類等待事件一般是為了pin相關的子游標 『Cursor: pin S on X』 最常見的等待事件, 進程為了共享操作例如執行pin游標而以SHRD S mode申請mutex, 但是未立即獲得。原因是該游標被其他進程以EXCL X mode 持有了。 實際該 cursor: pin S wait on X等待事件往往是由於其他因素誘發的。Mutex爭用僅僅是問題的症狀,但根本原因需要Database Consultant 進一步挖掘。 下面我們列出一些已知的常見案例, 在這些例子中可以看到 我上面提到的 Mutex的爭用僅僅是偽爭用: 過多的子游標 High Version Counts 過多的子游標版本Version Count可能導致Mutex 爭用,一般一個SQL的Version Count不要高於500。 檢查High Version Count很簡單, 在AWR里就有SQL ordered by High Version Count,也可以寫SQL查V$SQL、V$SQLAREA 昂貴的X$、V$視圖查詢 一些對於V$、X$視圖的查詢,需要訪問X$KGL*之類的fixed table,可能觸發Mutex爭用。 Mutex持有者得不到CPU Mutex持有者若得不到足夠的CPU片可能一直阻塞他人,直到它拿到需要的CPU。 這種情況可能由於OS操作系統的實際情況或者使用Resource Manager而引起。需要配合AWR中的Host CPU、Instance CPu一起看。 已經被KILLED的SESSION仍持有Mutex 當session正持有Mutex,而其對應的Process被強制KILL掉, 則直到PMON徹底清理掉該Dead Process並釋放Mutex,其他session才能不再等待。 診斷該類問題,最好能檢查PMON的TRACE。 當然也存在部分BUG會導致PMON清理過程非常慢。 舉例來說,bug 9312879描述了一種場景:PMON 需要獲得某個Mutex以便清理某個dead process,但是該Mutex又被其他進程持有,則PMON甚至無法開始真正清理並釋放Mutex。 如果自己搞不定可以找ASKMACLEAN專業ORACLE優化團隊成員幫您搞定!

❻ oracle資料庫執行sql很慢怎麼回事

一條sql突然執行變慢,耗時9秒,應用是不能改的,只能從資料庫方面下手解決
步驟思路:
1:查看sql是否走索引
2:查看索引是否失效
3:hint 強制走索引(只是用來查看hint狀態下,查詢是否更改,應用是不能改的)
4:收集該表所有信息(包括索引)
5:分析該表所有信息(包括索引)
6:再次執行並查看
注意:哪個用戶執行較慢,就用哪個用戶進行操作,這樣才准確

❼ 求助各位大俠,關於plsql連接oracle 慢

1、你在伺服器上用plsql連接沒有問題
說明:第一不是伺服器問題,第二不是plsql軟體問題
2、你在自己電腦上連接sql正常
說明:不是網路問題
3、但是你在你自己的電腦上連接伺服器上的oracle有問題
個人認為應該從一下兩個方面找原因
第一:你的plsql版本和你在伺服器上測試時候用的版本是否一致
第二:你本地的oracle客戶端版本和伺服器上的版本是否一致
第三:你本地的tns文件和伺服器上的tns文件是否一致
我沒有遇到過這樣的問題,但是如果我遇到了也就這個思路了!

熱點內容
磁碟存儲器的管理課後答案 發布:2025-02-04 05:58:58 瀏覽:598
b級車買哪個配置 發布:2025-02-04 05:56:41 瀏覽:560
我的世界如何看lp伺服器 發布:2025-02-04 05:56:33 瀏覽:482
外賣盒子如何設置密碼 發布:2025-02-04 05:49:33 瀏覽:504
國產安卓編程軟體哪個最好 發布:2025-02-04 05:49:25 瀏覽:388
什麼是身份證密碼 發布:2025-02-04 05:43:41 瀏覽:785
雲伺服器江蘇 發布:2025-02-04 05:38:46 瀏覽:238
演算法及vb 發布:2025-02-04 05:33:37 瀏覽:102
安卓手機怎麼自檢電池 發布:2025-02-04 05:31:31 瀏覽:410
兩種存儲 發布:2025-02-04 05:26:43 瀏覽:203