ITPub博客

首页 > 数据库 > Oracle > 【CURSOR】Oracle 子游标无法共享的原因之V$SQL_SHARED_CURSOR

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

翻译 Oracle 作者:xysoul_云龙 时间:2021-08-23 17:52:22 0 删除 编辑

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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
主要从事Oracle数据库 DBA相关工作,其他操作系统、中间件等也有涉及,热衷分享。岁月老将至,如有幸在江湖中留点踪迹,也是欣慰。 【文盲筱烨】好读书爱运动的IT技术爱好者 微博:文盲筱烨 微信公众号:筱烨视点

注册时间:2014-02-15

  • 博文量
    356
  • 访问量
    899073