Oracle adatbázis séma gyors törlése

Le akartam törölni pár nagyobb sémát Oracle alatt, aminek az lett az eredménye, hogy 20 órát futott a DROP USER… Kis olvasgatás után az körvonalazódott, hogy ezt a funkciót nem sikerült jól implementálni, ezért inkább töröljek kézzel mindent, és csak a végén töröljem a már üres sémákat… Nagy nehezen kiizzadtam magamból a lenti scriptet, ami működik is, de mivel az impdb implementációja sem sikerült teljesen ezért a végső megoldás az lett, hogy el kell dobni a teljes adatbázist, és újra kell gyártani nulláról… De ha már megírtam, akkor elmentem, hátha még jól jöhet a későbbiekben…

<br />
BEGIN<br />
  FOR r1 IN ( SELECT 'DROP ' || object_type || ' ' || owner || '.' || object_name || DECODE ( object_type, 'TABLE', ' CASCADE CONSTRAINTS PURGE' ) AS v_sql<br />
               FROM all_objects<br />
               WHERE owner in ('SCHEMA1', 'SCHEMA2') AND<br />
                object_type IN ( 'TABLE', 'VIEW', 'PACKAGE', 'TYPE', 'PROCEDURE', 'FUNCTION', 'TRIGGER', 'SEQUENCE' )<br />
                ORDER BY object_type, object_name ) LOOP<br />
    BEGIN<br />
     EXECUTE IMMEDIATE r1.v_sql; exception when others then null;<br />
    END;<br />
   END LOOP;<br />
  END;<br />
/ </p>
<p>DROP USER CUSTOMER SCHEMA1 CASCADE;<br />
DROP USER CUSTOMER SCHEMA2 CASCADE;<br />

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.