love wife love life —Roger的Oracle/MySQL数据恢复博客

Phone:18180207355 提供专业Oracle/MySQL数据恢复、性能优化、迁移升级、紧急救援等服务

关于Oracle Blockchain Table的一点知识

本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger的Oracle/MySQL数据恢复博客

本文链接地址: 关于Oracle Blockchain Table的一点知识

今年发布的Oracle Database 20c版本中引入了很多Niubility的功能;其中对于区块链的支持无疑是非常好的;这算是安全方面的一个增强吧;首先我们来看看具体情况:

可以看到一定定义好之后,在规定的policy 时间范围内,是不允许进行一些操作的,比如delete和drop。那么Oracle如何实现区块链table机制呢? 这里我们来稍微深入研究一下:

这里插入的2行数据分布在上面block中;我们来dump 该数据块看看情况;

从结构上来看其实跟普通data block没有任何区别;其中唯一的不同点是:我这个表明明是2个列;dump为什么显示一共有8个列呢?另外6个列是什么呢 ?

要回答这个问题,非常easy;你可以查询官方文档或者10046 event跟踪一下即可;我个人喜欢研究,因此跟踪一下看看吧:

上述信息较多,但是关键点其实没多少;大致上我们可以看出Oracle 其实是通过在表上创建隐藏列来实现;这部分隐藏列的数据正常情况下是Oracle自动计算产生的,其中还有相关hash值;通过此种方法防止数据被篡改。

而关于该字典表Oracle其实也是定义为了sharding table:

当然关于区块链表还有一些约束条件和限制;大家请看官方文档即可。

这里我比较好奇的是;如果区块链table出现坏块了,怎么办?处理方法跟之前的手段一样吗?这里我人为模拟一下:

可以看到这种跳过坏块的方法仍然可用;同时我们进一步通过bbed 工具来查看一下block结构和数据:

不难看出,本质上来讲没有太大的区别;也就多了隐藏列而已;列的数据是Oracle自动计算的。对于实际的数据存储格式,跟以前完全一样。如下是关于区块链table相关的几个参数:

总的来讲比较简单;欢迎大家测试并进行分享!

 

Leave a Reply

You must be logged in to post a comment.