暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 在非常大的分区表上创建PK约束和索引

askTom 2017-07-07
621

问题描述

嘿汤姆,

自从我进行DBA工作以来已经有几年了,但是我的任务是将数据库从一个地方移到另一个地方,以便可以重建源位置服务器。因此,我为源数据库中的每个对象创建了DDL脚本,并创建了数据泵导出。我已经在新位置重新创建了数据库,并对所有数据执行了数据泵导入。有1个约束/索引,我无法重建。它在一个分配表上,其中包含大约。20亿行数据。表空间的创建与源数据库 (包括大小) 完全相同,并且我一直用完临时空间。源数据库有7个临时文件 (每个32gb)。我已经清除了很多空间,并有27个临时文件 (每个32gb),但仍然出现错误。这是下面的语句 (这是通过源系统上的SQL DEVELOPER创建的DDL):

更改表 “CBMRR”。“H60_HUMS_PARAMETERS” 添加约束 “H60_HUMS_PARAMETERS_PK” 主键 (“RDF_FILE_ID”,“REC_TIME”,“START_TS”)
使用索引PCTFREE 10 INITRANS 2 MAXTRANS 255
存储 (
BUFFER_POOL默认FLASH_CACHE默认CELL_FLASH_CACHE默认) 本地
(分区 “H60_HUMS_PARAM_NDX_2003”
PCTFREE 10 INITRANS 2 MAXTRANS 255
存储 (INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
Pct增加0自由主义者1自由主义者组1
BUFFER_POOL默认FLASH_CACHE默认CELL_FLASH_CACHE默认)
表空间 “H60_HUMS_PARAMS_2003_NDX”,
分区 “H60_HUMS_PARAM_NDX_2004”
PCTFREE 10 INITRANS 2 MAXTRANS 255
存储 (INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
Pct增加0自由主义者1自由主义者组1
BUFFER_POOL默认FLASH_CACHE默认CELL_FLASH_CACHE默认)
表空间 “H60_HUMS_PARAMS_2004_NDX”,
分区 “H60_HUMS_PARAM_NDX_2005”
PCTFREE 10 INITRANS 2 MAXTRANS 255
存储 (INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
Pct增加0自由主义者1自由主义者组1
BUFFER_POOL默认FLASH_CACHE默认CELL_FLASH_CACHE默认)
表空间 “H60_HUMS_PARAMS_2005_NDX”,
分区 “H60_HUMS_PARAM_NDX_2006”
PCTFREE 10 INITRANS 2 MAXTRANS 255
存储 (INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
Pct增加0自由主义者1自由主义者组1
BUFFER_POOL默认FLASH_CACHE默认CELL_FLASH_CACHE默认)
表空间 “H60_HUMS_PARAMS_2006_NDX”,
分区 “H60_HUMS_PARAM_NDX_2007”
PCTFREE 10 INITRANS 2 MAXTRANS 255
存储 (INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
Pct增加0自由主义者1自由主义者组1
BUFFER_POOL默认FLASH_CACHE默认CELL_FLASH_CACHE默认)
表空间 “H60_HUMS_PARAMS_2007_NDX”,
分区 “H60_HUMS_PARAM_NDX_2008”
PCTFREE 10 INITRANS 2 MAXTRANS 255
存储 (INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
Pct增加0自由主义者1自由主义者组1
BUFFER_POOL默认FLASH_CACHE默认CELL_FLASH_CACHE默认)
表空间 “H60_HUMS_PARAMS_2008_NDX”,
分区 “H60_HUMS_PARAM_NDX_2009”
PCTFREE 10 INITRANS 2 MAXTRANS 255
存储 (INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
Pct增加0自由主义者1自由主义者组1
BUFFER_POOL默认FLASH_CACHE默认CELL_FLASH_CACHE默认)
表空间 “H60_HUMS_PARAM_2009_NDX”,
分区 “H60_HUMS_PARAM_NDX_2010”
PCTFREE 10 INITRANS 2 MAXTRANS 255
存储 (INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
Pct增加0自由主义者1自由主义者组1
BUFFER_POOL默认FLASH_CACHE默认CELL_FLASH_CACHE默认)
表空间 “H60_HUMS_PARAMS_2010_NDX”,
分区 “H60_HUMS_PARAM_NDX_2011”
PCTFREE 10 INITRANS 2 MAXTRANS 255
存储 (INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
Pct增加0自由主义者1自由主义者组1
BUFFER_POOL默认FLASH_CACHE默认CELL_FLASH_CACHE默认)
表空间 “H60_HUMS_PARAM_2011_NDX”,
分区 “H60_HUMS_PARAM_NDX_2012”
PCTFREE 10 INITRANS 2 MAXTRANS 255
存储 (INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
Pct增加0自由主义者1自由主义者组1
BUFFER_POOL默认FLASH_CACHE默认CELL_FLASH_CACHE默认)
表空间 “H60_HUMS_PARAMS_2012_NDX”,
分区 “H60_HUMS_PARAM_NDX_2013”
PCTFREE 10 INITRANS 2 MAXTRANS 255
存储 (INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
Pct增加0自由主义者1自由主义者组1
BUFFER_POOL默认FLASH_CACHE默认CELL_FLASH_CACHE默认)
表空间 “H60_HUMS_PARAMS_2013_NDX”,
分区 “h60 _ 胡 _ 帕拉 _ ndx _ 2014”
PCTFREE 10 INITRANS 2 MAXTRANS 255
存储 (INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
Pct增加0自由主义者1自由主义者组1
BUFFER_POOL默认FLASH_CACHE默认CELL_FLASH_CACHE默认)
表空间 “H60_HUMS_PARAMS_2014_NDX”,
分区 “H60_HUMS_PARAM_NDX_2015”
PCTFREE 10 INITRANS 2 MAXTRANS 255
存储 (INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
Pct增加0自由主义者1自由主义者组1
BUFFER_POOL默认FLASH_CACHE默认CELL_FLASH_CACHE默认)
表空间 “H60_HUMS_PARAM_2015_NDX”,
分区 “h60 _ 胡 _ 帕拉 _ 2016”
PCTFREE 10 INITRANS 2 MAXTRANS 255
存储 (INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
Pct增加0自由主义者1自由主义者组1
BUFFER_POOL默认FLASH_CACHE默认CELL_FLASH_CACHE默认)
表空间 “H60_HUMS_PARAM_2016_DAT”,
分区 “H60_HUMS_PARAM_2017”
PCTFREE 10 INITRANS 2 MAXTRANS 255
存储 (INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
Pct增加0自由主义者1自由主义者组1
BUFFER_POOL默认FLASH_CACHE默认CELL_FLASH_CACHE默认)
表空间 “H60_HUMS_PARAM_2017_DAT”) 压缩1使能;

