Microsoft Word - ORA-04031.doc



Similar documents
Oracle 4

./

附件1.FIT)

毛主席的猪

Microsoft Word - HERBRECIPES《中國藥膳》.doc

循经指压疗法



(\244j\257d\276\307\274\351_ C.indd_70%.pdf)


Microsoft Word - 成长的痕迹散文集.docx

Microsoft Word - 席慕容散文集.doc

第 一 章 : 從 中 共 解 放 軍 投 奔 藏 軍 棄 家 從 軍 我 原 名 姜 華 亭, 藏 名 羅 桑 扎 西, 家 在 中 國 山 東 省 萊 陽 縣 九 區 孟 格 莊 村, 父 親 叫 姜 昆, 母 親 叫 李 秀 芳 家 中 以 務 農 為 業 解 放 前 後, 父 親 曾 在 三

Microsoft Word - [术数]《八卦象数与疾病预测》黄鉴.doc

<4D F736F F D20D6D0B9FABDDAC8D5CEC4BBAF2DB5BECCEF2E646F63>

Microsoft Word - 變形記

!

七 以 自 然 風 光 為 紋 飾 第 六 章 中 國 歷 代 民 間 藏 瓷 鑒 定 術 語 第 七 章 中 國 古 瓷 文 獻 選 一 窯 器 說 ( 清 ) 程 哲 著 二 景 德 鎮 陶 歌 序 言 我 與 春 恩 先 生 相 識 經 年, 且 為 同 好, 瓷 道 摯 友 春 恩 為 人

!

6寸PDF生成工具

Microsoft Word - 103鐵路佐級-國文(二)

学 习 贯 彻 中 央 尧 省 尧 市 纪 委 全 会 精 神 专 栏 中 国 共 产 党 第 十 八 届 中 央 纪 律 检 查 委 员 会 第 六 次 全 体 会 议 公 报 渊 2016 年 1 月 14 日 中 国 共 产 党 第 十 八 届 中 央 纪 律 检 查 委 员 会 第 六 次

Microsoft Word - 临政办发12.doc

中共山东省委高校工委

目 录 第 一 部 分 国 家 知 识 产 权 局 概 况 一 主 要 职 能 二 部 门 预 算 单 位 构 成 第 二 部 分 国 家 知 识 产 权 局 2016 年 部 门 预 算 表 一 财 政 拨 款 收 支 总 表 二 一 般 公 共 预 算 支 出 表 三 一 般 公 共 预 算 基

科学技术部2013年度部门预算

一、二○○二年学校工作的简要回顾

Microsoft Word - 白俄罗斯公司法汉语译文2015年7月15日修改版.docx

第 一 部 分 中 国 气 象 局 职 责 及 概 况 一 主 要 职 责 ( 一 ) 拟 定 气 象 工 作 的 方 针 政 策 法 律 法 规 发 展 战 略 和 长 远 规 划 ; 制 定 发 布 气 象 工 作 的 规 章 制 度 技 术 标 准 和 规 范 并 监 督 实 施 ; 承 担

无 锡 职 业 技 术 学 院 国 有 资 产 管 理 办 法 第 一 章 总 则 第 一 条 为 加 强 学 校 国 有 资 产 管 理, 合 理 配 置 和 有 效 使 用 国 有 资 产, 确 保 国 有 资 产 安 全 与 完 整, 保 障 和 促 进 学 校 各 项 事 业 发 展, 根

南 昌 大 学 人 力 资 源 工 作 简 讯 2015 年 第 2 期 ( 总 第 27 期 ) 目 录 1 人 力 资 源 综 合 信 息 2 人 员 调 配 及 机 构 编 制 管 理 信 息 3 劳 资 工 作 信 息 4 师 资 管 理 信 息 5 高 层 次 人 才 及 队 伍 建 设

三亚市政府投资建设项目代建制管理工作介绍

