首页 > 其他分享 >分区表新增分区测试

分区表新增分区测试

时间:2023-01-16 19:01:02浏览次数:36  
标签:INDEX 00 MAX 分区 PARTITION PART 分区表 测试

1.无MAX分区且非自动分区且全部分区索引

1.1.环境准备

--建表
CREATE TABLE MONKEY.TEST_PART_NULL_NORMAL
(
   ID         NUMBER,
   STU_NAME VARCHAR2(100),
   STU_AGE NUMBER,
   ADD_DATE   DATE
)
PARTITION BY RANGE (ADD_DATE)
   (
   PARTITION DCS_P202211 VALUES LESS THAN (TO_DATE (' 2022-12-01 00:00:00','SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
   PARTITION DCS_P202212 VALUES LESS THAN (TO_DATE (' 2023-01-01 00:00:00','SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
   PARTITION DCS_P202301 VALUES LESS THAN (TO_DATE (' 2023-02-01 00:00:00','SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
   ) ENABLE ROW MOVEMENT;
   
--建索引
create unique index monkey.TEST_PART_NULL_NORMAL_id on monkey.TEST_PART_NULL_NORMAL(id,add_date) local;

create index monkey.TEST_PART_NULL_NORMAL_name on monkey.TEST_PART_NULL_NORMAL(stu_name) local;

create index monkey.TEST_PART_NULL_NORMAL_union on monkey.TEST_PART_NULL_NORMAL(stu_age,stu_name) local;

--插几条测试数据
INSERT INTO MONKEY.TEST_PART_NULL_NORMAL VALUES (1,'AA',20,TO_DATE('20221102080000','YYYYMMDDHH24MISS'));

INSERT INTO MONKEY.TEST_PART_NULL_NORMAL VALUES (2,'BB',20,TO_DATE('20221202080000','YYYYMMDDHH24MISS'));

INSERT INTO MONKEY.TEST_PART_NULL_NORMAL VALUES (3,'CC',20,TO_DATE('20230102080000','YYYYMMDDHH24MISS'));

1.2.结论

  • 无MAX分区情况下,插入大于最大分区值时报错

    INSERT INTO MONKEY.TEST_PART_NULL_NORMAL VALUES (4,'DD',20,TO_DATE('20230202080000','YYYYMMDDHH24MISS'));
    

  • 增加分区,分区和原来表空间相同,分区索引不会失效

    ALTER TABLE  MONKEY.TEST_PART_NULL_NORMAL ADD PARTITION DCS_P202302 VALUES LESS THAN (TO_DATE (' 2023-03-01 00:00:00','SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'));
    
  • 增加分区,分区和原来表空间不同,分区索引不会失效

    ALTER TABLE  MONKEY.TEST_PART_NULL_NORMAL ADD PARTITION DCS_P202302  VALUES LESS THAN (TO_DATE (' 2023-03-01 00:00:00','SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) TABLESPACE MYTBS;
    
  • MOVE非空分区,分区索引失效

    ALTER TABLE MONKEY.TEST_PART_NULL_NORMAL MOVE PARTITION DCS_P202301 TABLESPACE MYTBS;
    
  • MOVE空分区,分区索引不失效

    ALTER TABLE MONKEY.TEST_PART_NULL_NORMAL MOVE PARTITION DCS_P202302 TABLESPACE MYTBS;
    
  • 删除非空分区或者空分区,分区索引都不失效

    ALTER TABLE MONKEY.TEST_PART_NULL_NORMAL DROP PARTITION DCS_P202302;
    

2.有MAX分区且非自动分区且全部分区索引

2.1.环境准备

ALTER TABLE MONKEY.TEST_PART_NULL_NORMAL ADD  PARTITION DCS_MAX VALUES LESS THAN (MAXVALUE);

--向MAX分区中添加数据
DECLARE
   v_sql   VARCHAR2 (2000);
BEGIN
   FOR i IN 10 .. 28
   LOOP
      FOR j IN 10 .. 23
      LOOP
         FOR k IN 10 .. 59
         LOOP
            v_sql :='INSERT INTO MONKEY.TEST_PART_NULL_NORMAL VALUES (3,''D'',20,TO_DATE(''202303'|| I|| J|| K|| '00'',''YYYYMMDDHH24MISS''))';
            EXECUTE IMMEDIATE V_SQL;
         END LOOP;
      END LOOP;
   END LOOP;
   COMMIT;
END;

2.2.结论

  • 插入的数值如果大于最后一个正常分区,会插入到MAX分区中

  • MAX分区只含有下一个新增分区的数据且新增分区和MAX分区同一表空间,分区索引不失效

    ALTER TABLE MONKEY.TEST_PART_NULL_NORMAL SPLIT PARTITION DCS_MAX AT ( (TO_DATE(' 2023-06-01 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN'))) INTO ( PARTITION DCS_P202305 TABLESPACE USERS , PARTITION DCS_MAX TABLESPACE USERS);
    
  • MAX分区只含有下一个新增分区的数据且新增分区和MAX分区不同表空间,分区索引失效

    ALTER TABLE MONKEY.TEST_PART_NULL_NORMAL SPLIT PARTITION DCS_MAX AT ( (TO_DATE(' 2023-06-01 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN'))) INTO ( PARTITION DCS_P202305 TABLESPACE MYTBS , PARTITION DCS_MAX TABLESPACE USERS);
    
  • MAX分区只含有下一个新增分区的数据且新增分区和MAX分区同一表空间,MAX重新指定分区,分区索引不失效

    ALTER TABLE MONKEY.TEST_PART_NULL_NORMAL SPLIT PARTITION DCS_MAX AT ( (TO_DATE(' 2023-05-01 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN'))) INTO ( PARTITION DCS_P202304 TABLESPACE USERS , PARTITION DCS_MAX TABLESPACE MYTBS);
    
  • MAX分区含有下一个新增分区的数据和下个分区之后的数据,MAX分区和新增分区索引失效

    ALTER TABLE MONKEY.TEST_PART_NULL_NORMAL SPLIT PARTITION DCS_MAX AT ( (TO_DATE(' 2023-06-01 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN'))) INTO ( PARTITION DCS_P202305 TABLESPACE MYTBS , PARTITION DCS_MAX TABLESPACE MYTBS);
    
  • MAX分区空新增分区,新分区表空间无论是否和MAX分区相同,分区索引不失效

    ALTER TABLE MONKEY.TEST_PART_NULL_NORMAL SPLIT PARTITION DCS_MAX AT ( (TO_DATE(' 2023-05-01 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN'))) INTO ( PARTITION DCS_P202304 TABLESPACE USERS , PARTITION DCS_MAX TABLESPACE USERS);
    
  • 删除非空分区或者空分区,分区索引都不失效

    alter table MONKEY.TEST_PART_NULL_NORMAL drop partition DCS_P202302;
    
  • MOVE分区和1.2结论相同

3.新增分区和新增索引分区表空间

3.1.新增分区表空间

  • 有MAX分区,新增分区不指定表空间的话,和MAX表空间相同
ALTER TABLE MONKEY.TEST_PART_NULL_NORMAL SPLIT PARTITION DCS_MAX AT ( (TO_DATE(' 2023-08-01 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN'))) INTO ( PARTITION DCS_P202307, PARTITION DCS_MAX);
  • 无MAX分区,新增分区不指定表空间的话,和建表时指定的表空间相同
ALTER TABLE  MONKEY.TEST_PART_NULL_NORMAL ADD PARTITION DCS_P202309 VALUES LESS THAN (TO_DATE (' 2023-10-01 00:00:00','SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'));

3.2.新增索引分区表空间

  • 新增分区索引表空间和建索引时指定的表空间相同(不管有无MAX分区)

  • 建索引时如果没有指定表空间,新增分区索引表空间和新增分区表空间相同

    CREATE INDEX MONKEY.TEST_PART_NULL_NORMAL_AD
       ON MONKEY.TEST_PART_NULL_NORMAL (NAME)
       LOCAL;
    

  • 查看建索引时是否指定表空间

    SELECT OWNER,
           INDEX_NAME,
           CASE
              WHEN INSTR (DBMS_METADATA.GET_DDL ('INDEX', INDEX_NAME, OWNER),
                          'TABLESPACE')
                   - INSTR (DBMS_METADATA.GET_DDL ('INDEX', INDEX_NAME, OWNER),
                            'PARTITION') < 0
              THEN
                 'YES'
              WHEN INSTR (DBMS_METADATA.GET_DDL ('INDEX', INDEX_NAME, OWNER),
                          'TABLESPACE')
                   - INSTR (DBMS_METADATA.GET_DDL ('INDEX', INDEX_NAME, OWNER),
                            'PARTITION') =
                      INSTR (DBMS_METADATA.GET_DDL ('INDEX', INDEX_NAME, OWNER),
                             'TABLESPACE')
              THEN
                 '普通索引'
              ELSE
                 'NO'
           END
              AS CREATETABLESPACE
      FROM DBA_INDEXES
     WHERE TABLE_OWNER = 'MONKEY' AND TABLE_NAME = 'TEST_PART_NULL_NORMAL';
    
  • 查看現有索引分區和建索引指定表空間是否相同

    SELECT INDEX_OWNER,
             INDEX_NAME,
             CASE
                WHEN COUNT (1) > 1 THEN '建表表空間和分區表空間不同'
                ELSE '相同'
             END
                IFDIFFERENT
        FROM (  SELECT B.INDEX_OWNER, B.INDEX_NAME, B.TABLESPACE_NAME
                  FROM DBA_INDEXES A, DBA_IND_PARTITIONS B
                 WHERE     A.OWNER = B.INDEX_OWNER
                       AND A.INDEX_NAME = B.INDEX_NAME
                       AND A.TABLE_OWNER = 'GLMLB4_MLBII'
                       AND A.TABLE_NAME = 'R_SMT_MATRIX_UNION'
              GROUP BY INDEX_OWNER, B.INDEX_NAME, B.TABLESPACE_NAME)
    GROUP BY INDEX_OWNER, INDEX_NAME
    
  • 修改分区索引表空间

    SELECT B.INDEX_OWNER,
           B.INDEX_NAME,
           B.PARTITION_NAME,
           B.TABLESPACE_NAME
      FROM DBA_INDEXES A, DBA_IND_PARTITIONS B
     WHERE A.OWNER = B.INDEX_OWNER AND A.INDEX_NAME = B.INDEX_NAME AND A.TABLE_OWNER='MONKEY' AND A.TABLE_NAME='TEST_PART_NULL_NORMAL';
    
    
    SELECT 'ALTER INDEX '||B.INDEX_OWNER||'.'||
           B.INDEX_NAME||' rebuild partition '||
           B.PARTITION_NAME||' TABLESPACE HETBS;'
      FROM DBA_INDEXES A, DBA_IND_PARTITIONS B
     WHERE A.OWNER = B.INDEX_OWNER AND A.INDEX_NAME = B.INDEX_NAME AND A.TABLE_OWNER='MONKEY' AND A.TABLE_NAME='TEST_PART_NULL_NORMAL' AND B.TABLESPACE_NAME='USERS'; 
    

标签:INDEX,00,MAX,分区,PARTITION,PART,分区表,测试
From: https://www.cnblogs.com/monkey6/p/17056136.html

相关文章

  • python—测试工具UI实践(1)—需求分析及环境部署
    环境部署:安装python安装pycharm工作任务:需求:研发一个测试工具,构造随机测试数据技术要求:基于python语言开发成果物:正常使用分享交流:分享开发过程中的收获 ......
  • 思科模拟器:简易校园网组网方案设计、实现、测试及抓包分析
    目录1.题目:校园组网方案设计...32.需求分析...33.理论介绍...44.详细设计...54.1设备的选择与配置...54.1.1交换机与路由器的选择...54.1.2出口路由器添加串......
  • Win10系统下进行磁盘分区
    1、进行分区之前,我们必须进入系统的磁盘管理。进入磁盘管理发方式有两种。一种是通过电脑属性,进入磁盘管理。第二种是直接右键点击windows键(windows+X)选择磁盘管理;2、进入......
  • MeterSphere UI 测试脚本的使用
    目前MeterSphereUI测试仅支持js脚本,设置的脚本将在浏览器中执行。以脚本有返回值和无返回值两种情况为例。1js脚本有返回值情况1.1脚本类型:同步,设置变量:有返回值(以下脚......
  • 自动化测试验证码问题
    1.验证码作用不少网站在用户登录、用户提交信息等登录和输入的页面上使用了验证码技术。验证码技术可以有效防止恶意用户对网站的滥用,使得网站可以有效避免用户信息失窃......
  • MeterSphere 接口测试环境/环境组+动态数据源使用
    MeterSphere接口测试支持环境配置,灵活配置运行环境,好多小伙伴在使用过程中,对http配置的搭配以及环境组的使用场景是有疑惑的,下面为大家介绍一下1.环境配置1.1通用配置......
  • 亚马逊手电筒和头灯UL1576测试报告详情
    亚马逊会不定期进行AI抽查,一旦被亚马逊抽查到,亚马逊要求在规定的时间内提交以下信息:公司名称卖家/供应商编号电子邮件地址电话号码您申请销售电热毯的ASIN列表商品图片和手......
  • 【服务器数据恢复】infortrend存储raid6故障离线,强制上线成功后分区数据无法访问的数
    服务器数据恢复环境:某影音制作公司一台infortrend某型号存储设备;12块硬盘组建raid6磁盘阵列,共一个lun映射到WINDOWS系统;在WINDOWS系统上,划分了一个GPT分区。服务器故障&......
  • Windows 资产测试可连接性
    概述本文主要介绍如Windows资产,测试资产连接性的方法。(推送系统用户、批量改密的前置条件)实现方案Windows资产默认不支持测试资产连接性、推送系统用户、批量改密。要想......
  • Mac源码启动MeterSphere服务,并进行性能测试
    1环境准备1、首选要参考一下官方的开发文档 ​​https://metersphere.io/docs/dev_manual/​​2、Java环境,1.20以上版本需要jdk11,​3、maven环境4、vue环境,需要的看这里的......