删除数据库的表,关键点不在删除的操作,而是在授权操作删除。
为什么要删除?谁让删除的?这些都要形成文字的相关内容,不然在生产系统中,如果你是最后操作的,那么板子只能打到你身上。
至于删除的语句很简单,最好用表所属于的用户登陆,然后drop table tablename;就可以了。
这样删除有一个好处,就是表在该用户的回收站(10g版本以及以后)中,如果想恢复还有办法。但是如果加了purge这个参数,那么你想恢复都没有办法了。(除非有备份)
oracle回收站的恢复方式:flashback table tablename to before drop;如果该用户没有flashback的权限,那么可以考虑以dba身份的用户登陆。
查看回收站的表,本用户登陆sqlplus连接,show recyclebin;
drop table tablename; 这样就可以删除表了。
例如:drop table scott.emp; 删除一个在scott用户下表名为emp的表。强烈建议一定要加用户名,不然删除了别的用户下的表就得不偿失了。
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.
删除表的时候一定要考虑清楚,表真的没有用了。不然后期恢复起来很麻烦的。
删除无任何数据对象的表空间:
首先使用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错误
drop table 表名 ;
10g以上版本可以如下:
drop table 表名 purge ; --加上purge删除的更彻底