目 录 一 部 门 职 责... 1 二 预 算 编 报 范 围... 3 三 2013 年 部 门 预 算 报 表 及 情 况 说 明... 5 收 支 预 算 总 表 及 情 况 说 明... 5 收 入 预 算 表 及 情 况 说 明... 7 支 出 预 算 表 及 情 况 说 明... 1

目 录 引 言... 3 第 一 部 分 电 价 水 平 基 本 情 况...4 一 上 网 电 价...4 二 输 配 电 价...6 三 销 售 电 价...9 四 政 府 性 基 金 和 附 加...12 第 二 部 分 电 价 政 策 执 行 情 况...13 一 电 价 水 平 调 整 情

西安邮电学院本科教学工作简报


( 十 ) 其 他 会 计 工 作 第 四 条 单 位 不 得 任 用 ( 聘 用 ) 不 具 备 会 计 从 业 资 格 的 人 员 从 事 会 计 工 作 不 具 备 会 计 从 业 资 格 的 人 员, 不 得 从 事 会 计 工 作, 不 得 参 加 会 计 专 业 技 术 资 格 考 试

<C1ACD6DDCAD0CAD0B3A1BCE0B6BDB9DCC0EDBED6C8A8D4F0C7E5B5A5A3A8B9ABCABEA3A92E786C73>

Microsoft Word - Future CEDAW C CHN 7-8.doc


2014 年 12 月 16 日 广 西 春 茂 投 资 股 份 有 限 公 司 ( 原 名 广 西 汽 牛 农 业 机 械 股 份 有 限 公 司, 以 下 简 称 春 茂 股 份 挂 牌 公 司 公 司 ) 召 开 2014 年 第 五 次 临 时 股 东 大 会, 通 过 向 特 定 对 象

Microsoft Word - 面向合格投资者公开发行公司债券上市预审核反馈意见公告(截至2015年10月8日)

律 师 执 业 必 须 以 事 实 为 根 据, 以 法 律 为 准 绳 律 师 执 业 应 当 接 受 国 家 社 会 和 当 事 人 的 监 督 律 师 依 法 执 业 受 法 律 保 护, 任 何 组 织 和 个 人 不 得 侵 害 律 师 的 合 法 权 益 第 四 条 司 法 行 政 部

(Microsoft Word - \270t\270g\254\354\305\252\270g\274\372\300y\255p\271\ docx)

自 觉 实 践 科 学 发 展 观, 扎 实 推 进 管 理 服 务 工 作 四 川 大 学 档 案 馆 ( 校 史 办 公 室 )2007 年 上 半 年 工 作 总 结 2007 年 上 半 年, 四 川 大 学 档 案 馆 ( 校 史 办 公 室 ) 在 学 校 党 委 行 政 领 导 和 上

2014

第 一 部 分 广 州 市 广 播 电 视 大 学 概 况 一 学 校 的 主 要 任 务 和 业 务 范 围 根 据 市 编 委 的 批 复, 广 州 市 广 播 电 视 大 学 为 市 局 级 事 业 单 位, 归 口 市 教 育 局 管 理 主 要 承 担 以 下 任 务 : ( 一 ) 承

Microsoft Word - 关于印发《云南保险业高级管理人员任职资格考试办法》的通知


一 前 言 2 作 為 我 國 儒 家 經 典 及 十 三 經 之 一, 孟 子 流 傳 千 年 不 輟, 足 以 證 明 其 對 中 華 文 化 的 重 要 性 與 影 響 力, 除 了 道 德 文 化 意 識 的 開 發, 也 弘 揚 仁 政 王 道 的 政 治 觀, 大 多 數 人 都 肯 定

附件3

Transcription:

