20-Oracle 23 ai free Database Sharding-特性验证

对于Oracle 23ai Sharding 新特性的验证脚本,目标是涵盖其核心改进和新增功能。基于 Oracle 23ai 的 Sharding 特性总结(Raft 协议、True Cache、Vector等),结合常见场景验证。
通过SQL脚本验证这些特性。例如:
  • 1.基于Raft协议的分布式Sharding:需要创建分片表,并模拟跨节点的数据分布和故障切换。
  • 2.True Cache集成:需要启用缓存并查询缓存命中情况。
  • 3.自动化分片管理:需要动态添加分片并观察数据重新分布。
  • 4.JSON与关系模型的统一分片:创建包含JSON类型的分片表,并插入数据验证分片策略。
  • 5.AI Vector Search:可能需要使用向量存储并执行相似性搜索。
也许Oracle在MAA 架构领域太过强大的缘故,导致它的分布式raft实现没有其他分布式产品宣传的那么多,那么强。
大多数的企业是否真得需要一个分布式数据库,那就是另外一个话题了。
由于Oracle 23 ai free目前的版本,能测的Sharding特性不是很多,这个坑需要在OP版本发布后再填上。

1. 验证基于 Raft 协议的分布式 Sharding 

验证:创建分片表并模拟跨节点故障切换。
-- 1. 创建分片表(假设使用 Raft 协议)CREATE TABLE employees_shard (employee_id NUMBER PRIMARY KEY,name VARCHAR2(100),department_id NUMBER
)
PARTITION BY HASH (employee_id)
PARTITIONS 4;-- 2. 插入测试数据INSERT INTO employees_shard VALUES (1, 'Alice', 10);
INSERT INTO employees_shard VALUES (2, 'Bob', 20);
INSERT INTO employees_shard VALUES (3, 'Charlie', 30);-- 3. 查询分片分布(需启用 Raft 协议相关视图),free不存在视图
--SELECT * FROM v$sharding_nodes;
--SELECT * FROM v$sharding_partition_map WHERE table_name = 'EMPLOYEES_SHARD';-- 4. 模拟故障切换(需关闭一个分片节点)
-- 假设分片节点 1 故障,Oracle 23ai 会自动切换到其他节点
-- 验证数据一致性SELECT * FROM employees_shard;
SYS@CDB$ROOT> SELECT * FROM employees_shard;EMPLOYEE_ID NAME          DEPARTMENT_ID
______________ __________ ________________2 Bob                      201 Alice                    103 Charlie                  30SYS@CDB$ROOT>

2. 验证 True Cache 与 Sharding 集成

验证:启用 True Cache 并观察缓存命中率,free不存在视图
-- 1. 启用 True Cache(需先安装并配置多个HOST)
ALTER SYSTEM SET TRUE_CACHE_ENABLED = TRUE SCOPE=BOTH;-- 2. 创建分片表并插入数据CREATE TABLE sales_shard (sale_id NUMBER PRIMARY KEY,product_id NUMBER,amount NUMBER
)
PARTITION BY RANGE (sale_id) (PARTITION p1 VALUES LESS THAN (100),PARTITION p2 VALUES LESS THAN (200)
);
Table SALES_SHARD created.
INSERT INTO sales_shard VALUES (1, 101, 1000);
INSERT INTO sales_shard VALUES (101, 102, 2000);
1 row inserted.
1 row inserted.
-- 3. 查询数据并触发缓存
SYS@CDB$ROOT> SELECT * FROM sales_shard WHERE sale_id = 101;SALE_ID    PRODUCT_ID    AMOUNT
__________ _____________ _________101           102      2000
-- 4. 查看 True Cache 命中率,free不存在视图
--SELECT * FROM v$true_cache_hit_ratio;

3. 验证 自动化分片管理--整体报错,无法验证

