【CURSOR】Oracle 子游標無法共享的原因之V$SQL_SHARED_CURSOR

xysoul_雲龍發表於2021-08-23

V$SQL_SHARED_CURSOR 解釋了為什麼特定的子游標不與現有的子游標共享。 每列都標識了無法共享遊標的特定原因。

專欄 資料型別 說明

SQL_ID

VARCHAR2(13)

SQL 識別符號

ADDRESS

RAW(4 | 8)

父遊標的地址

CHILD_ADDRESS

RAW(4 | 8)

子游標的地址

CHILD_NUMBER

NUMBER

子游標編號

UNBOUND_CURSOR

VARCHAR2(1)

Y|N ) 現有的子游標未完全構建(換句話說,未最佳化)

SQL_TYPE_MISMATCH

VARCHAR2(1)

Y|N ) SQL 型別與現有子游標不匹配

OPTIMIZER_MISMATCH

VARCHAR2(1)

Y|N ) 最佳化器環境與現有子游標不匹配

OUTLINE_MISMATCH

VARCHAR2(1)

Y|N ) 輪廓與現有的子游標不匹配

STATS_ROW_MISMATCH

VARCHAR2(1)

Y|N ) 現有統計資訊與現有子游標不匹配

LITERAL_MISMATCH

VARCHAR2(1)

Y|N ) 非資料文字值與現有子游標不匹配

FORCE_HARD_PARSE

VARCHAR2(1)

Y|N ) 供內部使用

EXPLAIN_PLAN_CURSOR

VARCHAR2(1)

Y|N ) 子游標是解釋計劃遊標,不應共享

BUFFERED_DML_MISMATCH

VARCHAR2(1)

Y|N ) 緩衝的 DML 與現有的子游標不匹配

PDML_ENV_MISMATCH

VARCHAR2(1)

Y|N ) PDML 環境與現有子游標不匹配

INST_DRTLD_MISMATCH

VARCHAR2(1)

Y|N ) 插入直接載入與現有子游標不匹配

SLAVE_QC_MISMATCH

VARCHAR2(1)

Y|N ) 現有的子游標是從遊標,新的由協調器發出(或者,現有的子游標是由協調器發出的,新的是從遊標)

TYPECHECK_MISMATCH

VARCHAR2(1)

Y|N ) 現有的子游標沒有完全最佳化

AUTH_CHECK_MISMATCH

VARCHAR2(1)

Y|N ) 現有子游標的授權/翻譯檢查失敗

BIND_MISMATCH

VARCHAR2(1)

Y|N ) 繫結後設資料與現有子游標不匹配

DESCRIBE_MISMATCH

VARCHAR2(1)

Y|N ) 在描述子游標期間不存在型別檢查堆

LANGUAGE_MISMATCH

VARCHAR2(1)

Y|N ) 語言控制程式碼與現有的子游標不匹配

TRANSLATION_MISMATCH

VARCHAR2(1)

Y|N ) 現有子游標的基礎物件不匹配

BIND_EQUIV_FAILURE

VARCHAR2(1)

Y|N ) 繫結值的選擇性與用於最佳化現有子游標的選擇性不匹配

INSUFF_PRIVS

VARCHAR2(1)

Y|N ) 對現有子游標引用的物件的許可權不足

INSUFF_PRIVS_REM

VARCHAR2(1)

Y|N ) 對現有子游標引用的遠端物件的許可權不足

REMOTE_TRANS_MISMATCH

VARCHAR2(1)

Y|N ) 現有子游標的遠端基物件不匹配

LOGMINER_SESSION_MISMATCH

VARCHAR2(1)

Y|N ) LogMiner Session 引數不匹配

INCOMP_LTRL_MISMATCH

VARCHAR2(1)

Y|N ) 遊標可能有一些可能不安全/非資料的繫結(文字)。 價值不匹配。

OVERLAP_TIME_MISMATCH

VARCHAR2(1)

Y|N ) 設定會話引數導致的不匹配 ERROR_ON_OVERLAP_TIME

EDITION_MISMATCH

VARCHAR2(1)

Y|N ) 游標版本不匹配

MV_QUERY_GEN_MISMATCH

VARCHAR2(1)

Y|N ) 內部,用於在分析物化檢視查詢時強制進行硬解析

USER_BIND_PEEK_MISMATCH

VARCHAR2(1)

Y|N ) 遊標不共享,因為一個或多個使用者繫結的值不同,這有可能改變執行計劃

TYPCHK_DEP_MISMATCH

VARCHAR2(1)

Y|N ) 遊標具有型別檢查依賴項

NO_TRIGGER_MISMATCH

VARCHAR2(1)

Y|N ) Cursor 和 child 沒有觸發器不匹配

FLASHBACK_CURSOR

VARCHAR2(1)

Y|N ) 由於閃回導致游標不可共享

ANYDATA_TRANSFORMATION

VARCHAR2(1)

Y|N ) 是不透明型別轉換的標準,不匹配

PDDL_ENV_MISMATCH

VARCHAR2(1)

Y N )環境設定平行DDL游標失配(即,一個或多個下列引數值已更改: PARALLEL_EXECUTION_ENABLED PARALLEL_DDL_MODE PARALLEL_DDL_FORCED_DEGREE ,或 PARALLEL_DDL_FORCED_INSTANCES

TOP_LEVEL_RPI_CURSOR

VARCHAR2(1)

Y|N ) 是頂級 RPI 遊標

DIFFERENT_LONG_LENGTH

VARCHAR2(1)

Y|N ) 的值 LONG 不匹配

LOGICAL_STANDBY_APPLY

VARCHAR2(1)

