1.添加索引开8个并行,重新对数据进行排列 :
create index indexname on tablemane(to_char(字段,'yyyy-mm-dd')) online parallel 8
tablespace tablespace
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
--indexname索引名
--tablename添加索引的表
--parallel 并行数
--tablespace表空间名
2.结束并行
alter index indexnamenoparallel;
3.然后执行表信息收集使索引生效
exec dbms_stats.gather_table_stats(ownname=>'用户名',tabname=>'表名',estimate_percent=>30,cascade=>true);
-----------------------------------------------------------------------------------------------------
3.1如果进行表信息收集时造成锁表,一般缩表信息为
ORA-20005: object statistics are locked (stattype = ALL)
ORA-06512: 在 "SYS.DBMS_STATS", line 24281
ORA-06512: 在 "SYS.DBMS_STATS", line 24332
ORA-06512: 在 line 2
该锁表模式share。以下为缩表模式:
EXLUSIVE排他锁
表级锁:当一个Session获取到了排他锁以后,其他用户只能进行查询操作,一般对一张表进行drop操作时获得该锁。
SHARE共享锁
表级锁:SHARE模式允许并发查询,但是一个Session如果获得了共享锁,那么就不能对该表进行update操作。
ROW SHARE行共享模式
行级锁:允许并发访问,但是不允许用户独占式访问。这个锁模式等价于WITH SHARE UPDATE(以前老版本的写法)
ROW EXCLUSIVE行排他模式
行级锁:ROW EXCLUSIVE模式一般来说用户不会手动进行设置,在一个Session会话对数据库进行insert、update以及delete操作时,该用户就会自动的获取到这个ROW EXCLUSIVE锁。在ROW EXCLUSIVE和ROW SHARE模式一样,但是如果一个Session获得了ROW EXCLUSIVE锁,那么另外的Session就不能进行ROW EXCLUSIVE锁定,也不能对该表进行SHARE锁定。
SHARE ROW EXLUSIVE共享行排他
行级锁:如果一个Session获取了SHARE ROW EXLUSIVE锁,该用户以及其他用户可以对整张表进行查询,但是,不允许其他用户对该表进行SHARE锁定或者更新表的数据。
3.2解锁
执行:EXEC DBMS_STATS.unlock_schema_stats(OWNNAME = 'HDM') 进行解锁