Oracle 重建所有表的索引的存储过程 (重建索引)
2011-06-21 18:40
399 查看
CREATE OR REPLACE PROCEDURE P_REBUILD_ALL_INDEX(TABLESPACE_NAME IN VARCHAR2, --这里是表空间名,如果不改变表空间,可以传入NULL
ONLY_UNUSABLE IN BOOLEAN) --是否仅对无效的索引操作
AS
SQLT VARCHAR(200);
BEGIN
--只取非临时索引
FOR IDX IN (SELECT INDEX_NAME, TABLESPACE_NAME, STATUS
FROM USER_INDEXES
WHERE TEMPORARY = 'N') LOOP
--如果是如重建无效的索引,且当索引不是无效时,则跳过
IF ONLY_UNUSABLE = TRUE AND IDX.STATUS <> 'UNUSABLE' THEN
GOTO CONTINUE;
END IF;
IF (TABLESPACE_NAME IS NULL) OR IDX.STATUS = 'UNUSABLE' THEN
--如果没有指定表空间,或索引无效,则在原表空间重建
SQLT := 'ALTER INDEX ' || IDX.INDEX_NAME || ' REBUILD ';
ELSIF UPPER(TABLESPACE_NAME) <> IDX.TABLESPACE_NAME THEN
--如果指定的不同的表空间,则在指定表空间待建索引
SQLT := 'ALTER INDEX ' || IDX.INDEX_NAME || ' REBUILD TABLESPACE ' ||
TABLESPACE_NAME;
ELSE
--如果表空间相同,则跳过
GOTO CONTINUE;
END IF;
DBMS_OUTPUT.PUT_LINE(IDX.INDEX_NAME);
EXECUTE IMMEDIATE SQLT;
<<CONTINUE>>
NULL;
END LOOP;
END;
/*
功能:重建索引。
说明:如果表空间参数传入NULL,则在原表空间内重建索引,否则在目标表空间重建索引。
如果表空间相同,则跳过。
ONLY_UNUSABLE表示是否只对无效的索引进行重建
作者:81, 2007年6月26日
*/
ONLY_UNUSABLE IN BOOLEAN) --是否仅对无效的索引操作
AS
SQLT VARCHAR(200);
BEGIN
--只取非临时索引
FOR IDX IN (SELECT INDEX_NAME, TABLESPACE_NAME, STATUS
FROM USER_INDEXES
WHERE TEMPORARY = 'N') LOOP
--如果是如重建无效的索引,且当索引不是无效时,则跳过
IF ONLY_UNUSABLE = TRUE AND IDX.STATUS <> 'UNUSABLE' THEN
GOTO CONTINUE;
END IF;
IF (TABLESPACE_NAME IS NULL) OR IDX.STATUS = 'UNUSABLE' THEN
--如果没有指定表空间,或索引无效,则在原表空间重建
SQLT := 'ALTER INDEX ' || IDX.INDEX_NAME || ' REBUILD ';
ELSIF UPPER(TABLESPACE_NAME) <> IDX.TABLESPACE_NAME THEN
--如果指定的不同的表空间,则在指定表空间待建索引
SQLT := 'ALTER INDEX ' || IDX.INDEX_NAME || ' REBUILD TABLESPACE ' ||
TABLESPACE_NAME;
ELSE
--如果表空间相同,则跳过
GOTO CONTINUE;
END IF;
DBMS_OUTPUT.PUT_LINE(IDX.INDEX_NAME);
EXECUTE IMMEDIATE SQLT;
<<CONTINUE>>
NULL;
END LOOP;
END;
/*
功能:重建索引。
说明:如果表空间参数传入NULL,则在原表空间内重建索引,否则在目标表空间重建索引。
如果表空间相同,则跳过。
ONLY_UNUSABLE表示是否只对无效的索引进行重建
作者:81, 2007年6月26日
*/
相关文章推荐
- Oracle 重建所有表的索引的存储过程 (重建索引)
- Oracle 重建所有表的索引的存储过程 (重建索引)
- sqlserver重建所有索引的存储过程
- SQL存储过程之删除指定表中所有索引
- Oracle中用sql查询获取数据库的所有触发器,所有存储过程,所有视图,所有表
- 折腾Oracle问题小菜记[分页存储过程/查询所有表、视图、存储过程/查询表、视图、存储过程字段结构与参数](三)
- 折腾Oracle问题小菜记[分页存储过程/查询所有表、视图、存储过程/查询表、视图、存储过程字段结构与参数](三)
- 折腾Oracle问题小菜记[分页存储过程/查询所有表、视图、存储过程/查询表、视图、存储过程字段结构与参数](三)
- Oracle 导出、导入某用户所有数据(包括表、视图、存储过程...)
- oracle查看所有函数或存储过程的代码
- 查Oracle用户所有关联DbLink的存储过程
- ORACLE导出一个用户下的所有存储过程
- ORACLE重建所有的索引
- 删除数据库的所有存储过程、主键、外键、索引等
- Oracle 导出、导入某用户所有数据(包括表、视图、存储过程...)
- 重建所有索引(Oracle)
- Oracle问题小记五:服务启动-索引-子查询-分页存储过程
- 重建数据库索引的存储过程
- 删除数据库的所有存储过程、主键、外键、索引等(转)
- sqlserver查询数据库所有存储过程、触发器、索引信息