Oracle中怎么删除用户和表空间,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Oracle 删除用户和表空间

Oracle 使用时间长了, 新增了许多user 和tablespace. 需要清理一下

对于单个user和tablespace 来说, 可以使用如下命令来完成。

步骤一: 删除user

dropuser××cascade

说明: 删除了user,只是删除了该user下的schema objects,是不会删除相应的tablespace的。

步骤二: 删除tablespace

DROPTABLESPACEtablespace_nameINCLUDINGCONTENTSANDDATAFILES;

但是,因为是供开发环境来使用的db, 需要清理的user 和 table space 很多。

思路:

Export出DB中所有的user和tablespace, 筛选出系统的和有用的tablespace,把有用的信息load到一张表中去。然后写例程循环,把不在有用表的tablespace删掉

1. select username,default_tablespace from dba_users;

2.

createtableMTUSEFULSPACE(IDNumber(4)NOTNULLPRIMARYKEY,USERNAMEvarchar2(30),TABLESPACENAMEvarchar2(60),OWNERNAMEvarchar2(30));

3.

declareicountnumber(2);tempspacevarchar2(60);beginforcurTablein(selectusernameasallusr,default_tablespaceasalltblspacefromdba_users)looptempspace:=curTable.alltblspace;dbms_output.put_line(tempspace);selectcount(TABLESPACENAME)intoicountfromMTUSEFULSPACEwhereTABLESPACENAME=tempspace;ificount=0thenDROPTABLESPACEtempspaceINCLUDINGCONTENTSANDDATAFILES;endif;commit;endloop;end;

执行后会报如下错误

ORA-06550:第10行,第5列:PLS-00103:出现符号"DROP"在需要下列之一时:begincasedeclareexitforgotoifloopmodnullpragmaraisereturnselectupdatewhilewith<anidentifier><adouble-quoteddelimited-identifier><abindvariable><<closecurrentdeletefetchlockinsertopenrollbacksavepointsetsqlexecutecommitforallmergepipe06550.00000-"line%s,column%s:\n%s"*Cause:UsuallyaPL/SQLcompilationerror.*Action:

好像是被锁了。。

没办法,例程不能写,就只能组出语句执行了。

把需要删除的user, tablespace 导出到Excel. 使用CONCATENATE 组出SQL.

贴到SQLdevelop 批量执行。

整个删除会比较耗时间, 100多个user. 用了12个小时左右。

如要找datafile的具体位置,可以使用

selectt1.name,t2.namefromv$tablespacet1,v$datafilet2wheret1.ts#=t2.ts#;

SQL code

--删除空的表空间,但是不包含物理文件

droptablespacetablespace_name;

--删除非空表空间,但是不包含物理文件

droptablespacetablespace_nameincludingcontents;

--删除空表空间,包含物理文件

droptablespacetablespace_nameincludingdatafiles;

--删除非空表空间,包含物理文件

droptablespacetablespace_nameincludingcontentsanddatafiles;

--如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS

droptablespacetablespace_nameincludingcontentsanddatafilesCASCADECONSTRAINTS;

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。