数据一致性检查
功能描述
Vastbase支持基于数据库元数据进行数据一致性校验。支持对带有可变长字段的表,并且可变长字段作为索引列的逻辑数据校验。
注意事项
仅支持初始化用户和系统管理员执行一致性检查。
逻辑数据检查只支持astore和ustore。
逻辑数据检查只支持btree索引。
不支持分区表的逻辑数据检查。
语法格式
在数据库中使用SQL语句检查。
DBCC CHECKTABLE table_name WITH WITH_OPTION;
在操作系统使用dbcc工具检查。
dbcc [OPTION]... [DBNAME] [DESCRIPTION]
参数说明
table_name
要进行一致性校验的表名称。
WITH_OPTION
- PHYSICAL_ONLY:表物理文件检查。
- LOGICAL_DATA:检查索引表物理文件和数据表物理文件数据一致性。
- LOGICAL_FILE:检查索引表物理文件完整性。
OPTION
-t, --table=TABLENAME:指定要检查的表名。
--with=WITH_OPTION:指定检查类型:PHYSICAL_ONLY、LOGICAL_FILE、LOGICAL_DATA。
--internal=TIME:定期查询间隔时间,单位为秒。
-?,--help:显示此帮助。
连接选项
-h, --host=HOSTNAME:指定运行服务器的主机名,如果数值以斜杠开头则被用作到Unix域套接字的路径。
-p, --port=PORT:数据库服务器端口号。
-U, --username=USERNAME:指定所连接主机的用户名。
-w, --no-password:不出现输入密码提示。如果主机要求密码认证并且密码没有通过其它形式给出,则连接尝试将会失败。
-W, --password:指定
-U
参数所指定的用户密码。--maintenance-db=DBNAME:指定数据库。
示例
1、创建测试表,索引并插入测试数据。
CREATE TABLE test_1200417(f1 int,f2 date,f3 text ,f4 timestamp,f5 varchar(20),f6 varchar2(20),f7 blob,f8 clob, f9 json, f10 bytea,f11 CHARACTER VARYING(100),f12 xml ) ;
CREATE INDEX index_1200417 on test_1200417(f3) ;
CREATE UNIQUE INDEX index_1200417_unique on test_1200417(f5) ;
CREATE INDEX index_1200417_com on test_1200417(f1,f6) ;
CREATE INDEX index_1200417_some on test_1200417 using btree(f1) where f1>1000 ;
INSERT INTO test_1200417 select t,now(),t,now(),t,t,empty_blob(),t,'{"name":"jack"}'::json,'qwert',t,''::xml from generate_series(1,10000) t;
2、在vsql客户端使用dbcc进行检查。
dbcc checktable test_1200417 with logical_data;
返回结果为:
INFO: [LOGICAL_DATA] index relation "index_1200417" for relation "test_1200417" column "f3" checked success
INFO: [LOGICAL_DATA] index relation "index_1200417_unique" for relation "test_1200417" column "f5" checked success
INFO: [LOGICAL_DATA] index relation "index_1200417_com" for relation "test_1200417" column "f1,f6" checked success
INFO: [LOGICAL_DATA] index relation "index_1200417_some" for relation "test_1200417" column "f1" checked success
DBCC CHECK
3、查询test_1200417表物理文件的ID。
SELECT relfilenode FROM pg_class WHERE relname='test_1200417';
返回结果为:
relfilenode
-------------
24570
(1 row)
4、退出数据库,在操作系统使用dbcc工具进行检查。
dbcc -t test_1200417 --with=PHYSICAL_ONLY --maintenance-db=vastbase -U vbadmin
返回结果为:
INFO: relation "test_1200417" has 178 blocks
INFO: relation "test_1200417" checked 100 blocks,success:100,failed:0,noblock:0,failedBlocks:[]
INFO: relation "test_1200417" checked 78 blocks,success:78,failed:0,noblock:0,failedBlocks:[]
5、清理测试数据。
DROP TABLE test_1200417 cascade;