需求:测试建表和插入数据是否会根据分布列进行自动分发。
验证方法:1)准备基础环境:创建用户和表空间。2)创建数据分布测试表,并插入数据。3)查询指定分区数据,验证数据分布情况。
一、准备基础环境:创建用户和表空间
步骤1: 登陆SP节点,创建RAFT_1和RAFT_2混合表空间,未指定具体路径,数据文件创建于默认实例初始化data路径下。
SQL> create tablespace ts_dpc_data_raft_1 datafile 'TS_DPC_DATA01.DBF' size 128 autoextend on next 32 with huge path 'HTS_DPC_DATA01.DBF' storage (on RAFT_1);
SQL> create tablespace ts_dpc_data_raft_2 datafile 'TS_DPC_DATA01.DBF' size 128 autoextend on next 32 with huge path 'HTS_DPC_DATA01.DBF' storage (on RAFT_2);
步骤2: 创建表空间组,并添加指定表空间。
SQL> SP_TS_GROUP_CREATE('TS_BG_1','BG_1 tablespace group');
SQL> SP_TS_GROUP_ADD_TS('TS_BG_1','TS_DPC_DATA_RAFT_1');
SQL> SP_TS_GROUP_ADD_TS('TS_BG_1','TS_DPC_DATA_RAFT_2');
步骤3: 创建用户,并指定默认表空间。
SQL> CREATE USER U_DPC IDENTIFIED BY Ah_SYSDBA_2025 DEFAULT TABLESPACE GROUP TS_BG_1;
SQL> grant dba to U_DPC;
二、创建数据分布测试表,并插入数据。
步骤1: 使用创建的U_DPC用户登陆SP节点,创建USERS1表,hash分布,分布键id,分区个数2个。
$ disql U_DPC:1630
SQL> create table USERS1 (id number primary key, name varchar2(50), age number) partition by hash(id) partitions 2;
步骤2: 并插入数据。
SQL> insert into USERS1 (id, name, age) values (1, '张三', 25);
SQL> insert into USERS1 (id, name, age) values (2, '李四', 30);
SQL> insert into USERS1 (id, name, age) values (3, '王2', 30);
SQL> insert into USERS1 (id, name, age) values (4, '李5', 30);
三、查询指定分区数据,验证数据分布情况。可以看到数据按照ID落在了不同分区和表空间。
步骤1: 查询USERS1表的分区信息,分区指定了不同表空间。
SQL> select TABLE_OWNER,TABLE_NAME,PARTITION_NAME,TABLESPACE_NAME from SYS.DBA_TAB_PARTITIONS where TABLE_OWNER='U_DPC';
步骤2: 查询分区DMHASHPART0数据。
SQL> select * from USERS1 partition(DMHASHPART0);
步骤3: 查询分区DMHASHPART1数据。
SQL> select * from USERS1 partition(DMHASHPART1);
达梦在线服务平台 https://eco.dameng.com