回覆列表
  • 1 # 使用者4800584598747

    出現這個錯誤的原因多是因為ResultSet或者是statement沒有被及時關閉造成的。你JMeter測試的時候儘管OPEN_CURSORS降到了3,但是資源被正常關閉的情況下還是可以執行正常。

    解決這個問題,可以用V$OPEN_CURSORVIEW來檢視具體出問題的是哪些SQL,從而找到問題點。

    SELECTSID,USER_NAME,SQL_TEXTFROMV$OPEN_CURSOR;

    執行上面的語句,檢視哪些session打開了遊標。

    另外,由於ORA-01000錯誤,多半是多次迴圈處理中出現的問題,可以用如下SQL檢視被多次發行的SQL

    SQL>SELECTOC.SID,OC.USER_NAME,ST.SQL_TEXT,OC.NUM_CURSORS

    2

    FROMV$SQLST

    3

    INNERJOIN(

    4

    SELECTSID,USER_NAME,ADDRESS,HASH_VALUE,COUNT(*)NUM_CURSORS

    5

    FROMV$OPEN_CURSOR

    6

    GROUPBYSID,USER_NAME,ADDRESS,HASH_VALUE

    7

    HAVINGCOUNT(*)>1

    8

    )OC

    9

    ONOC.ADDRESS=ST.ADDRESS

    10

    ANDOC.HASH_VALUE=ST.HASH_VALUE

    11

    ORDERBYOC.SID;

    如果檢索結果中NUM_CURSORS的數目很大,說明那條SQL發行的時候沒有被正常關閉,從而找到問題點。

  • 中秋節和大豐收的關聯?
  • 鋼筋修正係數是啥意思?