如 何 解 决 ORA-04031 错 误 翻 译 :Fenng 文 章 内 容 1. 和 共 享 池 (shared pool) 相 关 的 实 例 参 数 2. 诊 断 ORA-04031 错 误 3. 解 决 ORA-04031 错 误 已 知 的 Oracle BUG 共 享 池 碎 片 o V$SQLAREA 视 图 o X$KSMLRU 视 图 小 的 共 享 池 尺 寸 o 库 高 速 缓 冲 (library cache) 命 中 率 o 共 享 池 大 小 的 计 算 4. 对 ORA-04031 的 高 级 分 析 诊 断 并 解 决 ORA-04031 错 误 对 于 大 多 数 应 用 来 说, 共 享 池 的 大 小 对 于 Oracle 性 能 来 说 都 是 很 重 要 的 共 享 池 中 保 存 数 据 字 典 高 速 缓 冲 和 完 全 解 析 或 编 译 的 的 PL/SQL 块 和 SQL 语 句 当 我 们 在 共 享 池 中 试 图 分 配 大 片 的 连 续 内 存 失 败 的 时 候,Oracle 首 先 刷 新 池 中 当 前 没 使 用 的 所 有 对 象, 使 空 闲 内 存 块 合 并 如 果 仍 然 没 有 足 够 大 单 个 的 大 块 内 存 满 足 请 求, 就 会 产 生 ORA-04031 错 误 当 这 个 错 误 出 现 的 时 候 你 得 到 的 错 误 信 息 如 下 : Error: ORA 4031 Text: unable to allocate %s bytes of shared memory (%s,%s,%s) Cause: More shared memory is needed than was allocated in the shared pool. Action: Either use the dbms_shared_pool package to pin large packages, reduce your use of shared memory, or increase the amount of available shared memory by increasing the value of the init.ora parameter "shared_pool_size". 1. 共 享 池 相 关 的 实 例 参 数 在 继 续 之 前, 理 解 下 面 的 实 例 参 数 是 很 重 要 的 :

SHARED_POOL_SIZE 这 个 参 数 指 定 了 共 享 池 的 大 小, 单 位 是 字 节 可 以 接 受 数 字 值 或 者 数 字 后 面 跟 上 后 缀 "K" 或 "M" "K" 代 表 千 字 节, "M" 代 表 兆 字 节 SHARED_POOL_RESERVED_SIZE 指 定 了 为 共 享 池 内 存 保 留 的 用 于 大 的 连 续 请 求 的 共 享 池 空 间 当 共 享 池 碎 片 强 制 使 Oracle 查 找 并 释 放 大 块 未 使 用 的 池 来 满 足 当 前 的 请 求 的 时 候, 这 个 参 数 和 SHARED_POOL_RESERVED_MIN_ALLOC 参 数 一 起 可 以 用 来 避 免 性 能 下 降 这 个 参 数 理 想 的 值 应 该 大 到 足 以 满 足 任 何 对 保 留 列 表 中 内 存 的 请 求 扫 描 而 无 需 从 共 享 池 中 刷 新 对 象 既 然 操 作 系 统 内 存 可 以 限 制 共 享 池 的 大 小, 一 般 来 说, 你 应 该 设 定 这 个 参 数 为 SHARED_POOL_SIZE 参 数 的 10% 大 小 SHARED_POOL_RESERVED_MIN_ALLOC 这 个 参 数 的 值 控 制 保 留 内 存 的 分 配 如 果 一 个 足 够 尺 寸 的 大 块 内 存 在 共 享 池 空 闲 列 表 中 没 能 找 到, 内 存 就 从 保 留 列 表 中 分 配 一 块 比 这 个 值 大 的 空 间 默 认 的 值 对 于 大 多 数 系 统 来 说 都 足 够 了 如 果 你 加 大 这 个 值, 那 么 Oracle 服 务 器 将 允 许 从 这 个 保 留 列 表 中 更 少 的 分 配 并 且 将 从 共 享 池 列 表 中 请 求 更 多 的 内 存 这 个 参 数 在 Oracle 8i 是 隐 藏 的 2. 诊 断 ORA-04031 错 误 ORA-04031 错 误 通 常 是 因 为 库 高 速 缓 冲 中 或 共 享 池 保 留 空 间 中 的 碎 片 在 加 大 共 享 池 大 小 的 时 候 考 虑 调 整 应 用 使 用 共 享 的 SQL 并 且 调 整 如 下 的 参 数 : SHARED_POOL_SIZE, SHARED_POOL_RESERVED_SIZE, SHARED_POOL_RESERVED_MIN_ALLOC. 首 先 判 定 是 否 ORA-04031 错 误 是 由 共 享 池 保 留 空 间 中 的 库 高 速 缓 冲 的 碎 片 产 生 的 提 交 下 的 查 询 : SELECT free_space, avg_free_size,used_space, avg_used_size,request_failures, last_failure_size FROM v$shared_pool_reserved; 如 果 : REQUEST_FAILURES > 0 并 且 LAST_FAILURE_SIZE > SHARED_POOL_RESERVED_MIN_ALLOC 那 么 ORA-04031 错 误 就 是 因 为 共 享 池 保 留 空 间 缺 少 连 续 空 间 所 致 要 解 决 这 个 问 题, 可 以 考 虑 加 大 SHARED_POOL_RESERVED_MIN_ALLOC 来 降 低 缓 冲 进 共 享 池 保 留 空 间 的 对 象 数 目, 并 增 大 SHARED_POOL_RESERVED_SIZE 和 SHARED_POOL_SIZE 来 加 大 共 享 池 保 留 空 间 的 可 用 内 存 如 果 : REQUEST_FAILURES > 0 并 且 LAST_FAILURE_SIZE < SHARED_POOL_RESERVED_MIN_ALLOC