Y|N ) 邏輯備用應用上下文不匹配

DIFF_CALL_DURN

VARCHAR2(1)

Y|N ) 如果 Slave SQL 遊標/單次呼叫

BIND_UACS_DIFF

VARCHAR2(1)

Y|N ) 一個遊標繫結了 UAC,一個沒有

PLSQL_CMP_SWITCHS_DIFF

VARCHAR2(1)

Y|N ) 用不同的 PL/SQL 編譯器開關編譯的 PL/SQL 匿名塊

CURSOR_PARTS_MISMATCH

VARCHAR2(1)

Y|N ) Cursor 被編譯為 subexecution (cursor 部分被執行)

STB_OBJECT_MISMATCH

VARCHAR2(1)

Y|N ) STB 是 SQL 管理物件不匹配的內部名稱。 SQL 管理物件不匹配意味著在兩次執行之間為您的 SQL 語句建立了 SQL 計劃基線、SQL 配置檔案或 SQL 補丁。 因為遊標是隻讀實體,硬解析被迫能夠建立一個新遊標,該遊標包含有關與此 SQL 語句相關的新 SQL 管理物件的資訊。

CROSSEDITION_TRIGGER_MISMATCH

VARCHAR2(1)

Y|N ) 要執行的跨版本觸發器集可能不同

PQ_SLAVE_MISMATCH

VARCHAR2(1)

Y|N ) 頂層從機決定不共享遊標

TOP_LEVEL_DDL_MISMATCH

VARCHAR2(1)

Y|N ) 是頂級 DDL 遊標

MULTI_PX_MISMATCH

VARCHAR2(1)

Y|N ) Cursor 有多個並行器並且是從屬編譯的

BIND_PEEKED_PQ_MISMATCH

VARCHAR2(1)

Y|N ) 基於繫結偷看值的游標

MV_REWRITE_MISMATCH

VARCHAR2(1)

Y|N ) Cursor 需要重新編譯,因為在編譯期間由於被物化檢視重寫而使用了 SCN

ROLL_INVALID_MISMATCH

VARCHAR2(1)

Y|N ) 標記為滾動失效和失效視窗超出

OPTIMIZER_MODE_MISMATCH

VARCHAR2(1)

Y|N ) 引數 OPTIMIZER_MODE 不匹配(例如,all_rows 與 first_rows_1)

PX_MISMATCH

VARCHAR2(1)

Y|N ) 影響 SQL 語句並行化的一個引數不匹配。 例如,一個遊標是在啟用並行 DML 的情況下編譯的,而另一個則沒有。

MV_STALEOBJ_MISMATCH

VARCHAR2(1)

Y|N ) 遊標無法共享,因為在構建遊標時過時的物化檢視列表中存在不匹配

FLASHBACK_TABLE_MISMATCH

VARCHAR2(1)

Y|N ) 遊標無法共享,因為與啟用的觸發器和/或延遲的參照完整性約束不匹配

LITREP_COMP_MISMATCH

VARCHAR2(1)

Y|N ) 文字替換使用不匹配

PLSQL_DEBUG

VARCHAR2(1)

Y|N ) PLSQL_DEBUG 當前會話 引數值與用於構建遊標的值不匹配

LOAD_OPTIMIZER_STATS

VARCHAR2(1)

Y|N ) 強制硬解析初始化擴充套件遊標共享

ACL_MISMATCH

VARCHAR2(1)

Y|N ) 儲存在子游標中的快取 ACL 評估結果對當前會話或使用者無效

FLASHBACK_ARCHIVE_MISMATCH

VARCHAR2(1)

Y|N ) FLASHBACK_DATA_ARCHIVE_INTERNAL_CURSOR 當前會話 引數值與用於構建遊標的值不匹配

LOCK_USER_SCHEMA_FAILED

VARCHAR2(1)

Y|N ) 用於構建遊標的使用者或模式不再存在

注意: 此共享標準已棄用

REMOTE_MAPPING_MISMATCH

VARCHAR2(1)

Y|N ) 重新載入的遊標以前是遠端對映的,當前不是遠端對映的。 因此,必須重新解析遊標。

LOAD_RUNTIME_HEAP_FAILED

VARCHAR2(1)

Y|N ) 為新遊標載入執行時堆(或重新載入老化遊標)失敗

HASH_MATCH_FAILED

VARCHAR2(1)

Y|N ) 沒有現有的子游標具有當前遊標所需的不安全文字繫結雜湊值

PURGED_CURSOR

VARCHAR2(1)

Y|N ) 子游標被標記為清除

BIND_LENGTH_UPGRADEABLE

VARCHAR2(1)

Y|N ) 當前遊標所需的繫結長度大於用於構建子游標的繫結長度

USE_FEEDBACK_STATS

VARCHAR2(1)

Y|N ) 強制進行硬解析,以便最佳化器可以使用改進的最佳化器輸入(例如,基數估計)重新最佳化查詢

REASON

CLOB

子編號、id 和遊標未共享的原因。 此列的內容使用 XML 結構化。

如果此列為空,則 FORCE_HARD_PARSE LOAD_RUNTIME_HEAP_FAILED HASH_MATCH_FAILED 列可讓您確定不共享子游標的原因。

CON_ID

NUMBER

資料所屬容器的 ID。 可能的值包括:

  • 0 :此值用於包含與整個 CDB 相關的資料的行。 此值也用於非 CDB 中的行。

  • 1 :此值用於包含僅屬於根的資料的行

  • n :其中 n 是包含資料的行的適用容器 ID


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29487349/viewspace-2788359/,如需轉載,請註明出處,否則將追究法律責任。

相關文章