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

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

时间:2023-11-15 19:05:43浏览次数:33  
标签:ledgernsp 数据库 用户 usertable 查询 openGauss 账本

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

124.1 前提条件

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

124.2 背景信息

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

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

    SELECT * FROM gs_global_chain;
    

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

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

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

    SELECT * FROM blockchain.ledgernsp_usertable_hist;
    

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

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

124.3 操作步骤

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

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

    gsql -d postgres -p 8000
    

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

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

    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. 查询全局区块表记录。

    openGauss=# SELECT * FROM gs_global_chain;
    

    查询结果如下:

     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. 查询历史表记录。

    openGauss=# 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)
    

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

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

    openGauss=# SELECT *, hash FROM ledgernsp.usertable;
    

    查询结果如下:

     id | name |       hash
    ----+------+------------------
      1 | alex | 1f2e543c580cb8c5
      2 | bob2 | 437761affbb7c605
    (2 rows)
    

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

标签:ledgernsp,数据库,用户,usertable,查询,openGauss,账本
From: https://blog.51cto.com/shuchaoyang/8400221

相关文章

  • JDBC、数据库连接池、Spring JDBC:JdbcTemplate
    JDBCJDBC(JavaDataBaseConnectivity)概念:Java数据库连接,就是通过Java语言操作数据库。JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实......
  • 人大金仓数据库设置大小写敏感
    1.  人大金仓数据库应设置大小写不敏感1.1. 大小写敏感检查方法1.1.1. V8R3版本检查方法:在人大金仓数据库客户端执行语句:showcase_sensitive;返回结果on:表示大小写敏感;返回结果off:表示大小写不敏感1.1.2. V8R6版本检查方法:执行语句:showenable_ci;返回......
  • 基于 Amazon EKS 搭建开源向量数据库 Milvus
    一、前言生成式AI(GenerativeAI)的火爆引发了广泛的关注,也彻底点燃了向量数据库(VectorDatabase)市场,众多的向量数据库产品开始真正出圈,走进大众的视野。根据 IDC的预测,到2025年,超过80%的业务数据将是非结构化的,以文本、图像、音频、视频或其他格式存储。而大规模存储和查......
  • 数据库表被锁住,如何解决?
    SELECTA .*FROM pg_stat_activityA, pg_locksb, pg_classCWHERE A.pid=b.pid ANDA.sessionid=b.sessionid ANDb.relation=C.oid ANDA.datname='mes' ANDC.relname='edcresultitem' --ANDwaiting=trueORDERBY ......
  • 数据库事务是什么?事务的四大特性是什么?
    数据库事务是什么?事务的四大特性是什么?1.数据库事务事务是一组原子性的SQL语句,或者说一个独立的工作单元。如果数据库引擎能够成功地对数据库应用该组操作的全部语句,那么就执行该组查询。如果其中任何一条语句因为崩溃或其他原因无法执行,那么所有的语句都不会执行。也就是说,......
  • MySQL Shell连接数据库报MySQL Error 1045 (28000)错误浅析
    这里简单总结一下mysqlshell访问数据库时报MySQLError1045(28000):Accessdeniedforuser'root'@'::1'(usingpassword:YES)的原因以及如何解决这个问题这里测试的环境为MySQL8.0.35,我们先来看看报错案例:$ mysqlsh -h localhost -P 7306 -u root -pPlease pr......
  • 数据库性能查看-查看MySQL数据库操作记录
    测试orm或者Django序列化器的时候,我需要知道他们都干了什么,这就需要打开MySQL的操作日志进入MySQL的客户端命令界面:showvariableslike'gen%';+------------------+---------------------------------+|Variable_name|Value|+----------......
  • 实例讲解数据库的定义重载函数
    本文分享自华为云社区《GaussDB数据库SQL系列-定义重载函数》,作者:Gauss松鼠会小助手2。一、前言在本文中,我们将介绍GaussDB数据库中的用户定义函数重载的概念、用法以及示例。用户定义函数是SQL中常用的“编程工具”,允许我们自定义函数来处理和操作数据。而函数重载则是指在......
  • 实例讲解数据库的定义重载函数
    本文分享自华为云社区《GaussDB数据库SQL系列-定义重载函数》,作者:Gauss松鼠会小助手2。一、前言在本文中,我们将介绍GaussDB数据库中的用户定义函数重载的概念、用法以及示例。用户定义函数是SQL中常用的“编程工具”,允许我们自定义函数来处理和操作数据。而函数重载则是指在一个......
  • .NET7 使用DbContext 连接SqlServer数据库
     ......