Normalmente, è più semplice eliminare e aggiungere l'utente. Questo è il metodo preferito se si ha accesso a sistema o sysdba al database.
Se non si dispone dell'accesso al livello di sistema e si desidera eseguire lo scrub del proprio schema, il seguente sql produrrà una serie di istruzioni di rilascio, che possono essere quindi eseguite.
select 'drop '||object_type||' '|| object_name|| DECODE(OBJECT_TYPE,'TABLE',' CASCADE CONSTRAINTS','') || ';' from user_objects
Quindi, di solito spurgo il cestino per pulire davvero tutto. Per essere onesti, non vedo un sacco di utilizzare per il cestino di Oracle, e vorrei poter disabilitarlo, ma in ogni caso:
purge recyclebin;
Questo produrrà un elenco di istruzioni goccia. Non tutti verranno eseguiti - se cadi con cascade, il drop degli indici PK_ * fallirà. Ma alla fine, avrai uno schema abbastanza pulito. Confermare con:
select * from user_objects
Inoltre, solo per aggiungere, il blocco PL/SQL nella tua domanda cancellerà solo le tabelle, non elimina tutti gli altri oggetti.
ps: copiato da qualche sito Web, mi è stato utile. Testato e funzionante come un fascino.
Se vuoi dire non eliminare gli ID utente Oracle, penso che lo script avrebbe fatto. Ma crea un database di test e provalo. – CargoMeister
Qual è il tuo obiettivo? Per cancellare il contenuto di tutte le tabelle? Quindi non dovresti lasciarli cadere. Se vuoi solo ottenere uno schema vuoto, suppongo sia più facile ricrearlo. Riceverai un nuovo schema da zero con statistiche vuote, senza alcun oggetto (tabelle, viste, sinonimi, viste materializzate, ecc.) – denied
Non ho i permessi per creare utenti, quindi non posso lasciar cadere l'utente e ricrearlo (non posso usare DROP USER come viene commentato nella domanda) – zerosssa