恢复Sybase SQL Anywhere 数据库
首页 > 业界动态
Sybase SQL Anywhere 是Sybase 公 司 开 发 的 一 种 小 型 数 据 库 产 品, 有 单 用 户 版 和 多 用 户 版, 可 安 装 在Win95、Win98、NT、Netware 等 平 台。SQL Anywhere 的SQL 语 句 基 本 上 和Sybase Adaptive Server 一 致; 而 且 功 能 也 相 当 强;PowerBuilder5.0 以 上 的 版 本 都 自 带 一 个SQL Anywhere。 因 此, 对 使 用 笔 记 本 或 单 机 的 开 发 人 员 来 说, 选 择SQL Anywhere 作 为 数 据 库 来 开 发 应 用 程 序 是 十 分 方 便 的, 故SQL Anywhere 得 到 了 普 遍 的 应 用。 但 是 突 然 断 电 或 不 正 常 关 机 都 有 可 能 破 坏SQL Anywhere 的 数 据, 由 此 造 成 很 大 的 损 失, 下 面 就 来 介 绍 一 种 恢 复 被 破 坏 的 数 据 库 的 方 法。
SQL Anywhere 数 据 库 由 后 缀 分 别 为.db 和.log 的 两 个 文 件 组 成。 其 中.db 的 文 件 是 用 来 存 放 数 据 库 信 息( 包 括 表 结 构、 视 图、 数 据 等)。 而.log 文 件 是 个 日 志 文 件, 用 来 记 录 用 户 每 一 次 对 数 据 库 有 影 响 的 操 作, 例 如 创 建 或 删 除 表、 视 图、 触 发 器 等 对 象, 插 入、 删 除、 修 改 表 中 的 数 据 等。 所 以 只 要 把.log 文 件 的 内 容 转 换 成 一 条 条 的 S Q L 语 句, 然 后 再 建 一 个 空 的 数 据 库, 再 执 行 这 些 S Q L 语 句, 则 恢 复 数 据 的 问 题 就 解 决 了。Sybase 公 司 提 供 了 几 个 实 用 程 序 来 完 成 以 上 功 能。 现 假 设 数 据 库 系 统 文 件 分 别 名 为mydb.db 和mydb.log。 如 果mydb.db 已 被 破 坏。 现 在 创 建 一 个 新 的 数 据 库, 假 设 文 件 分 别 名 为new.db 和new.log。 用Sybase 提 供 的dbtranw.exe, DB32W.EXE, rtsqlw.exe 等 实 用 程 序 来 完 成 恢 复 工 作, 步 骤 如 下 表。
步 骤 命 令 功 能
1. Dbtranw -r -k -y mydb.log db.sql 把.log 文 件 的 内 容 转 换 成 的 S Q L 语 句
2. Attrib -r mydb.db 修 改 只 读 文 件mydb.db 的 属 性 为 可 写
3. Attrib -r mydb.log 修 改 只 读 文 件mydb.log 的 属 性 为 可 写
4. Copy new.db mydb.db 用 新 的 空 库 文 件 覆 盖 被 破 坏 的 旧 库 文 件
5. Copy new.log mydb.log 用 新 的 日 志 文 件 覆 盖 旧 的 日 志 文 件
6. DB32W.EXE -d mydb.db 启 动 数 据 库SQL Anywhere
7. Rtsqlw -q -c "userid=dba; password=sql" read db.sql 执 行 从.log 文 件 中 倒 出 来 的 S Q L 语 句 其 中 第 一 步 的 功 能 是 把 旧 的 日 志 文 件 转 换 成 S Q L 语 句, 并 放 在 一 个 名 为db.sql 的 文 件 中, 特 别 注 意 它 只 能 在 第 五 步 之 前 操 作, 否 则 日 志 文 件 会 被new.log 所 覆 盖, 而 导 致 无 法 恢 复 数 据。 最 后 一 步 的 功 能 是 从 文 件db.sql 中 读 取SQL 语 句 并 执 行, 假 设 数 据 库 的 用 户 名 为dba, 而 口 令 为sql。 有 关 各 个 命 令 及 参 数 据 的 更 详 细 的 用 法 可 以 查 看 相 应 的 帮 助。 在 此 提 醒 用 户 注 意:.log 文 件 不 能 随 便 删 除, 否 则 恢 复 的 数 据 就 不 完 整。
提示:
本站部分文章收集于网络,版权归原作者及出版社所有 如果您觉得侵犯了您的版权请来信告诉我们,我们会尽快删除其内容! 本站原创文章版权归本站所有,除特别申明外,大家可以自由转载,但原作者和来自本站的链接必须保留!