deleting all objects of a schema
The process for deleting all objects can be summarized by
remove all constraints on tables
delete all tables, indexes, sequences, procedures, etc.
purge the recyclebin
The only practical way of doing the first two above is to take the process in two stages:
Stage 1. The first stage selects from the USER_OBJECTS table along with strings that will later be used as SQL:
select 'drop '||object_type||object_name||';' from USER_OBJECTS;
row returned, example-> drop TABLE SAKAI_USER;
Stage 2. the second stage is to run the script generated from stage 1
The method for doing the varies a little based on the client used. There is room below for adding scripts for this for various clients.
Finally, the command 'purge recyclebin' will remove all the cached objects (eg, tables with names like 'BIN$%')
Scripts
henplus
HenPlus is a java based commandline client with a functional base which is based on that of SQLPlus. But, it is a big improvement on it.
Here is a script for henplus:
You must run this from the same directory that the script is in (ok, henplus needs a little more improvement )
Also, notice that this script was orginally written for sqlplus and all the original lines are still in the script but are commented out
-- #############################################################################################
--
-- %Purpose: Drop all objects of the user that executes this script.
--
-- #############################################################################################
--
-- Akadia SQL Utility Scripts
--
-- Requires Oracle 8.1
--
------------------------------------------------------------------------------
PROMPT
PROMPT Generating script to drop the objects...
--set pagesize 0
--set feedback off
set-property sql-result-showfooter off
set-property sql-result-showheader off
set-property column-delimiter ''
--set termout off
--set linesize 100
--set trimspool on
--set wrap on
spool drop_user_objects.lst.sql
PROMPT PROMPT
PROMPT PROMPT Dropping public synonyms...
SELECT 'PROMPT ... dropping public synonym '||synonym_name
, 'drop public synonym '||synonym_name||';'
FROM all_synonyms
WHERE table_owner = ( SELECT user
FROM dual
)
/
PROMPT PROMPT
PROMPT PROMPT Dropping relational constraints...
SELECT 'alter table '||table_name||' drop constraint '||constraint_name||';'
FROM user_constraints
WHERE constraint_type = 'R'
/
PROMPT PROMPT
PROMPT PROMPT Dropping remaining user objects...
select 'drop '||object_type||' '||object_name||';'
from user_objects
WHERE object_type != 'INDEX'
and object_type != 'LOB' and object_name not like 'BIN$%'
/
spool off
--set feedback on
--set termout on
spool drop_user_objects.log
start drop_user_objects.lst.sql
PROMPT
PROMPT All database objects of the user dropped.
PROMPT Please review the log file drop_user_objects.log in the current directory.
PROMPT
PROMPT Count of remaining objects:
--set feedback off
SELECT count(*) REMAINING_USER_OBJECTS
FROM user_objects
/
--set feedback on
spool off
set-property sql-result-showfooter off
set-property sql-result-showheader off
reset-property column-delimiter