24.03.2015 Views

老蒋谈存储案例教学 - LinuxTone.Org

老蒋谈存储案例教学 - LinuxTone.Org

老蒋谈存储案例教学 - LinuxTone.Org

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

第 三 节 Oracle 的 数 据 保 护<br />

我 们 都 知 道 oracle 的 备 份 有 几 钟 方 式 , 冷 备 , 热 备 ,rman,imp 等 , 我 们 注 意<br />

到 当 我 们 采 取 热 备 的 时 候 , 需 要 对 每 个 要 备 份 的 表 空 间 置 为 backup 模 式 。 通 常<br />

的 热 备 脚 本 都 是 这 样 的<br />

alter tablespace XXX begin backup;<br />

cp XXX ....<br />

alter tablespace XXX end backup;<br />

( 这 里 需 要 注 意 一 点 ,oracle 的 最 小 存 储 单 位 是 一 个 数 据 块 , 一 个 块 的 大<br />

小 通 常 设 置 为 8k, 而 操 作 系 统 的 块 通 常 是 512bytes, 这 样 的 话 一 个 oracle 的 数<br />

据 由 很 多 个 操 作 系 统 的 块 组 成 。 而 且 对 于 一 个 数 据 文 件 来 说 , 它 的 所 有 块 对 应 的<br />

操 作 系 统 的 块 并 不 是 按 顺 序 存 储 的 , 当 运 行 cp 等 操 作 系 统 命 令 时 并 不 能 指 定 从<br />

那 个 oracle 数 据 块 开 始 拷 贝 。)<br />

当 open 数 据 库 的 时 候 ,oracle 会 去 比 较 控 制 文 件 中 数 据 文 件 记 录 和 数 据 文<br />

件 头 的 checkpoint cnt, 如 果 两 者 相 同 , 则 判 断 不 需 要 介 质 恢 复 , 如 果 不 同 ,<br />

这 时 候 oracle 就 会 报 某 某 文 件 需 要 介 质 恢 复 。 然 后 拷 贝 回 数 据 文 件 备 份 我 们 开<br />

始 recover, 这 时 候 就 从 上 次 做 备 份 时 的 scn 开 始 恢 复 , 运 用 日 志 , 直 到 恢 复 结<br />

束 。 当 cp 数 据 文 件 时 , 比 如 说 我 们 拷 贝 的 第 一 个 块 可 能 是 scn 为 100 的 数 据 块 ,<br />

当 我 们 完 成 这 个 块 的 拷 贝 后 , 这 个 块 有 可 能 被 别 的 进 程 多 次 修 改 ,scn 变 为 900。<br />

我 们 知 道 当 数 据 库 发 生 检 查 点 时 会 去 更 新 数 据 文 件 头 和 控 制 文 件 中 的<br />

checkpoint scn, 如 果 当 我 们 在 cp 数 据 文 件 的 同 时 发 生 了 n 次 checkpoint, 这<br />

时 候 数 据 文 件 头 的 scn 可 能 被 更 新 了 很 多 次 。 这 时 候 cp 的 进 程 去 拷 贝 数 据 文 件<br />

头 所 在 的 操 作 系 统 块 , 可 能 这 个 数 据 文 件 头 的 块 因 为 被 checkpoint 了 很 多 次 导<br />

致 它 的 scn 为 1000, 这 时 候 整 个 数 据 文 件 会 出 现 不 一 致 , 当 用 这 个 备 份 文 件 去<br />

恢 复 时 , 恢 复 进 程 会 从 scn=1000 开 始 恢 复 , 这 样 的 话 开 始 那 个 scn=100 的 块 将<br />

丢 失 从 scn100-scn1000 的 数 据 , 因 为 数 据 块 并 不 应 用 scn 在 1000 以 前 的 日 志 ,<br />

而 且 这 样 做 的 话 可 能 出 现 一 些 数 据 块 的 corruption, 所 以 不 置 成 backup 模 式 备<br />

份 的 话 并 不 可 取 。 当 然 , 如 果 你 能 确 保 当 cp 的 时 候 不 发 生 checkpoint, 或 者 你<br />

的 操 作 系 统 块 的 大 小 不 小 于 oracle 的 数 据 块 大 小 , 这 些 情 况 下 不 置 backup mode<br />

拷 贝 出 来 的 文 件 也 是 有 效 的 。<br />

现 在 我 们 知 道 了 为 什 么 不 能 不 设 置 backup 模 式 , 下 面 来 讲 讲 alter tablespace<br />

XXX begin backup 做 了 什 么 ?<br />

当 数 据 文 件 置 于 backup 模 式 时 ,oracle 会 去 锁 定 数 据 文 件 头 , 这 时 候 数 据<br />

库 发 生 检 查 点 的 话 将 不 会 修 改 文 件 头 的 checkpoint scn, 而 只 是 增 加 checkpoint<br />

PDF 文 件 使 用 "pdfFactory Pro" 试 用 版 本 创 建 www.fineprint.cn

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!