返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

GBA-02BR-0041
错误码
错误标识
错误信息
GBA-02BR-0041

File I/O operation error
错误出现原因
I/O 出现错误
分析与建议
检查日志,进一步确定进程错误

查看账本历史操作记录
前提条件

系统中需要有审计管理员或者具有审计管理员权限的角色。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
209

数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时
段内有账本操作记录结果产生。
背景信息

只有拥有AUDITADMIN 属性的用户才可以查看账本历史操作记录。
有关数据库用户及
创建用户的办法请参见7.2.4 用户。

查询全局区块表命令是直接查询gs_global_chain 表,操作为:
SELECT * FROM gs_global_chain;
该表有11 个字段,每个字段的含义见章节20.2.13 GS_GLOBAL_CHAIN。

查询用户历史表的命令是直接查询BLOCKCHAIN 模式下的用户历史表,操作为:例
如用户表所在的模式为ledgernsp,表名为usertable,则对应的用户历史表名为
blockchain.ledgernsp_usertable_hist;
SELECT * FROM blockchain.ledgernsp_usertable_hist;
用户历史表有4 个字段,每个字段的含义见表7-19。
用户历史表的表名一般为blockchain.__hist 形式。当防
篡改用户表模式名或者表名过长导致前述方式生成的表名超出表名长度限制,
则会采用
blockchain.__hist 的方式命名。
操作步骤
步骤1 连接CN 节点,登录数据库查询全局区块表记录。
postgres=# SELECT * FROM gs_global_chain;
例如,查询结果如下:
blocknum | dbname | username |
starttime | relid | relnsp
| relname |
relhash | globalhash txcommand
----------+----------+----------+-------------------------------+-------+----
-------+-----------+------------------+----------------------------------+---
---------------
------------------------------------------------------------
0 | postgres | gbase
| 2021-04-14 07:00:46.32757+08 | 16393 | ledgernsp |
usertable | a41714001181a294 | 6b5624e039e8aee36bff3e8295c75b40 | insert into
ledge
rnsp.usertable values(1, 'alex'), (2, 'bob'), (3, 'peter');

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
210
1 | postgres | gbase
| 2021-04-14 07:01:19.767799+08 | 16393 | ledgernsp |
usertable | b3a9ed0755131181 | 328b48c4370faed930937869783c23e0 | update
ledgernsp.
usertable set name = 'bob2' where id = 2;
2 | postgres | gbase
| 2021-04-14 07:01:29.896148+08 | 16393 | ledgernsp |
usertable | 0ae4b4e4ed2fcab5 | aa8f0a236357cac4e5bc1648a739f2ef | delete from
ledge
rnsp.usertable where id = 3;
该结果表明,
用户gbase 连续执行了三条DML 命令,
包括INSERT、
UPDATE 和DELETE
操作。
步骤2 查询历史表记录。
postgres=# SELECT * FROM blockchain.ledgernsp_usertable_hist;
查询结果如下:
rec_num |
hash_ins
|
hash_del
|
pre_hash
---------+------------------+-----------------+------------------------------
----
0
| 1f2e543c580cb8c5 |
|e1b664970d925d09caa295abd38d9b35
1
| 8fcd74a8a6a4b484 |
|dad3ed8939a141bf3682043891776b67
2
| f51b4b1b12d0354b |
| 53eb887fc7c4302402343c8914e43c69
3
| 437761affbb7c605 | 8fcd74a8a6a4b484 | c2868c5b49550801d0dbbbaa77a83a10
4
|
| f51b4b1b12d0354b | 9c512619f6ffef38c098477933499fe3
(5 rows)
查询结果显示,用户gbase 对ledgernsp.usertable 表插入了3 条数据,更新了1 条数据,
随后删除了1 行数据,最后剩余2 行数据,hash 值分别为1f2e543c580cb8c5 和
437761affbb7c605。
步骤3 查询用户表数据及hash 校验列。
postgres=# SELECT *, hash FROM ledgernsp.usertable;
查询结果如下:
id | name |
hash
----+------+------------------
1 | alex | 1f2e543c580cb8c5
2 | bob2 | 437761affbb7c605
(2 rows)
查询结果显示,用户表中剩余2 条数据,与步骤2 中的记录一致。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
211
----结束

