-删除空的表空间,但是不包含物理文件
drop tablespace tablespace_name;
–删除非空表空间,但是不包含物理文件
drop tablespace tablespace_name including contents;
–删除空表空间,包含物理文件
drop tablespace tablespace_name including datafiles;
–删除非空表空间,包含物理文件
drop tablespace tablespace_name including contents and datafiles;
–如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;
以system用户登录,查找需要删除的用户:
–查找用户
select * from dba_users;
–查找工作空间的路径
select * from dba_data_files;
–删除用户
drop user 用户名称 cascade;
–删除表空间
drop tablespace 表空间名称 including contents and datafiles cascade constraint;
例如:删除用户名成为ABC,表空间名称为ABC
–删除用户,及级联关系也删除掉
drop user ABC cascade;
–删除表空间,及对应的表空间文件也删除掉
drop tablespace ABC including contents and datafiles cascade constraint;
删除无任何数据对象的表空间:
首先使用PL/SQL界面化工具,或者使用oracle自带的SQL PLUS工具,连接需要删除的表空间的oracle数据局库。
确认当前用户是否有删除表空间的权限,如果没有 drop tablespace,请先用更高级的用户(如sys)给予授权或者直接用更高级的用户。
用drop tablespace xxx ,删除需要删除的表空间。
删除有任何数据对象的表空间
使用drop tablespace xxx including contents and datafiles;来删除表空间。
注意事项:
如果drop tablespace语句中含有datafiles,那datafiles之前必须有contents关键字,不然会提示ora-01911错误
1、以system用户登录查找需要删除的用户(普通用户没有删除权限)
select * from dba_users;
2、查询需要删除用户对应的表空间
select * from dba_data_files;
3、删除用户和表空间
drop user usernamecascade;
drop tablespace tablespacename including contents and datafiles cascade constraint;
在删除用户时可能会碰到无法删除当前连接的用户,这是由于还有数据库连接到该用户,有会话存在,需要先删除会话。
最暴力的做法是直接shutdown数据库,然后重启即可。。。
直接进行数据库的重启:
1、Linux下以Oracle帐户进入Linux系统。
2、执行以下命令查看数据库监听器的状况:
lsnrctl status
3、执行以下命令停止数据库监听器运行:
lsnrctl stop
4、执行以下命令进入SQLPlus:
sqlplus /nolog
conn /as sysdba
shutdown immediate
5、执行以下命令退出SQLPlus:
Exit
6、启动,查看数据库监听器:
lsnrctl start
lsnrctl status
7、启动Oracle数据库:
sqlplus /nolog
conn /as sysdba
startup
window下进入sqlplus 命令:sqlplus / as sysdba
Linux下进入sqlplus 命令:sqlplus “/as sysdba”