Oracle 索引的失效和重建
阿新 • • 發佈:2018-11-20
部分內容轉載: 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;