Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 数据库管理 » 管理数据库 » 数据库管理实用程序

 

校验实用程序 (dbvalid)

校验数据库中某些或所有表和实例化视图的索引和键。

语法
dbvalid [ options ] [ object-name, ... ]
选项 说明
@data

从指定的环境变量或配置文件中读入选项。请参见使用配置文件

如果要保护口令或配置文件中的其它信息,可以使用文件隐藏实用程序对配置文件的内容进行模糊处理。请参见文件隐藏实用程序 (dbfhide)

-c "keyword=value; ..."

指定数据库连接参数。有关连接参数的说明,请参见连接参数。用户 ID 必须有 DBA 或 VALIDATE 权限。

例如,以下命令会校验数据库 c:\salesdata.db,包括所有的表和实例化视图,它以用户 DBA 和口令 sql 进行连接:

dbvalid -c "UID=DBA;PWD=sql;DBF=c:\salesdata.db"
-d 校验数据库中的所有表页是否属于正确的对象,并执行校验和校验。-d 选项不包括数据或索引的校验。-d 选项不能与 -i、-s 或 -t 选项一起使用。
-fx 校验表的每一行,并确保表中的行数与该表所关联的每个索引中的行数相匹配。此选项不为每个行执行单独的索引查找。在校验具有较小高速缓存的大数据库时,使用此选项可以大大提高性能。
-i 校验指定的索引。
-o filename 将输出消息写入指定的文件中。
-q 不将输出消息显示给客户端。但您仍可以使用 -o 选项将消息记录到文件中。
-s 使用校验和校验数据库。校验和用于确定是否在磁盘上已修改了数据库页。校验和校验读取磁盘上的每个数据库页,并计算其校验和。如果计算出来的校验和与页面存储的校验和不同,则该页面已被修改,并返回错误。任何无效页的页码都会显示在数据库服务器消息窗口中。-s 选项不能与 -d、-i、-t 或任何 -f 选项一起使用。
-t

指定 object-name 值的列表,该列表是表和实例化视图的列表。

object-name

指定要校验的表或实例化视图的名称。

如果使用 -i,则 object-name 是指要校验的索引。

注释

缺省情况下,dbvalid 会校验数据库中的所有表、实例化视图和索引,并且校验数据库本身。

通过校验实用程序,可以校验数据库中某些或所有表和实例化视图的索引和键。校验实用程序还可以用于验证数据库中的所有表页是否属于正确的对象,并验证页的校验和是否正确。缺省情况下,dbvalid 会校验数据库中的所有表和实例化视图(其行为与 -t 选项相同)。

对于每张表或每个实例化视图,校验实用程序都会扫描整个对象,然后按表上所定义的每个索引和键查找每个记录。校验实用程序还可以用于验证数据库中的所有表页是否属于正确的对象,并验证页的校验和是否正确。要运行校验实用程序,必须具有 DBA 或 VALIDATE 权限。

您还可以用下列方式访问校验实用程序:

  • 从 Sybase Central 使用 [校验数据库向导]。请参见校验数据库

  • 从 Interactive SQL 使用 VALIDATE 语句。请参见VALIDATE 语句

校验实用程序可与常规备份结合使用,以确保数据库中数据的完整性。如果要校验数据库的备份副本,建议先制作该备份的副本,然后校验副本。这样做可以确保不会更改在恢复期间使用的文件。请参见备份和数据恢复

小心

不得以任何方式更改数据库和事务日志的备份副本。如果在备份过程中未执行任何事务,或者指定了 BACKUP DATABASE WITH CHECKPOINT LOG RECOVER 或 WITH CHECKPOINT LOG NO COPY,则可以使用只读模式或通过验证备份数据库的副本来验证备份数据库的有效性。

但是,如果有正在执行的事务,或者指定了 BACKUP DATABASE WITH CHECKPOINT LOG COPY,则当您启动数据库服务器时,数据库服务器必须执行数据库恢复。恢复操作会修改备份副本,这会防止应用原数据库的后续事务日志文件。

如果运行校验实用程序时自动启动了某个数据库,则该数据库会以只读方式启动。在校验是备份或恢复计划的一部分时,这可防止对该数据库进行更改。

如果校验实用程序连接到某个正在运行的数据库,而该数据库不是以只读方式启动的,则校验实用程序会显示警告。该警告提醒您,不能将正在被校验的数据库用作恢复计划的一部分。执行备份的方式决定了通过 dbbackup 创建的大多数数据库都被标记为需要恢复。如果您正要校验的数据库需要恢复,且您希望强制该数据库以可读写方式启动,则可以在运行 dbvalid 之前启动该数据库,也可以为 DBS 连接参数指定一个有效值。请参见DatabaseSwitches 连接参数 [DBS]

如果 mycopy.db 数据库需要恢复,以下两个命令都允许运行 dbvalid:

dbvalid -c "UID=DBA;PWD=sql;DBF=mycopy.db;DBS=-n mycopy"
dbvalid -c "UID=DBA;PWD=sql;DBF=mycopy.db;DBS=-dh"
小心

应在没有任何连接对数据库进行更改时对表或整个数据库进行校验;否则,可能会报告错误,指出某种形式的数据库损坏,而实际上并没有任何损坏。

对于未启用校验和的数据库,校验实用程序会返回有关校验和冲突的警告。因为无论是否启用校验和,数据库服务器都会自动计算重要数据库页面的校验和。针对在 Windows Mobile 上运行的数据库或者在可能更不可靠的存储介质(例如可移动驱动器)上运行的数据库,数据库服务器也会自动为这些数据库创建校验和。请参见使用校验和检测损坏

校验要求以排它方式访问每个表。因此,最好在数据库中没有其它活动时进行校验。

退出代码是零(成功)或非零(失败)。请参见软件组件的退出代码

有关在校验期间进行的特定检查的详细信息,请参见VALIDATE 语句