或 者 REQUEST_FAILURES 等 于 0 并 且 LAST_FAILURE_SIZE < SHARED_POOL_RESERVED_MIN_ALLOC 那 么 是 因 为 在 库 高 速 缓 冲 缺 少 连 续 空 间 导 致 ORA-04031 错 误 第 一 步 应 该 考 虑 降 低 SHARED_POOL_RESERVED_MIN_ALLOC 以 放 入 更 多 的 对 象 到 共 享 池 保 留 空 间 中 并 且 加 大 SHARED_POOL_SIZE 3. 解 决 ORA-04031 错 误 ORACLE BUG 要 解 决 这 个 错 误, 进 行 的 诊 断 的 第 一 步 是 在 你 的 平 台 上 使 用 最 新 的 补 丁 集 大 多 数 的 ORA-04031 错 误 都 和 BUG 相 关, 可 以 通 过 使 用 这 些 补 丁 来 避 免 下 面 表 中 总 结 和 和 这 个 错 误 相 关 的 最 常 见 的 BUG, 可 能 的 环 境 和 修 补 这 个 问 题 的 补 丁 BUG 描 述 Workaround Fixed <Bug:1397603> ORA-4031 / SGA memory leak of 8172, PERMANENT memory occurs for _db_handles_cached = 0 901 buffer handles. <Bug:1640583> ORA-4031 due to leak / cache buffer 8171, chain contention from AND-EQUAL Not available 901 access INSERT AS SELECT statements may <Bug:1318267> not be shared when they should be _SQLEXEC_PROGRESSION_ 8171, if TIMED_STATISTICS. It can lead COST=0 8200 to ORA-4031 <Bug:1193003> 8162, Cursors may not be shared in 8.1 Not available 8170, when they should be 901 共 享 池 结 构 中 的 一 些 BUG 会 引 起 这 个 错 误, 不 过 通 常 大 量 的 共 享 的 SQL/PLSQL 语 句 也 会 引 起 这 个 错 误 一 旦 打 过 了 最 新 的 补 丁, 在 遇 到 这 个 问 题 的 时 候 我 们 强 烈 推 荐 调 整 数 据 库 和 应 用 要 得 到 已 知 的 BUG 的 完 整 信 息, 可 以 参 考 :<Note:62143.1>: Main issues affecting the Shared Pool on Oracle 7, Oracle8 and Oracle8i 共 享 池 碎 片 每 一 次, 需 要 被 执 行 的 SQL 或 者 PL/SQL 语 句 的 解 析 形 式 载 入 共 享 池 中 都 需 要 一 块 特 定 的 连 续 的 空 间 数 据 库 要 扫 描 的 第 一 个 资 源 就 是 共 享 池 中 的 空 闲 可 用 内 存 一 旦 空 闲 内 存 耗 尽, 数 据 库 要 查 找 一 块 已 经 分 配 但 还 没 使 用 的 内 存 准 备 重 用 如 果 这 样 的 确 切 尺 寸 的 大 块 内 存 不 可 用, 就 继 续 按 照 如 下 标 准 寻 找 :

