openGauss学习笔记-124 openGauss 数据库管理-设置账本数据库-查看账本历史操作记录

文章目录

    • [openGauss学习笔记-124 openGauss 数据库管理-设置账本数据库-查看账本历史操作记录](#openGauss学习笔记-124 openGauss 数据库管理-设置账本数据库-查看账本历史操作记录)
      • [124.1 前提条件](#124.1 前提条件)
      • [124.2 背景信息](#124.2 背景信息)
      • [124.3 操作步骤](#124.3 操作步骤)

openGauss学习笔记-124 openGauss 数据库管理-设置账本数据库-查看账本历史操作记录

124.1 前提条件

  • 系统中需要有审计管理员或者具有审计管理员权限的角色。
  • 数据库正常运行,并且对防篡改数据库执行了一系列增、删、改等操作,保证在查询时段内有账本操作记录结果产生。

124.2 背景信息

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

  • 查询全局区块表命令是直接查询gs_global_chain表,操作为:

    sql 复制代码
    SELECT * FROM gs_global_chain;

    该表有11个字段,每个字段的含义见章节GS_GLOBAL_CHAIN。

  • 查询用户历史表的命令是直接查询BLOCKCHAIN模式下的用户历史表,操作为:

    例如用户表所在的模式为ledgernsp,表名为usertable,则对应的用户历史表名为blockchain.ledgernsp_usertable_hist;

    sql 复制代码
    SELECT * FROM blockchain.ledgernsp_usertable_hist;

    用户历史表有4个字段,每个字段的含义见表1。

    说明: 用户历史表的表名一般为blockchain._hist形式。当防篡改用户表模式名或者表名过长导致前述方式生成的表名超出表名长度限制,则会采用blockchain.<schema_oid><table_oid>_hist的方式命名。

124.3 操作步骤

  1. 以操作系统用户omm登录数据库主节点。

  2. 使用如下命令连接数据库。

    css 复制代码
    gsql -d postgres -p 8000

    postgres为需要连接的数据库名称,8000为端口号。

    连接成功后,系统显示类似如下信息:

    python 复制代码
    gsql ((openGauss x.x.x build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131)
    Non-SSL connection (SSL connection is recommended when requiring high-security)
    Type "help" for help.
    
    openGauss=# 
  3. 查询全局区块表记录。

    makefile 复制代码
    openGauss=# SELECT * FROM gs_global_chain;

    查询结果如下:

    sql 复制代码
     blocknum |  dbname  | username |           starttime           | relid |  relnsp   |  relname  |     relhash      |            globalhash            |
                    txcommand
    ----------+----------+----------+-------------------------------+-------+-----------+-----------+------------------+----------------------------------+------------------
    ------------------------------------------------------------
            0 | postgres | omm      | 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');
            1 | postgres | omm      | 2021-04-14 07:01:19.767799+08 | 16393 | ledgernsp | usertable | b3a9ed0755131181 | 328b48c4370faed930937869783c23e0 | update ledgernsp.
    usertable set name = 'bob2' where id = 2;
            2 | postgres | omm      | 2021-04-14 07:01:29.896148+08 | 16393 | ledgernsp | usertable | 0ae4b4e4ed2fcab5 | aa8f0a236357cac4e5bc1648a739f2ef | delete from ledge
    rnsp.usertable where id = 3;

    该结果表明,用户omm连续执行了三条DML命令,包括INSERT、UPDATE和DELETE操作。

  4. 查询历史表记录。

    makefile 复制代码
    openGauss=# SELECT * FROM blockchain.ledgernsp_usertable_hist;

    查询结果如下:

    markdown 复制代码
     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)

    查询结果显示,用户omm对ledgernsp.usertable表插入了3条数据,更新了1条数据,随后删除了1行数据,最后剩余2行数据,hash值分别为1f2e543c580cb8c5和437761affbb7c605。

  5. 查询用户表数据及hash校验列。

    makefile 复制代码
    openGauss=# SELECT *, hash FROM ledgernsp.usertable;

    查询结果如下:

    bash 复制代码
     id | name |       hash
    ----+------+------------------
      1 | alex | 1f2e543c580cb8c5
      2 | bob2 | 437761affbb7c605
    (2 rows)

    查询结果显示,用户表中剩余2条数据,与步骤4中的记录一致。

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

相关推荐
SelectDB1 分钟前
高并发 BI 看板怎么撑住:隔离与加速配置速查
大数据·数据库·数据分析
l1t34 分钟前
测试DuckDB v2.1.0-alpha49002的bignum乘法
数据库·sql·算法·duckdb
麦壳饼1 小时前
SonnetDB:向量召回率评估中的精确基线与参数记录
数据库·sonnetdb
ClouGence1 小时前
数据如何随时可用?广西水牛先生的 MySQL 实时同步实践
数据库·mysql·数据分析
斯晨的AI笔记1 小时前
rsync 部署避坑:脚本执行位被 git 模式位抹掉,巡检备份双静默失败的排查与根治
数据库
老王的笔记v1 小时前
64期 多网盘文件下载管理工具 浏览器脚本接入Aria2与批量任务推送
开源软件
这个DBA有点耶2 小时前
innodb_autoinc_lock_mode的三种模式:批量插入时自增锁的持有逻辑与调优
数据库·架构·代码规范
我命由我123452 小时前
5-1.Python 编码进阶 - 函数进阶(参数、返回值、递归、函数作为参数传递、lambda 匿名函数)
java·服务器·数据库·后端·python·java-ee·python3.11
小蒜学长2 小时前
基于Spring Boot+Vue3的在线游戏技术指导师匹配系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·在线游戏技术指导
Web3&Basketball3 小时前
DeepSeek V4.1 Flash 实测:Token 砍半、Search API 跑通
数据库·人工智能·python·大模型·api调用·deepseek·推理优化