VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

数据一致性检查

功能描述

Vastbase 支持根据数据库元数据进行数据一致性检查。

语法格式

  • 在数据库中使用sql语句检查。

    DBCC CHECKTABLE table_name WITH WITH_OPTION;
    
  • 在操作系统使用dbcc工具检查。

    dbcc [选项]...[连接选项]
    

参数说明

  • WITH_OPTION
    • PHYSICAL_ONLY:表物理文件检查。
    • LOGICAL_DATA:检查索引表物理文件和数据表物理文件数据一致性。
    • LOGICAL_FILE:检查索引表物理文件完整性。
  • 选项
    • -t, –table=TABLENAME 指定要检查的表名。
    • –with=WITH_OPTION 指定检查类型:PHYSICAL_ONLY、LOGICAL_FILE、LOGICAL_DATA。
    • –internal 定期查询间隔时间,单位为秒。
    • -?,–help 显示此帮助。
  • 连接选项
    • -h, –host=HOSTNAME 数据库服务器所在机器的主机名或套接字目录。
    • -p, –port=PORT 数据库服务器端口号。
    • -U, –username=USERNAME 连接的用户名。
    • -w, –no-password 永远不提示输入口令。
    • -W, –password 强制提示输入口令。
    • –maintenance-db=DBNAME 指定数据库。

注意事项

  • 检查堆表与索引表数据间的逻辑关系,仅支持表结构中的字段类型为定长类型。
  • 若创建表时包含变长字段,删除变长字段也不支持校验。

示例

修改表物理文件进行一致性检查。

1、创建测试表并插入测试数据。

create table test(id int ,name text);
insert into test values (generate_series(1,100000),'chinatest测试');

2、查询test表物理文件的ID。

select relfilenode from pg_class where relname='test';

返回结果为:

relfilenode
-----------------
         25009
(1行记录)

3、退出数据库,在$PGDATA/base目录下执行以下语句。

cd $PGDATA/base
find -name 25009

结果返回如下:

./16553/25009

4、修改步骤3查到的文件内容。

5、在操作系统使用dbcc工具进行检查:

dbcc -t test --with=PHYSICAL_ONLY --maintenance-db=vastbase -U vbadmin

返回结果为:

LOG:   relation “bmsql_config” has 1 blocks
WARNING: page verification failed,calculated checksum 31338 but expected 29555,the block num is 0
LOG:   relation “bmsql_config” checked 1 blocks,success:0,failed:1,noblock:0

6、登录数据库,对表进行检查。

dbcc checktable test with physical_only;

返回结果为:

LOG:   relation “bmsql_config” has 1 blocks
WARNING: page verification failed,calculated checksum 31338 but expected 29555,the block num is 0
LOG:   relation “bmsql_config” checked 1 blocks,success:0,failed:1,noblock:0
DBCC CHECK

7、清理测试数据。

DROP TABLE test;