大 块 (chunk) 大 小 比 请 求 的 大 小 大 空 间 是 连 续 的 大 块 内 存 是 可 用 的 ( 而 不 是 正 在 使 用 的 ) 这 样 大 块 的 内 存 被 分 开, 剩 余 的 添 加 到 相 应 的 空 闲 空 间 列 表 中 当 数 据 库 以 这 种 方 式 操 作 一 段 时 间 之 后, 共 享 池 结 构 就 会 出 现 碎 片 当 共 享 池 存 在 碎 片 的 问 题, 分 配 一 片 空 闲 的 空 间 就 会 花 费 更 多 的 时 间, 数 据 库 性 能 也 会 下 降 ( 整 个 操 作 的 过 程 中,"chunk allocation" 被 一 个 叫 做 "shared pool latch" 的 闩 所 控 制 ) 或 者 是 出 现 ORA-04031 错 误 errors ( 在 数 据 库 不 能 找 到 一 个 连 续 的 空 闲 内 存 块 的 时 候 ) 参 考 <Note:61623.1>: 可 以 得 到 关 于 共 享 池 碎 片 的 详 细 讨 论 如 果 SHARED_POOL_SIZE 足 够 大, 大 多 数 的 ORA-04031 错 误 都 是 由 共 享 池 中 的 动 态 SQL 碎 片 导 致 的 可 能 的 原 因 如 下 : 非 共 享 的 SQL 生 成 不 必 要 的 解 析 调 用 ( 软 解 析 ) 没 有 使 用 绑 定 变 量 要 减 少 碎 片 的 产 生 你 需 要 确 定 是 前 面 描 叙 的 几 种 可 能 的 因 素 可 以 采 取 如 下 的 一 些 方 法, 当 然 不 只 局 限 于 这 几 种 : 应 用 调 整, 数 据 库 调 整 或 者 实 例 参 数 调 整 请 参 考 <Note:62143.1>, 描 述 了 所 有 的 这 些 细 节 内 容 这 个 注 释 还 包 括 了 共 享 池 如 何 工 作 的 细 节 下 面 的 视 图 有 助 于 你 标 明 共 享 池 中 非 共 享 的 SQL/PLSQL: V$SQLAREA 视 图 这 个 视 图 保 存 了 在 数 据 库 中 执 行 的 SQL 语 句 和 PL/SQL 块 的 信 息 下 面 的 SQL 语 句 可 以 显 示 给 你 带 有 literal 的 语 句 或 者 是 带 有 绑 定 变 量 的 语 句 : SELECT substr(sql_text,1,40) "SQL", count(*), sum(executions) "TotExecs" FROM v$sqlarea WHERE executions < 5 GROUP BY substr(sql_text,1,40) HAVING count(*) > 30 ORDER BY 2; 注 意 : 语 句 Having 中 的 "30" 数 值 可 以 根 据 需 要 调 整 以 得 到 更 为 详 细 的 信 息

