code_junkie

Disable and later enable all table indexes in Oracle

Nov 11th, 2011
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.91 KB | None | 0 0
  1. DECLARE
  2. CURSOR usr_idxs IS select * from user_indexes;
  3. cur_idx usr_idxs% ROWTYPE;
  4. v_sql VARCHAR2(1024);
  5.  
  6. BEGIN
  7. OPEN usr_idxs;
  8. LOOP
  9. FETCH usr_idxs INTO cur_idx;
  10. EXIT WHEN NOT usr_idxs%FOUND;
  11.  
  12. v_sql:= 'ALTER INDEX ' || cur_idx.index_name || ' UNUSABLE';
  13. EXECUTE IMMEDIATE v_sql;
  14. END LOOP;
  15. CLOSE usr_idxs;
  16. END;
  17.  
  18. select dbms_metadata.get_ddl('INDEX', u.index_name) from user_indexes u;
  19.  
  20. alter session set skip_unusable_indexes = true;
  21. select 'alter index ' || u.index_name || ' unusable;' from user_indexes u;
  22.  
  23. select 'alter index ' || u.index_name || ' rebuild online;' from user_indexes u;
  24.  
  25. set pagesize 0
  26.  
  27. alter session set skip_unusable_indexes = true;
  28. spool c:tempdisable_indexes.sql
  29. select 'alter index ' || u.index_name || ' unusable;' from user_indexes u;
  30. spool off
  31. @c:tempdisable_indexes.sql
  32.  
  33. select 'alter index ' || u.index_name ||
  34. ' rebuild online;' from user_indexes u;
Add Comment
Please, Sign In to add comment