说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

解 决sybase 用 户 数 据 库 不 能 进 入 故 障 的 一 种 方 法-Delphi资

HTML文档下载 WORD文档下载 PDF文档下载
解 决sybase 用 户 数 据 库 不 能 进 入 故 障 的 一 种 方 法-Delphi资

---- 几 天 前, 我 的 一 位 同 事 在 启 动sybase 数 据 库 时, 由 于 疏 忽, 忘 记 首 先 打 开 装 有 用 户 数 据 库(daydb) 的 外 置 硬 盘 驱 动 器。 导 致 数 据 库 引 擎 在 启 动 时 出 现 错 误:

udactivate: error starting virtual disk 5

(启动虚拟磁盘5错误)

Open '/wkdisk/data1.dat'

No suck file or directory

(打开'/wkdisk/data1.dat'

没有此文件或目录)

udstario: vdn 5 has not been setup

Error: 840

severity 17

state 1

Device 'datadev1' has not been

correctly activated at startup time

(在启动时设备'datadev1'没有正确地激活)

Unable to proceed with the recorvery

of dbid(6) because of precious error

(因为上述错误,dbid(6)不能执行恢复进程)

Database 'daydb' cannot be opened

(数据库'daydb'不能打开)

An earlier attempt at recorvery marked it 'suspect'

(以前的一个恢复动作失败导致标识其‘可疑’)

---- 这 样, 由 于 驻 留 有 数 据 库 设 备 文 件 的 磁 盘 驱 动 器 未 开 启, 导 致 在sybase 数 据 库 启 动 时 不 能 正 确 地 激 活 相 应 地 数 据 库 虚 拟 设 备, 从 而 造 成 用 户 数 据 库‘dbid(6)’ 即‘daydb’ 不 能 打 开, 无 法 进 入。

---- 出 现 此 错 误 后, 我 们 首 先 用isql 以 数 据 库 管 理 员 的 身 份 登 录 到 数 据 库 中, 尝 试 进 入daydb 数 据 库, 系 统 显 示 此 数 据 库 为‘ 可 疑 的’, 不 能 打 开, 请 看 系 统 错 误 记 录 文 件errorlog 查 找 错 误。 而errorlog 文 件 中 记 录 的 错 误 即 为 数 据 库 引 擎 启 动 时 显 示 的 错 误。 我 们 又 尝 试 用 数 据 库 检 查 维 护 命 令dbcc checkdb 来 解 决, 系 统 同 样 显 示“ 此 数 据 库 为‘ 可 疑 的’, 不 能 打 开。”, 利 用dbcc checkalloc( 检 查 数 据 库 的 页 面 分 配) 也 失 败 了, 似 乎 只 剩 下 使 用dbcc repairdb(daydb

dropdb) 命 令( 修 复 受 损 的 数 据 库, 这 条 命 令 实 际 上 就 是 删 除 此 受 损 数 据 库, 因 为 受 损 数 据 库 不 能 用drop database 命 令 删 除) 这 条 途 径 了-- 在sybase 数 据 库 的 随 机 技 术 文 档 中 也 是 这 样 说 的。 这 样 势 必 要 从 数 据 库 的 备 份 带 上 恢 复 上 次 该 数 据 库 的 备 份。 但 是, 在 几 天 前 刚 刚 对daydb 数 据 库 作 过 较 大 地 更 新, 而 更 新 后 还 没 有 来 得 及 备 份, 所 以, 这 条 途 径 实 乃 万 不 得 已 时 的 措 施。

---- 这 时, 猛 然 想 到 在sybase 系 统 中 起 重 要 作 用 的 系 统 表, 系 统 反 复 显 示daydb 数 据 库 为‘ 可 疑 的’, 此 标 记 很 可 能 记 录 在 冒 个 系 统 表 中, 而 改 掉 此 标 志 就 有 可 能 重 新 获 得 对daydb 数 据 库 的 控 制 权, 想 到 这 里, 我 们 立 刻 查 阅sybase 数 据 库 随 机 技 术 文 档 中 有 关 系 统 表 的 描 述, 在sysdatabases 系 统 表 中 找 到 表 示 数 据 库 状 态 的 字 段‘status', 细 看 后 面 的 注 解, 果 然:256 – database is suspect

这 就 说 明 此 字 段 中, 数 字256 表 示 数 据 库 为‘ 可 疑 的’。 查 看 系 统 中daydb 数 据 库 相 应 字 段 的 数 值 为324, 这 是 因 为status 字 段 表 示 数 据 库 的 各 种 属 性, 如:bulkcopy

recorvery time 等, 每 种 属 性 都 有 一 对 应 的 数 值, 各 种 数 据 库 现 在 存 在 属 性 的 数 值 之 和 即 为status 字 段 的 数 值。 用isql 以 数 据 库 管 理 员 的 身 份(sa) 进 入sybase 数 据 库 系 统, 系 统 表 存 储 在master 数 据 库 中 即sa 进 入sybase 的 默 认 数 据 库, 用update 命 令 更 改sysdatabases 系 统 表, 把daydb 数 据 库 的status 字 段 的 值 改 为68(324-256)。 然 后 关 闭sybase 数 据 库 系 统(shutdown)

再 重 新 启 动sybase 数 据 库 引 擎, 系 统 显 示 中 有recorvery dbid(6), 等 一 两 分 钟, 系 统 启 动 完 成, 无 错 误 提 示。 进 入 数 据 库 系 统, 使 用use daydb 进 入daydb 数 据 库, 成 功 !, 检 索 一 些 数 据 表, 正 常 ! 至 此, 故 障 顺 利 解 决。

---- 总 结 这 次 故 障 的 发 生 和 解 决, 笔 者 提 醒 同 样 肩 负 数 据 库 管 理 责 任 的 同 仁, 第 一, 在 启 动 数 据 库 时, 一 定 要 先 把 存 有 数 据 库 设 备 文 件 的 磁 盘 驱 动 器 打 开; 第 二, 当 发 生 类 似 故 障 时, 不 要 慌 张, 匆 忙 地 删 除 受 损 数 据 库; 应 仔 细 查 阅 系 统 有 关 技 术 文 档, 特 别 是 要 关 注 系 统 表 和 系 统 的 存 储 过 程, 往 往 可 以 通 过 对 系 统 表 的 修 改 排 除 故 障; 第 三, 数 据 库 重 要 更 新 后 一 定 要 及 时 做 备 份。

备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