X$KSMLRU 视 图 有 一 个 固 定 表 x$ksmlru 跟 踪 共 享 池 中 导 致 其 它 对 象 换 出 (age out) 的 应 用 这 个 固 定 表 可 以 用 来 标 记 是 什 么 导 致 了 大 的 应 用 如 果 很 多 对 象 在 共 享 池 中 都 被 阶 段 性 的 刷 新 可 能 导 致 响 应 时 间 问 题 并 且 有 可 能 在 对 象 重 载 入 共 享 池 中 的 时 候 导 致 库 高 速 缓 冲 闩 竞 争 问 题 关 于 这 个 x$ksmlru 表 的 一 个 不 寻 常 的 地 方 就 是 如 果 有 人 从 表 中 选 取 内 容 这 个 表 的 内 容 就 会 被 擦 除 这 样 这 个 固 定 表 只 存 储 曾 经 发 生 的 最 大 的 分 配 这 个 值 在 选 择 后 被 重 新 设 定 这 样 接 下 来 的 大 的 分 配 可 以 被 标 记, 即 使 它 们 不 如 先 前 的 分 配 过 的 大 因 为 这 样 的 重 置, 在 查 询 提 交 后 的 结 果 不 可 以 再 次 得 到, 从 表 中 的 输 出 的 结 果 应 该 小 心 的 保 存 监 视 这 个 固 定 表 运 行 如 下 操 作 : SELECT * FROM X$KSMLRU WHERE ksmlrsiz > 0; 在 Oracle8i 中 这 个 表 不 能 被 SYS 用 户 之 外 的 用 户 所 选 取 小 的 共 享 池 尺 寸 最 后, 一 个 小 的 共 享 池 可 以 导 致 ORA-04031 错 误, 不 过 在 碎 片 真 正 的 是 个 问 题 的 时 候 增 大 共 享 池 的 大 小 的 时 候 要 小 心 在 错 误 发 现 的 时 候 通 常 有 延 迟 现 象, 不 过 当 在 大 的 共 享 池 的 碎 片 中 找 到 一 片 空 闲 的 内 存 会 加 大 对 性 能 的 影 响 下 面 的 信 息 将 有 助 于 你 调 整 共 享 池 的 大 小 : 库 高 速 缓 冲 命 中 率 命 中 率 有 助 于 你 衡 量 共 享 池 的 使 用, 基 于 多 少 次 SQL/PLSQL 需 要 被 解 析 而 不 是 重 用 下 面 的 SQL 语 句 有 助 于 你 计 算 库 高 速 缓 冲 的 命 中 率 : SELECT SUM(PINS) "EXECUTIONS", SUM(RELOADS) "CACHE MISSES WHILE EXECUTING" FROM V$LIBRARYCACHE; 如 果 misses 比 上 executions 大 于 1%, 那 就 应 该 尝 试 着 通 过 加 大 共 享 池 来 减 少 库 高 速 缓 冲 的 丢 失 Shared Pool Size Calculation 要 计 算 最 适 合 当 前 工 作 负 荷 的 共 享 池 大 小, 参 考 : <Note:1012046.6>: HOW TO CALCULATE YOUR SHARED POOL SIZE.

4. 对 ORA-04031 的 高 级 分 析 如 果 使 用 如 上 的 解 决 办 法, 这 个 错 误 仍 然 出 现, 在 initsid.ora 文 件 中 设 定 如 下 的 事 件 并 重 新 启 动 实 例 : event = "4031 trace name errorstack level 3" 会 在 下 一 次 错 误 发 生 的 时 候 产 生 一 个 跟 踪 文 件 这 个 跟 踪 文 件 可 以 提 供 给 Oracle 支 持 人 员 来 解 决 问 题 相 关 文 档 <Note:151790.1> : Oracle8 Tuning Documentation Guide <Note:62143.1>: Understanding and Tuning the Shared Pool in Oracle7, Oracle8, and Oracle8i. <Note:1012046.6>: HOW TO CALCULATE YOUR SHARED POOL SIZE <Note:1012049.6>: TUNING LIBRARY CACHE LATCH CONTENTION <Note:61623.1>: Resolving Shared Pool Fragmentation In Oracle7 <Note: 146599.1>: 就 是 这 篇 文 档 的 英 文 原 稿. About: 这 篇 文 章 的 翻 译 是 本 着 学 习 交 流 的 目 的, 当 然, 原 英 文 作 者 保 留 版 权. 如 果 对 译 文 上 的 技 术 细 节 不 是 很 满 意, 可 以 参 考 原 英 文 文 档. 有 其 它 问 题 请 通 过 Fenng@itpub.net 和 我 联 系.