23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志和日常操作业务的日志,不允许任何动作(包含管理员)进行修改的强合规要求。
医疗行业和有些加密算法的行业是不是可以省掉物理的KEY,节约人工和偶尔忘带key的苦恼。不过对于DBA来说是不是又要有如果修改,徒增N多人工审批流程。便利性和安全性总是那么来回拉扯。
一、区块链表(Blockchain Table)的核心目标
1. 防内部篡改与特权滥用
- 不可变性:仅允许插入操作,禁止更新或删除(包括DBA权限)。
- 密码学验证链:通过哈希算法(如SHA2-512)将每行数据与前一行链接,任何篡改会破坏哈希链,支持快速验证数据完整性。
- 终端签名机制:支持用户用私钥签名插入的数据行,防止身份冒充(如"DBMS_BLOCKCHAIN_TABLE.VERIFY_ROWS")。
2. 企业级审计合规
- 表级摘要签名:定期生成加密摘要,可检测大规模回滚或未授权操作。
- 分布式事务支持:23ai版本新增跨区块链表事务能力,适配复杂业务流。
核心价值:为金融交易日志、医疗存证、供应链溯源等场景提供 集中式防篡改审计层。
二、业界同类产品对比
(1)数据库内置防篡改方案
产品 核心特性 与Oracle差异
SQL Server Ledger Tables 类似哈希链机制,支持只追加操作 缺少终端用户签名和分布式事务支持
PostgreSQL pg_verify 扩展插件实现数据哈希校验 非原生集成,性能和管理复杂度较高
(2)独立区块链平台
产品 主导方 适用场景 与Oracle定位差异
Hyperledger Fabric 是由Linux基金会 跨企业联盟链,特点是支持隐私通道,去中心化架构 vs Oracle中心化
蚂蚁链由蚂蚁集团 高并发商品溯源(10万+TPS),特点是公有链属性,数据透明性要求高
Oracle Blockchain Platform Oracle 混合云部署,与数据库深度集成 补充Oracle区块链表的多方协作场景
Oracle区块链表是 数据库原生方案,适合企业内部高敏数据防篡改;独立区块链平台(如Hyperledger)更适合跨组织信任协作。
三、功能验证
检查组件VALID状态
SYS@CDB$ROOT>
SELECT SUBSTR(comp_id,1,12) AS comp_id,
status,
SUBSTR(version,1,10) AS version,
SUBSTR(comp_name,1,40) AS comp_name
FROM dba_registry;COMP_ID STATUS VERSION COMP_NAME
__________ _____________ _____________ _____________________________________
CATALOG VALID 23.0.0.0.0 Oracle Database Catalog Views
CATPROC VALID 23.0.0.0.0 Oracle Database Packages and Types
RAC OPTION OFF 23.0.0.0.0 Oracle Real Application Clusters
JAVAVM VALID 23.0.0.0.0 JServer JAVA Virtual Machine
XML VALID 23.0.0.0.0 Oracle XDK
CATJAVA VALID 23.0.0.0.0 Oracle Database Java Packages
APS VALID 23.0.0.0.0 OLAP Analytic Workspace
XDB VALID 23.0.0.0.0 Oracle XML Database
OWM VALID 23.0.0.0.0 Oracle Workspace Manager
CONTEXT VALID 23.0.0.0.0 Oracle Text
XOQ VALID 23.0.0.0.0 Oracle OLAP API
SDO VALID 23.0.0.0.0 Spatial
OLS VALID 23.0.0.0.0 Oracle Label Security
DV VALID 23.0.0.0.0 Oracle Database Vault14 rows selected.
区块链表基础操作与防篡改验证
--需要授予权限,测试使用SYS权限足够:
CREATE BLOCKCHAIN TABLE
EXECUTE ON DBMS_BLOCKCHAIN_TABLE
GRANT EXECUTE ON SYS.DBMS_BLOCKCHAIN_TABLE TO PUBLIC;
GRANT DB_DEVELOPER_ROLE TO PUBLIC;
--关键参数-- 保留期阈值:
ALTER SYSTEM SET blockchain_table_retention_threshold = 16;
-- 启用缓存加速查询
ALTER SYSTEM SET true_cache_enabled = TRUE;-- 1. 创建区块链表(保留期最小16天)
CREATE BLOCKCHAIN TABLE bct_audit_logs (log_id NUMBER PRIMARY KEY,action_type VARCHAR2(50),user_name VARCHAR2(30),action_time TIMESTAMP DEFAULT SYSTIMESTAMP) NO DROP UNTIL 16 DAYS IDLENO DELETE UNTIL 16 DAYS AFTER INSERTHASHING USING SHA2_512 VERSION V1;-- 23ai支持列操作不影响哈希链SYS@CDB$ROOT> show pdbs;CON_ID CON_NAME OPEN MODE RESTRICTED
_________ ___________ _____________ _____________3 FREEPDB1 READ WRITE NO
SYS@CDB$ROOT> CREATE BLOCKCHAIN TABLE bct_audit_logs (log_id NUMBER PRIMARY KEY,action_type VARCHAR2(50),user_name VARCHAR2(30),action_time TIMESTAMP DEFAULT SYSTIMESTAMP) NO DROP UNTIL 16 DAYS IDLENO DELETE UNTIL 16 DAYS AFTER INSERTHASHING USING SHA2_512 VERSION V1;Blockchain TABLE created.SYS@CDB$ROOT> DESC bct_audit_logs;Name Null? Type
______________ ___________ _______________
LOG_ID NOT NULL NUMBER
ACTION_TYPE VARCHAR2(50)
USER_NAME VARCHAR2(30)
ACTION_TIME TIMESTAMP(6)
SYS@CDB$ROOT>
-- 2. 插入数据(仅允许插入)
INSERT INTO bct_audit_logs (log_id, action_type, user_name)
VALUES (1, 'LOGIN', 'ADMIN');
COMMIT;SYS@CDB$ROOT> INSERT INTO bct_audit_logs (log_id, action_type, user_name) VALUES (1, 'LOGIN', 'ADMIN');
1 row inserted.
SYS@CDB$ROOT> COMMIT;
Commit complete.
--检查程序包表DBMS_BLOCKCHAIN_TABLE
SELECT OBJECT_NAME
FROM ALL_OBJECTS
WHERE OWNER='SYS' AND OBJECT_NAME='DBMS_BLOCKCHAIN_TABLE';
OBJECT_NAME
________________________
DBMS_BLOCKCHAIN_TABLE
DBMS_BLOCKCHAIN_TABLE
--
info BCT_AUDIT_LOGS;
TABLE: BCT_AUDIT_LOGSLAST ANALYZED:ROWS :SAMPLE SIZE :INMEMORY :DISABLEDCOMMENTS :Columns
NAME DATA TYPE NULL DEFAULT COMMENTS
*LOG_ID NUMBER NoACTION_TYPE VARCHAR2(50 BYTE) YesUSER_NAME VARCHAR2(30 BYTE) YesACTION_TIME TIMESTAMP(6) Yes SYSTIMESTAMPIndexes
INDEX_NAME UNIQUENESS STATUS FUNCIDX_STATUS COLUMNS
__________________ _____________ _________ _________________ __________
SYS.SYS_C008603 UNIQUE VALID LOG_ID
验证blockchain table
-- 3. 尝试篡改(将报错失败)
UPDATE bct_audit_logs SET user_name = 'HACKER' WHERE log_id = 1;
-- SQL Error: ORA-05715: operation not allowed on the blockchain or immutable table
DELETE FROM bct_audit_logs;
-- SQL Error: ORA-05715: operation not allowed on the blockchain or immutable table-- 4. 验证数据完整性--
SET SERVEROUTPUT ON;
DECLAREl_verified_rows NUMBER;
BEGINDBMS_BLOCKCHAIN_TABLE.VERIFY_ROWS(schema_name => 'SYS', -- 表所属模式table_name => 'BCT_AUDIT_LOGS', number_of_rows_verified => l_verified_rows -- 返回已验证行数);DBMS_OUTPUT.PUT_LINE('校验完成!有效行数: ' || l_verified_rows);
EXCEPTIONWHEN OTHERS THENDBMS_OUTPUT.PUT_LINE('错误: ' || SQLERRM);
END;
/
--校验完成!有效行数: 3
PL/SQL procedure successfully completed.
--
SELECT blockchain FROM dba_tables WHERE table_name = 'BCT_AUDIT_LOGS';
分布式事务支持(跨区块链表操作)
-- 创建第二个区块链表
CREATE BLOCKCHAIN TABLE bct_order_history (order_id NUMBER PRIMARY KEY,item_name VARCHAR2(100)
)
NO DROP UNTIL 16 DAYS IDLENO DELETE UNTIL 16 DAYS AFTER INSERTHASHING USING SHA2_512 VERSION V1;
--Blockchain TABLE created.-- 跨表事务(23ai新增)-- -- 事务提交后两表数据同时生效
BEGININSERT INTO bct_audit_logs VALUES (3, 'ORDER', 'USER1', SYSTIMESTAMP);INSERT INTO bct_order_history VALUES (1001, 'Laptop');COMMIT;
END;
/
--
SYS@CDB$ROOT> BEGIN2 INSERT INTO bct_audit_logs VALUES (3, 'ORDER', 'USER1', SYSTIMESTAMP);3 INSERT INTO bct_order_history VALUES (1001, 'Laptop');4 COMMIT;5 END;6* /PL/SQL procedure successfully completed.
四、Oracle 23ai 增强场景实践建议
1. 敏感操作双重审计
- 为DBA操作启用区块链表+统一审计(23ai新增列级审计策略)。
2. 与True Cache集成
- 通过内存缓存(True Cache)加速区块链表查询,同时保持一致性。
3. 向量搜索辅助监控
- 利用23ai的AI Vector Search快速比对海量日志文件的哈希值。
- 维度 Oracle区块链表的价值
局限性及应对策略--实操下来有很多限制
文件篡改场景意义 可提供司法取证依据,但需结合系统层防护
数据库文件物理损坏---哈希链断裂导致全表验证失败 ---要结合RAID或分布式存储冗余备份
私钥泄露---攻击者可用合法身份插入恶意数据---使用HSM(硬件安全模块)保管私钥
全节点入侵(DBA权限) ----可绕过审计强制删除表 ---启用"NO DROP UNTIL n DAYS IDLE"锁定策略
区块链表是 应用层防篡改方案,不能替代系统层安全(如文件加密、入侵检测)。
其核心在于(是不是防君子不防小人):
- 为合规审计提供 密码学可验证的证据链;
- 显著提高 内部人作案的成本和风险。
核心防御内部人篡改、提供密码学可验证审计链。 集中式高敏数据保护 → 优先采用Oracle区块链表;
业界定位数据库原生防篡改方案,与独立区块链平台互补。跨组织分布式信任 → 结合Oracle Blockchain Platform或Hyperledger。
相关文章:

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...