Skip to content

Generate Drop User Statements (drop_user.gen)

This generator script creates DROP USER CASCADE statements to remove database users and all their objects. It includes extensive protection against dropping critical system users.

rem drop_user.gen
rem
select 'drop user ' || username || ' cascade;'
from sys.dba_users
where username like upper('&username')
and username not in ('SYS','SYSTEM','DBSNMP','SYSMAN','OUTLN','FLOWS_FILES',
'MDSYS','ORDSYS','EXFSYS','WMSYS','APPQOSSYS','APEX_PUBLIC_USER',
'DIP','ORACLE_OCM','XDB','ANONYMOUS','CTXSYS','XS$NULL','ORDDATA',
'ORDPLUGINS','SI_INFORMTN_SCHEMA','OLAPSYS','MDDATA','SPATIAL_WFS_ADMIN_USR',
'SPATIAL_CSW_ADMIN_USR','APEX_040200')
order by username
/
-- Basic usage
@drop_user.gen
-- When prompted, enter:
-- username: Username pattern (use % for wildcard)

The script prompts for:

  • &username - Username pattern (use % for wildcard)
SELECT ANY DICTIONARY
-- OR --
SELECT ON DBA_USERS
DROP USER privilege
drop user TEST_USER cascade;
drop user DEV_USER cascade;
drop user APP_USER_OLD cascade;
  • CASCADE Option: Drops all objects owned by the user
  • Extensive System User Protection: Excludes 20+ critical system users
  • Pattern Matching: Use wildcards to find users to drop
  • Sorted Output: Alphabetically ordered for easy review

Drop Test Users

@drop_user.gen
-- Enter: TEST% for username

Drop Old Application Users

@drop_user.gen
-- Enter: %_OLD for username