57 lines
2.1 KiB
MySQL
57 lines
2.1 KiB
MySQL
|
/*************************************************************************
|
||
|
* The contents of this file are subject to the Adempiere License. You may
|
||
|
* obtain a copy of the License at http://www.adempiere.org/license.html
|
||
|
* Software is on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
|
||
|
* express or implied. See the License for details. Code: Adempiere ERP+CRM
|
||
|
* Copyright (C) 1999-2001 Jorg Janke, ComPiere, Inc. All Rights Reserved.
|
||
|
*************************************************************************
|
||
|
* $Id: DBA_Indexes.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $
|
||
|
***
|
||
|
* Title: Rebuild Indexes in Tablespace USERS
|
||
|
* Description:
|
||
|
* Ensure storage is PctIncrease 0 and MaxExtents Unlimited
|
||
|
************************************************************************/
|
||
|
DECLARE
|
||
|
-- In wrong tablespace
|
||
|
CURSOR Cur_Move IS
|
||
|
SELECT Index_Name
|
||
|
FROM USER_INDEXES
|
||
|
WHERE Index_Type<>'LOB' -- no LOB
|
||
|
AND TableSpace_Name != 'USERS';
|
||
|
-- Fix Storage issues
|
||
|
CURSOR Cur_Storage IS
|
||
|
SELECT Index_Name
|
||
|
FROM USER_INDEXES
|
||
|
WHERE Index_Type<>'LOB' -- no LOB
|
||
|
AND Pct_Increase > 0 OR Max_Extents < 4097;
|
||
|
-- Not Analyzed within the last 7 days
|
||
|
CURSOR Cur_Stat IS
|
||
|
SELECT Index_Name
|
||
|
FROM USER_INDEXES
|
||
|
WHERE Index_Type<>'LOB' -- no LOB
|
||
|
AND DURATION IS NULL -- no Temp Table
|
||
|
AND (Last_Analyzed IS NULL OR Last_Analyzed < SysDate-7);
|
||
|
--
|
||
|
Cmd VARCHAR2(256);
|
||
|
BEGIN
|
||
|
FOR i IN Cur_Move LOOP
|
||
|
DBMS_OUTPUT.PUT_LINE('Index ' || i.Index_Name || ' moved');
|
||
|
Cmd := 'ALTER INDEX ' || i.Index_Name || ' REBUILD TABLESPACE USERS COMPUTE STATISTICS';
|
||
|
EXECUTE IMMEDIATE cmd;
|
||
|
END LOOP;
|
||
|
FOR i IN Cur_Storage LOOP
|
||
|
DBMS_OUTPUT.PUT_LINE('Index ' || i.Index_Name || ' storage fixed');
|
||
|
Cmd := 'ALTER INDEX ' || i.Index_Name
|
||
|
|| ' STORAGE (PCTINCREASE 0 MAXEXTENTS UNLIMITED)';
|
||
|
EXECUTE IMMEDIATE cmd;
|
||
|
END LOOP;
|
||
|
FOR i IN Cur_Stat LOOP
|
||
|
DBMS_OUTPUT.PUT_LINE('Index ' || i.Index_Name || ' analyzed');
|
||
|
Cmd := 'ALTER INDEX ' || i.Index_Name || ' REBUILD COMPUTE STATISTICS';
|
||
|
EXECUTE IMMEDIATE cmd;
|
||
|
END LOOP;
|
||
|
COMMIT;
|
||
|
END;
|
||
|
/
|
||
|
|