暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 23c新特性——区块链表

原创 刘贵宾 2023-12-19
686

Oracle 数据库 23c


区块链表

区块链和不可变表(自 Oracle Database 19c 起可用)可使用加密安全方法保护数据,防止数据被外部黑客和内部恶意/泄露账户篡改或删除。它能够通过仅插入限制来防止非授权更新或删除(即使是 DBA 操作),利用加密哈希链实施身份验证,基于签名表摘要检测任何大规模回滚,支持最终用户使用私钥对插入的行进行签名。时至今日,Oracle Database 23c 带来了丰富的增强功能,包括逻辑复制(基于 Oracle GoldenGate)和滚动升级(基于 Oracle Active Data Guard)支持;分布式事务(涉及区块链表)支持;高效、基于分区的批量删除(适用于过期的行);以及插入/提交性能优化。

Oracle Database 23c 还支持添加/删除列(不影响加密哈希链、用户特定链和关于筛选行的表摘要)、委托签名功能和数据库反签名;还使用 Oracle Flashback 和区块链历史表审计非区块链表历史变更,将加密安全数据管理扩展到了常规表。

这些功能尤其适合内置审计迹或日志使用场景,能够有效满足财务分类账、付款历史、监管合规性跟踪、法律日志和所有表示资产的数据的保护需求,防止非授权篡改和删除操作导致重大法律、商誉或财务损失。


以下是一个 Oracle23c 新特性区块链表的示例:


CREATE TABLE blockchain_table (
  id NUMBER(10) NOT NULL,
  block_number NUMBER(10) NOT NULL,
  block_hash VARCHAR2(255) NOT NULL,
  transaction_id VARCHAR2(255) NOT NULL,
  transaction_data VARCHAR2(4000) NOT NULL,
  timestamp TIMESTAMP NOT NULL,
  PRIMARY KEY (id)
);


该表具有以下列:

  • id:区块链表中的唯一标识符。
  • block_number:区块链中的块编号。
  • block_hash:区块链中的块哈希值。
  • transaction_id:区块链中的交易编号。
  • transaction_data:区块链中的交易数据。
  • timestamp:区块链中的交易时间戳。

该表使用了 blockchain_table_seq 序列来生成 id 列的值。


插入数据:

INSERT INTO blockchain_table (
  id,
  block_number,
  block_hash,
  transaction_id,
  transaction_data,
  timestamp
) VALUES (
  1,
  1,
  '0000000000000000000000000000000000000000',
  '1234567890',
  '{"data": "This is a transaction."}',
  SYSTIMESTAMP
);


查询数据:


SELECT
  id,
  block_number,
  block_hash,
  transaction_id,
  transaction_data,
  timestamp
FROM
  blockchain_table
WHERE
  block_number = 1;

该查询将返回第一个块中的所有交易数据。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论