[z]重建索引

https://blog.csdn.net/funnyfu0101/article/details/52961485

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

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

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

1)查询指定表的索引

  1.  
    --执行过程中,能输入变量:Owner、Table_Name
  2.  
    SELECT T1.TABLE_NAME,
  3.  
    T1.INDEX_NAME,
  4.  
    T1.INDEX_TYPE,
  5.  
    T1.UNIQUENESS,
  6.  
    T1.TABLE_OWNER,
  7.  
    T1.STATUS,
  8.  
    T1.FUNCIDX_STATUS
  9.  
    FROM ALL_INDEXES T1
  10.  
    WHERE T1.TABLE_OWNER = UPPER('&Owner')
  11.  
    AND T1.TABLE_NAME = UPPER('&Table_Name')
  12.  
    ORDER BY T1.STATUS DESC;

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

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

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

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

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

  1.  
    --查询索引的状态和DEGREE并行度
  2.  
    --执行过程中,能输入变量:Owner、Table_Name
  3.  
    SELECT ROWNUM,
  4.  
    S.INDEX_NAME,
  5.  
    S.INDEX_TYPE,
  6.  
    S.TABLE_OWNER,
  7.  
    S.TABLE_NAME,
  8.  
    S.UNIQUENESS,
  9.  
    S.STATUS,
  10.  
    S.DEGREE,
  11.  
    S.TABLESPACE_NAME
  12.  
    FROM ALL_INDEXES S
  13.  
    WHERE TABLE_OWNER = UPPER('&Owner')
  14.  
    AND TABLE_NAME = UPPER('&Table_Name');
 

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

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

猜你喜欢

转载自www.cnblogs.com/jjj250/p/9562411.html