oracle并行添加索引

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') 进行解锁

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值