Oracle 索引的失效和重建

部分内容转载: http://www.cnblogs.com/zhenxing/p/5167776.html


所有执行的结果是脚本命令集合,可以用来创建索引; 

a)在plsql中使用execute  immediate 'alter table J3_nsrxx NOLOGGING'; 

b)sql窗口中,复制出来可直接执行;

1)查询指定表的索引

--执行过程中,能输入变量:Owner、Table_Name
SELECT T1.TABLE_NAME,
T1.INDEX_NAME,
T1.INDEX_TYPE,
T1.UNIQUENESS,
T1.TABLE_OWNER,
T1.STATUS,
T1.FUNCIDX_STATUS
FROM ALL_INDEXES T1
WHERE T1.TABLE_OWNER = UPPER('&Owner')
AND T1.TABLE_NAME = UPPER('&Table_Name')
ORDER BY T1.STATUS DESC;

2)普通索引失效,主键和唯一性索引除外(为保障数据的规范性)

--普通索引失效,主键和唯一性索引除外(为保障数据的规范性)
--执行过程中,能输入变量:Owner、Table_Name
SELECT 'ALTER INDEX ' || TABLE_OWNER || '.' || INDEX_NAME || ' UNUSABLE;' UNUSABLE_INDEX
FROM ALL_INDEXES
WHERE TABLE_OWNER = UPPER('&Owner')
AND TABLE_NAME = UPPER('&Table_Name')
AND INDEX_TYPE = 'NORMAL'
AND UNIQUENESS <> 'UNIQUE';

3)并行(PARALLEL)重建索引,提升重建速度(在服务器空闲时执行)

--并行(PARALLEL)重建索引,提升重建速度(在服务器空闲时执行)
--执行过程中,能输入变量:Owner、Table_Name
SELECT 'ALTER INDEX ' || TABLE_OWNER || '.' || INDEX_NAME ||
' REBUILD PARALLEL;' REBUILD_index
FROM ALL_INDEXES
WHERE TABLE_OWNER = UPPER('&Owner')
AND TABLE_NAME = UPPER('&Table_Name')
AND INDEX_TYPE = 'NORMAL'
AND UNIQUENESS <> 'UNIQUE'
AND STATUS = 'UNUSABLE';

4)查询索引的状态和DEGREE并行度

--查询索引的状态和DEGREE并行度
--执行过程中,能输入变量:Owner、Table_Name
SELECT ROWNUM,
S.INDEX_NAME,
S.INDEX_TYPE,
S.TABLE_OWNER,
S.TABLE_NAME,
S.UNIQUENESS,
S.STATUS,
S.DEGREE,
S.TABLESPACE_NAME
FROM ALL_INDEXES S
WHERE TABLE_OWNER = UPPER('&Owner')
AND TABLE_NAME = UPPER('&Table_Name');

5)将索引并行度不是1的还原回1

--将索引并行度不是1的还原回1
--执行过程中,能输入变量:Owner、Table_Name
SELECT 'ALTER INDEX ' || S.TABLE_OWNER || '.' || S.INDEX_NAME ||
' NOPARALLEL;'
FROM ALL_INDEXES S
WHERE TABLE_OWNER = UPPER('&Owner')
AND TABLE_NAME = UPPER('&Table_Name')
AND S.DEGREE <> 1;








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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值