sysfragments 系统目录表存储表和索引的个别分段的分段存储信息和 LOW 方式统计
信息分发。对于每个表分段或索引分段,都存在一行。
sysfragments 表具有以下列。

类型
解释
fragtype
CHAR(1)
指示分段对象类型的代码:
I = 原始索引分段
T = 原始表分段

tabid
INTEGER
表的唯一标识代码
indexname
VARCHAR(128)
索引的名称

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 43 -


类型
解释
colno
INTEGER
TEXT 或 BYTE 列的标识代码或滚动窗口分段数上限
partn
INTEGER
物理存储位置的标识代码
strategy
CHAR(1)
分段分布策略的类型的代码:
R = 循环分段存储策略
E = 基于表达式的分段存储策略
I = IN DBSPACE 子句指定作为分段存储策略一部分
的存储位置
N = 时间间隔(或滚动窗口)分段存储策略
N = 时间间隔分段存储策略
L = 列表分段存储策略
T = 基于表的分段存储策略
H = 表是表层次结构内的子表

location
CHAR(1)
保留供将来使用;对于本地,显示 L
servername
VARCHAR(128)
保留供将来使用
evalpos
INTEGER
分段存储列表中的分段位置。
对于按 INTERVAL 的分段存储,
为指示 exprtext 字
段中信息类型的以下某个值:

-1 = 时间间隔分段的数据库空间列表
-2 = 时间间隔值
-3 = 分段存储键
-4 = 滚动窗口分段

按 LIST 的分段存储也使用值 -3。

exprtext
TEXT
分段存储策略的表达式
对于按 INTERVAL、LIST 或滚动窗口进行的分段存
储,提供与 evalpos 字段值对应的信息。

对于按 INTERVAL 或 LIST 的分段存储,提供与
evalpos 字段值对应的信息。

exprbin
BYTE
表达式的二进制版本

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 44 -


类型
解释
exprarr
BYTE
用于优化范围表达式分段存储策略中的表达式的范
围分区数据
flags
INTEGER
供内部使用
dbspace
VARCHAR(128)
存储此分段的数据库空间的名称
levels
SMALLINT
B 型树索引级别数
npused
FLOAT
对于表分段存储策略:数据页数
对于索引分段存储策略:叶子页数

对于滚动窗口表:nrows 中存储大小限制的单位数

nrows
FLOAT
对于表:分段中的行数。
对于索引:唯一键数。

对于滚动窗口表:清除策略中的存储大小上限。

clust
FLOAT
索引集群的程度;较小的数字对应较大的集群
partition
分段的名称
可匹配存储分段的 GBase
8s 数据库空间的名称,也
可以为不同名称
version
SMALLINT
更新分段统计信息时递增的数字
nupdates
FLOAT
分段的更新数
ndeletes
FLOAT
分段的删除数
ninserts
FLOAT
分段的插入数


每个分段在此表中都有一行。evalpos 和 evaltext 字段包含有关个别分段的信息。
使用按 INTERVAL 或 LIST 的分段存储创建的表和索引具有包含有关分段存储策略信
息的其他行。
strategy 类型 T 用于连接索引。
(这是其分段存储策略与表分段存储相同的分段索引。


对表的分发统计信息最近一次重新计算以来,有关该表的 sysfragments 制表 DML 操
作中 nupdates、ndeletes 和 ninserts 列的信息,请参阅在 SYSDISTRIB系统目录表中具有
相同名称的三个列的描述。
在 GBase
8s 中,
fragtype、
tabid、
indexname 和 evalpos 列上的组合索引允许重复值。