部分内容转载: 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;