验证:动态扩缩容并观察数据自动平衡。
-- 1. 创建分片表(假设支持自动化管理)--LIST分区报错CREATE TABLE customer_data (customer_id NUMBER PRIMARY KEY,name VARCHAR2(100),region VARCHAR2(50)
)
PARTITION BY LIST (region) (PARTITION p_east VALUES IN ('East'),PARTITION p_west VALUES IN ('West')
);-- 2. 插入数据INSERT INTO customer_data VALUES (1, 'John', 'East');
INSERT INTO customer_data VALUES (2, 'Jane', 'West');-- 3. 动态添加分片(AI 自动平衡数据)ALTER TABLE customer_data ADD PARTITION p_north VALUES IN ('North');-- 4. 验证数据分布(AI 自动迁移数据)SELECT * FROM dba_part_partitions WHERE table_name = 'CUSTOMER_DATA';

4. 验证 JSON 与关系模型的统一分片

验证:创建 JSON 分片表并查询数据。
-- 1. 创建 JSON 分片表CREATE TABLE user_logs (user_id NUMBER PRIMARY KEY,log_data JSON
)
PARTITION BY HASH (user_id)
PARTITIONS 2;
Table USER_LOGS created.
-- 2. 插入 JSON 数据INSERT INTO user_logs VALUES (1,JSON_OBJECT('event' VALUE 'login', 'timestamp' VALUE SYSTIMESTAMP)
);
1 row inserted.
-- 3. 查询 JSON 数据(分片内查询)SELECT user_id, log_data FROM user_logs WHERE user_id = 1;
SYS@FREE> SELECT user_id, log_data FROM user_logs WHERE user_id = 1;USER_ID LOG_DATA
---------- --------------------------------------------------------------------------------1 {"event":"login","timestamp":"2025-06-08T19:34:47.636391+08:00"}-- 4. 验证分片分布
SELECT * FROM dba_part_tables WHERE table_name = 'USER_LOGS';
SYS@CDB$ROOT> SELECT * FROM dba_part_tables WHERE table_name = 'USER_LOGS';OWNER    TABLE_NAME    PARTITIONING_TYPE    SUBPARTITIONING_TYPE       PARTITION_COUNT    DEF_SUBPARTITION_COUNT    PARTITIONING_KEY_COUNT    SUBPARTITIONING_KEY_COUNT STATUS    DEF_TABLESPACE_NAME       DEF_PCT_FREE    DEF_PCT_USED    DEF_INI_TRANS    DEF_MAX_TRANS DEF_INITIAL_EXTENT    DEF_NEXT_EXTENT    DEF_MIN_EXTENTS    DEF_MAX_EXTENTS    DEF_MAX_SIZE    DEF_PCT_INCREASE       DEF_FREELISTS    DEF_FREELIST_GROUPS DEF_LOGGING    DEF_COMPRESSION    DEF_COMPRESS_FOR    DEF_BUFFER_POOL    DEF_FLASH_CACHE    DEF_CELL_FLASH_CACHE    REF_PTN_CONSTRAINT_NAME    INTERVAL    AUTOLIST    INTERVAL_SUBPARTITION    AUTOLIST_SUBPARTITION    IS_NESTED    DEF_SEGMENT_CREATION    DEF_INDEXING    DEF_INMEMORY    DEF_INMEMORY_PRIORITY    DEF_INMEMORY_DISTRIBUTE    DEF_INMEMORY_COMPRESSION    DEF_INMEMORY_DUPLICATE    DEF_READ_ONLY    DEF_CELLMEMORY    DEF_INMEMORY_SERVICE    DEF_INMEMORY_SERVICE_NAME    AUTO
________ _____________ ____________________ _______________________ __________________ _________________________ _________________________ ____________________________ _________ ______________________ _______________ _______________ ________________ ________________ _____________________ __________________ __________________ __________________ _______________ ___________________ ________________ ______________________ ______________ __________________ ___________________ __________________ __________________ _______________________ __________________________ ___________ ___________ ________________________ ________________________ ____________ _______________________ _______________ _______________ ________________________ __________________________ ___________________________ _________________________ ________________ _________________ _______________________ ____________________________ _______
SYS      USER_LOGS     HASH                 NONE                                     2                         0                         1                            0 VALID     SYSTEM                              10              40                1              255 DEFAULT               DEFAULT            DEFAULT            DEFAULT            DEFAULT         DEFAULT                            0                      0 NONE           NONE                                   DEFAULT            DEFAULT            DEFAULT                                                        NO                                   NO                       NO           NONE                    ON              NONE                                                                                                                      NO                                                                                      NOSYS@CDB$ROOT>

