PARALLEL(NOPARALLEL 是默认值):多个进程可以同时协同工作来创建索引。与单个服务器进程按顺序创建索引相比,通过在多个服务器进程之间分配创建索引所需的工作,Oracle 服务器可以更快速地创建索引。将随机对表取样并找到一组索引关键字,这些索引关键字按照指定的并行度将索引平均分为相同数目的片段。第一组查询进程将扫描表,提取关键字、行 ID 对并基于关键字将每个对发送到第二组查询进程中的一个进程中。第二组中的每个进程都对关键字进行排序并按常规方式构建索引。所有索引片段构建完成后,并行协调程序会将这些片段(已进行排序)级联以形成最终的索引。
SQL> CREATE INDEX rname_idx
ON hr.regions (region_name)
PARALLEL 4;
3.触发问题;
set autot traceonly
--开启跟踪
select * from t1 where object_id=2;
--报错,索引文件没有找到
set autot off
alter index ind_t1_id rebuild online;
--报错,索引文件未找到
4.重建索引并指定到别的表空间
set long 99999
select dbms_metadata.get_ddl('INDEX','IND_T1_ID') from dual;
IND_USER@PROD>select dbms_metadata.get_ddl('INDEX','IND_T1_ID') FROM DUAL;
CREATE INDEX "IND_USER"."IND_T1_ID" ON "IND_USER"."T1" ("OBJECT_ID")
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "IND_TBS"
--建议关注compute statistics
alter index ind_t1_id rebulid online tablespace users;
alter index ind_t1_name rebulid online tablespace users;
alter index ind_t1_com rebulid online tablespace users;
select index_name,tablespace_name,status from ind;
--查看重建结果
5.删除或重建数据文件丢失的索引表空间
drop tablespace ind_tbs including contents and datafiles;
--删除表空间
alter system datafile 7 offline;
--如果删除表空间报错,数据文件正在打开,先offline 7 ,再删除;
alter index ind_t1_id rebulid online tablespace ind_tbs;
alter index ind_t1_name rebulid online tablespace ind_tbs;
alter index ind_t1_com rebulid online tablespace ind_tbs;