专家解答

好的,它是本地分区的索引,因此您可以一次构建一个分区的索引,以保持资源消耗低,例如


SQL> create table t
  2  partition by range ( r )
  3  interval ( 10000 )
  4  (
  5    partition p1 values less than (10000)
  6  )
  7  as select rownum r,
  8            d.* from dba_objects d;

Table created.

SQL>
SQL> create unique index ix on t ( r ) local unusable;

Index created.

SQL>
SQL> select partition_name from user_ind_partitions where index_name = 'IX';

PARTITION_NAME
--------------------------------------------------------------------------------------------------------------------------------
P1
SYS_P3065
SYS_P3066
SYS_P3067
SYS_P3068
SYS_P3069
SYS_P3070
SYS_P3071

8 rows selected.

SQL> alter index ix rebuild partition P1;

Index altered.

SQL> alter index ix rebuild partition SYS_P3065;

Index altered.

SQL> alter index ix rebuild partition SYS_P3066;

Index altered.

SQL> alter index ix rebuild partition SYS_P3067;

Index altered.

SQL> alter index ix rebuild partition SYS_P3068;

Index altered.

SQL> alter index ix rebuild partition SYS_P3069;

Index altered.

SQL> alter index ix rebuild partition SYS_P3070;

Index altered.

SQL> alter index ix rebuild partition SYS_P3071;

Index altered.

SQL> alter table t add constraint uq primary key ( r ) using index local;

Table altered.

SQL>


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论