暂无图片
请问如何写数据到分布式表中(oracle sharding)
我来答
分享
Asky
2023-02-20
请问如何写数据到分布式表中(oracle sharding)

1.首先创建表空间集
SQL> conn apptest/oracle
create tablespace set tps_set_test using template (datafile size 100m autoextend on next 10m maxsize unlimited extent management local segment space management auto);


2.创建表
alter session enable shard ddl;
create sharded table shard_test
(
custid varchar2(60) not null,
firstname varchar2(60),
lastname varchar2(60)
) tablespace set tps_set_test
partition by consistent hash (custid) partitions auto;


3.写入数据报错误

SQL> insert into shard_test(custid,firstname,lastname) values('aa','1','1');
insert into shard_test(custid,firstname,lastname) values('aa','1','1')
*
ERROR at line 1:
ORA-02683: inconsistent shard schema
ORA-02063: preceding line from ORA_SHARD_POOL@ORA_MULTI_TARGET

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
刘贵宾

给你个例子参考一下,在 Oracle Sharding 中写入数据到分布式表中需要进行以下步骤:

创建分布式表:使用 CREATE TABLE 命令创建分布式表,并指定分布键和分区键,示例如下:

CREATE TABLE sharded_table (
id NUMBER,
name VARCHAR2(50),
partition_key NUMBER
)
PARTITION BY RANGE (partition_key) (
PARTITION p1 VALUES LESS THAN (1000),
PARTITION p2 VALUES LESS THAN (MAXVALUE)
)
SHARDING BY HASH (id) (
TABLESPACE ts1,
TABLESPACE ts2,
TABLESPACE ts3
);
上述命令创建了一个名为 sharded_table 的分布式表,使用 id 列进行数据的哈希分片,使用 partition_key 列进行分区,将数据分散存储在三个表空间中。

连接到 Shard Coordinator 数据库:使用连接字符串和管理员凭据连接到 Shard Coordinator 数据库。

插入数据:使用 INSERT INTO 命令向分布式表中插入数据,示例如下:


INSERT INTO sharded_table (id, name, partition_key)
VALUES (1, 'John', 500);
上述命令向分布式表 sharded_table 中插入一条数据,该数据的 id 列为 1,name 列为 'John',partition_key 列为 500。

提交事务:在插入完所有数据后,使用 COMMIT 命令提交事务。

需要注意的是,向分布式表中插入数据时,Oracle Sharding 会根据分布键和分区键将数据自动分散到不同的 Shard 数据库中,因此不需要手动指定数据存储在哪个数据库中。

暂无图片 评论
暂无图片 有用 2
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
Oracle的ORA-01555:snapshot too old错误
回答 8
已采纳
导致这个错误的一个原因:提交得太过频繁。ORA01555与数据破坏或数据丢失毫无关系,它算得上是一个“安全”的错误,唯一的影响是:收到这个错误的查询无法继续处理。这个错误实际上很简单,只有三个原因:(
MySQL查询问题
回答 2
你看看你表结构现在还能看吗?
oracle密码长度支持20个字符吗?
回答 3
支持的,尽管搞,但不要使用@&,因为有时候涉及转义
应用做某些操作的时候,oracle服务器的磁盘就飙升到100%,导致应用卡慢,请问各位大神,有什么办法进行排查吗?
回答 2
哪些操作啊,抓到的sql放出来啊。
Oracle dmp导出可以根据where条件到导出吗?
回答 1
已采纳
执行导出的命令如下:expdp用户名/密码@服务名directoryexpdirparfileempmain.parempmain.par文件内容tablesempmaindumpfileempmai
Oracle 绑定变量会记录redo吗?
回答 1
已采纳
redo应该记录的都是实际的值。
各位大佬,请教个数据排序问题 现在的问题是:设备所在机柜的U位,如何实现3-6 与 8-11这中数据进行比较排序,然后按照这个规律排序
回答 1
你试试吧38改成0308这样行不行?
Oracle 查询条件里字段顺序一定要和索引相一致才调用索引么
回答 1
已采纳
这个“据说”是非常不靠谱的, 即便退回到20多年前的8版本,优化模式使用RBO, 字段顺序在where条件里面也是随便写的,都是能够正常使用索引的。
AWR分析报告问题求助:老师,您好。585v0k5xt580g的版本数达到4256个,绑定变量有4个,不过这个SQL操作的表近亿级别,问题,SQL的版本数这么多是怎么造成的,怎么解决
回答 5
这个高版本的SQL问题,不是这个AWR报告的主要问题。这个SQL的执行次数为空,不是没有执行完成,而是当版本高于200时,数据库不再统计执行次数,避免过大的资源消耗。针对你的问题,这个SQL的版本数高
oracle如何查看一个命令的参数??
回答 2
showparameter参数名