5. 验证 AI Vector Search 与分片集成

验证:存储向量数据并执行相似性搜索。
-- 1. 创建向量分片表(假设支持 AI Vector Search)CREATE TABLE image_vectors (image_id NUMBER PRIMARY KEY,features VECTOR(128) -- 假设向量维度为 128
)
PARTITION BY HASH (image_id)
PARTITIONS 3;
--Table IMAGE_VECTORS created.
-- 2. 插入向量数据(示例)--INSERT INTO image_vectors VALUES (1, VECTOR(1, 2, 3,128));
--INSERT INTO image_vectors VALUES (2, VECTOR(4, 5, 6, ..., 128));-- 3. 执行相似性搜索(跨分片)--错误
--SELECT * FROM image_vectors WHERE SIMILARITY(features, VECTOR(1, 2, 3, 128)) > 0.8;-- 4. 验证分片内的向量索引
SELECT * FROM dba_part_indexes WHERE table_name = 'IMAGE_VECTORS';
SYS@CDB$ROOT> SELECT * FROM dba_part_indexes WHERE table_name = 'IMAGE_VECTORS';OWNER    INDEX_NAME                  TABLE_NAME       PARTITIONING_TYPE    SUBPARTITIONING_TYPE       PARTITION_COUNT    DEF_SUBPARTITION_COUNT    PARTITIONING_KEY_COUNT    SUBPARTITIONING_KEY_COUNT LOCALITY    ALIGNMENT       DEF_TABLESPACE_NAME       DEF_PCT_FREE    DEF_INI_TRANS    DEF_MAX_TRANS DEF_INITIAL_EXTENT    DEF_NEXT_EXTENT    DEF_MIN_EXTENTS    DEF_MAX_EXTENTS    DEF_MAX_SIZE    DEF_PCT_INCREASE       DEF_FREELISTS    DEF_FREELIST_GROUPS DEF_LOGGING    DEF_BUFFER_POOL    DEF_FLASH_CACHE    DEF_CELL_FLASH_CACHE    DEF_PARAMETERS    INTERVAL    AUTOLIST    INTERVAL_SUBPARTITION    AUTOLIST_SUBPARTITION
________ ___________________________ ________________ ____________________ _______________________ __________________ _________________________ _________________________ ____________________________ ___________ _______________ ______________________ _______________ ________________ ________________ _____________________ __________________ __________________ __________________ _______________ ___________________ ________________ ______________________ ______________ __________________ __________________ _______________________ _________________ ___________ ___________ ________________________ ________________________
SYS      SYS_IL0000076364C00002$$    IMAGE_VECTORS    HASH                 NONE                                     3                         0                         1                            0 LOCAL       NON_PREFIXED                                        10                1              255 DEFAULT               DEFAULT            DEFAULT            DEFAULT            DEFAULT         DEFAULT                            0                      0 NONE           DEFAULT            DEFAULT            DEFAULT                                               NO                                   NOSYS@CDB$ROOT>

6. 验证 Shrink Tablespace 与分片存储优化

验证:收缩分片表的表空间。ORA-14809
-- 1. 创建分片表并插入数据CREATE TABLE logs_shard (log_id NUMBER PRIMARY KEY,message VARCHAR2(4000)
)
PARTITION BY RANGE (log_id) (PARTITION p1 VALUES LESS THAN (100),PARTITION p2 VALUES LESS THAN (200)
);
Table LOGS_SHARD created.
INSERT INTO logs_shard SELECT ROWNUM, 'Test log' FROM dual CONNECT BY ROWNUM <= 150;
150 rows inserted.
-- 2. 收缩表空间(回收未使用空间)ALTER TABLE logs_shard MOVE PARTITION p1 ONLINE;
--ORA-14809: schema does not support ONLINE MOVE PARTITION
ALTER TABLESPACE users COALESCE;
TABLESPACE USERS altered.
-- 3. 验证表空间大小SELECT segment_name, bytes/1024/1024 AS size_mb FROM dba_segments WHERE tablespace_name = 'USERS';
--no rows selected

