暂无图片
请问如何写数据到分布式表中(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
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