需求:測試建表和插入數據是否會根據分布列進行自動分發。
驗證方法: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