7. 验证 Schema Annotations 与分片元数据

验证:为分片表添加注释并查询。报错
-- 1. 创建分片表CREATE TABLE products_shard (product_id NUMBER PRIMARY KEY,name VARCHAR2(100)
)
PARTITION BY HASH (product_id)
PARTITIONS 2;
Table PRODUCTS_SHARD created.
-- 2. 添加表级注释ALTER TABLE products_shard ANNOTATIONS (ADD Title 'Product Data');
SYS@CDB$ROOT> ALTER TABLE products_shard ANNOTATIONS (ADD Title 'Product Data');Table PRODUCTS_SHARD altered.-- 3. 查询注释
SELECT * FROM user_annotations_usage WHERE object_type = 'TABLE' AND column_name IS NULL;
SYS@CDB$ROOT> SELECT * FROM user_annotations_usage WHERE object_type = 'TABLE' AND column_name IS NULL;OBJECT_NAME       OBJECT_TYPE    COLUMN_NAME    DOMAIN_NAME    DOMAIN_OWNER    ANNOTATION_NAME    ANNOTATION_VALUE
_________________ ______________ ______________ ______________ _______________ __________________ ___________________
PRODUCTS_SHARD    TABLE                                                        TITLE              Product Data
-- 4. 添加列级注释,语法错误
ALTER TABLE products_shard ANNOTATIONS (ADD COLUMN (name) Description 'Product Name');
ORA-11548: missing or invalid annotation name 'COLUMN' in the ANNOTATIONS sequence
-- 5. 查询列级注释
SELECT * FROM user_annotations_usage WHERE object_type = 'TABLE' AND column_name IS NOT NULL;
SYS@CDB$ROOT> SELECT * FROM user_annotations_usage WHERE object_type = 'TABLE' AND column_name IS NOT NULL;no rows selected

 8. 验证 IF [NOT] EXISTS 语法在 Sharding 中的兼容性

验证:IF [NOT] EXISTS
-- 1. 创建分片表(验证if exists忽略已存在错误)CREATE TABLE IF NOT EXISTS employees_shard (employee_id NUMBER PRIMARY KEY,name VARCHAR2(100)
)
PARTITION BY HASH (employee_id)
PARTITIONS 4;
Table EMPLOYEES_SHARD created.
-- 2. 重复执行上述语句(无错误)
SYS@CDB$ROOT> CREATE TABLE IF NOT EXISTS employees_shard (2      employee_id NUMBER PRIMARY KEY,3      name VARCHAR2(100)4  )5  PARTITION BY HASH (employee_id)6* PARTITIONS 4;Table EMPLOYEES_SHARD created.-- 3. 删除表并验证 IF EXISTS 子句
DROP TABLE IF EXISTS employees_shard;
SYS@CDB$ROOT> DROP TABLE IF EXISTS employees_shard;Table EMPLOYEES_SHARD dropped.

9. 向量索引加速

验证:向量索引,分片表查询优化报错

-- 向量索引加速
CREATE VECTOR INDEX doc_vec_idx ON document_vectors (doc_vector)ORGANIZATION INMEMORY NEIGHBOR GRAPH;
SYS@CDB$ROOT> CREATE VECTOR INDEX doc_vec_idx ON document_vectors (doc_vector)2*   ORGANIZATION INMEMORY NEIGHBOR GRAPH;Vector INDEX created.-- 分片表查询优化
SELECT /*+ SHARD_MIN_MAX */ * 
FROM document_vectors 
WHERE doc_id BETWEEN 100 AND 1000;
Error report -
ORA-17001: Internal error: Unknown or unimplemented accessor type: 127
https://docs.oracle.com/error-help/db/ora-17001/

TIPS:

  • 1.环境要求:确保 Oracle 23ai 已启用 Sharding 和相关特性(如 Raft 协议、True Cache)。
  • 2.权限:部分操作需要 DBA 或 ADMINISTER DATABASE TRIGGER 权限。
  • 3.验证工具: v$sharding_nodes、dba_part_partitions 等视图监控分片状态,free不存在。
  • 4.AI 功能依赖:AI Vector Search 和自动化分片管理需依赖 Oracle 23ai 的机器学习组件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/84031.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

✅ 常用 Java HTTP 客户端汇总及使用示例

在 Java 开发中,HTTP 客户端是与服务端交互的关键组件。随着技术发展,出现了多种 HTTP 客户端库,本文汇总了常用的 Java HTTP 客户端,介绍其特点、适用场景,并附上简单使用示例,方便开发者快速选择和上手。 1.常用 HTTP 客户端一览 名称简介特点HttpClient(JDK 自带)Ja…

MCP(Model Context Protocol)与提示词撰写

随着大模型&#xff08;LLM&#xff09;在复杂任务中的普及&#xff0c;如何让模型高效调用外部工具和数据成为关键挑战。传统函数调用&#xff08;Function Calling&#xff09;依赖开发者手动封装 API&#xff0c;而 MCP&#xff08;Model Context Protocol&#xff09; 通过…

RootSIFT的目标定位,opencvsharp。

首先截取匹配模板&#xff0c;然后使用rootsift特征匹配&#xff0c;最后定位目标。 对于微弱变化&#xff0c;还是能够识别定位的&#xff0c;对于传统算法来说已经不错了。 目标定位效果&#xff1a; 使用的模板图片。 using OpenCvSharp; using OpenCvSharp.Features2D;u…

Appium如何支持ios真机测试

ios模拟器上UI自动化测试 以appiumwebdriverio为例&#xff0c;详细介绍如何在模拟器上安装和测试app。在使用ios模拟器前&#xff0c;需要安装xcode&#xff0c;创建和启动一个simulator。simulator创建好后&#xff0c;就可以使用xcrun simctl命令安装被测应用并开始测试了。…

近几年字节飞书测开部分面试题整理

文章目录 一、面试问题1. 创建索引2. 拦截器&#xff08;Interceptor&#xff09;和过滤器&#xff08;Filter&#xff09;的区别3. 为什么jwt令牌代替session&#xff1f;4. 有一个100行的数据&#xff0c;和一个1万行的数据&#xff0c;写sql 的时候要注意什么&#xff1f;5.…

JDBC基础关键_001_认识

目 录 一、概述 二、原理 三、接口的作用 四、JDBC 模拟 1.JDBC 接口 2.驱动 3.配置文件 4.调用者 一、概述 JDBC&#xff08;Java DataBase Connectivity&#xff09;&#xff0c;Java 数据库连接&#xff1b;是用 Java 语言操作数据库&#xff0c;使用 Java 语言向数…

SWAN(Scade One) 语言原理介绍

SCADE 团队于2024年推出了下一代 SCADE 工具 Scade One&#xff0c;工具的建模语言也基于Scade 6 进行了演化。在语言命名方面&#xff0c;并没有复用"Scade"这一标志性的名称&#xff0c;而是使用了新的名字&#xff1a;Swan。在本篇中&#xff0c;将叙述 Swan 语言…

【工具教程】多个条形码识别用条码内容对图片重命名,批量PDF条形码识别后用条码内容批量改名,使用教程及注意事项

一、条形码识别改名使用教程 打开软件并选择处理模式&#xff1a;打开软件后&#xff0c;根据要处理的文件类型&#xff0c;选择 “图片识别模式” 或 “PDF 识别模式”。如果是处理包含条形码的 PDF 文件&#xff0c;就选择 “PDF 识别模式”&#xff1b;若是处理图片文件&…

sql中group by使用场景

GROUP BY语句在SQL中用于将多个记录分组为较小的记录集合&#xff0c;以便对每个组执行聚合函数&#xff0c;如COUNT(), MAX(), MIN(), SUM(), AVG()等。GROUP BY的使用场景非常广泛&#xff0c;以下是一些典型的应用场景&#xff1a; 统计数量 当你想要计算某个字段的唯一值数…

MongoDB慢查询临时开启方法讲解

1、首先连接数据库 mongosh "mongodb://localhost:27017" 2、选择目标数据库 show databases;#显示所有数据库 use lidb;#使用某数据库 3、查看当前分析级别 db.getProfilingStatus() 输出 { was: 0, slowms: 100, sampleRate: 1, ok: 1 } #was0表示关闭&…

UML活动图与泳道图

活动图的作用&#xff0c;与用例图类似&#xff0c;也是帮助我们捕获用户的需求。 活动图主要是用来描述用户的业务流程&#xff0c;如果能把用户的这个业务流程描述的很清楚的话&#xff0c;就可以帮助我们做用例分析。 1 活动图定义 活动图描述了在一个过程中&#xff0c;…

算法练习-回溯

今天给大家带来的是在dfs查用的降低复杂度的方法---剪枝 所谓减枝 第一题 代码部分&#xff1a;&#xff08;未剪枝&#xff09; 代码部分&#xff08;剪枝&#xff09; 第二题 代码部分&#xff08;未剪枝&#xff09; 剪枝后 通过这些题目可以看出如果没有进行剪枝操作&#…

Elasticsearch + Milvus 构建高效知识库问答系统《一》

&#x1f50d; Elasticsearch Milvus 构建高效知识库问答系统&#xff08;RAG 技术实战&#xff09; &#x1f4cc; 目录 背景介绍Elasticsearch 在知识库检索中的作用Milvus 在知识库检索中的作用混合检索&#xff1a;Elasticsearch Milvus完整代码实现部署建议与优化方向…

10万QPS高并发请求,如何防止重复下单

1. 前端拦截 首先因为是10万QPS的高并发请求&#xff0c;我们要保护好系统&#xff0c;那就是尽可能减少用户无效请求。 1.1 按钮置灰 很多用户抢票、抢购、抢红包等时候&#xff0c;为了提高抢中的概率&#xff0c;都是疯狂点击按钮。会触发多次请求&#xff0c;导致重复下…

基于单片机的病房呼叫系统(源码+仿真)

该系统由以 STM32F4 为平台的监控终端以及以 CC2530 为平台的无线传感网组成。系统上电后自动完成 ZigBee 网络的组建、终端节点的加入&#xff0c;病人可利用便携式的病人终端发出呼叫求助请求信息、节点在线信息以及对护士的服务评价信息等&#xff0c;这些信息通过路由节点发…

使用WebSocket实时获取印度股票数据源(无调用次数限制)实战

使用WebSocket实时获取印度股票数据源&#xff08;无调用次数限制&#xff09;实战 一、前置准备 1. 获取API密钥 登录 StockTV开发者平台 → 联系客服获取测试Key&#xff08;格式MY4b781f618e3f43c4b055f25fa61941ad&#xff09;&#xff0c;该密钥无调用次数限制且支持实时…

kafka消息积压排查

kafka监控搭建&#xff1a;https://insights.blog.csdn.net/article/details/139129552?spm1001.2101.3001.6650.1&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7Ebaidujs_baidulandingword%7EPaidSort-1-139129552-blog-132216491.235%5Ev43%5Econtrol…

Matlab回归预测大合集又更新啦!新增2种高斯过程回归预测模型,已更新41个模型!性价比拉满!

Matlab回归预测大合集又更新啦&#xff01;新增2种高斯过程回归预测模型&#xff0c;已更新41个模型&#xff01;性价比拉满&#xff01; 目录 Matlab回归预测大合集又更新啦&#xff01;新增2种高斯过程回归预测模型&#xff0c;已更新41个模型&#xff01;性价比拉满&#xf…

6套bootstrap后台管理界面源码

后端管理系统是指一种用于管理和监控网站、应用程序或系统的后台管理界面。它通常由一组后端代码和数据库组成&#xff0c;用于处理和存储数据&#xff0c;提供给前端用户界面展示和操作数据。 后端管理系统的功能和特点可以包括&#xff1a; 用户权限管理&#xff1a;可以设…

JavaScript性能优化实战:从核心原理到工程实践的全流程解析

下面我给出一个较为系统和深入的解析&#xff0c;帮助你理解和实践“JavaScript 性能优化实战&#xff1a;从核心原理到工程实践的全流程解析”。下面的内容不仅解释了底层原理&#xff0c;也结合实际工程中的最佳模式和工具&#xff0c;帮助你在项目中贯彻性能优化理念&#x…