oracle清理表空间的方法
删去空的表空间,可是不包括物理文件
droptablespacetablespace_name;
–删去非空表空间,可是不包括物理文件
droptablespacetablespace_nameincludingcontents;
–删去空表空间,包括物理文件
droptablespacetablespace_nameincludingdatafiles;
–删去非空表空间,包括物理文件
droptablespacetablespace_nameincludingcontentsanddatafiles;
–假如其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADECONSTRAINTS
droptablespacetablespace_nameincludingcontentsanddatafilesCASCADECONSTRAINTS;
以system用户登录,查找需求删去的用户:
–查找用户
select*fromdba_users;
–查找作业空间的途径
select*fromdba_data_files;
–删去用户
dropuser用户称号cascade;
–删去表空间
droptablespace表空间称号includingcontentsanddatafilescascadeconstraint;
例如:删去用户名成为ABC,表空间称号为ABC
–删去用户,及级联联系也删去掉
dropuserABCcascade;
–删去表空间,及对应的表空间文件也删去掉
droptablespaceABCincludingcontentsanddatafilescascadeconstraint;
删去无任何数据目标的表空间:
首先运用PL/SQL界面化东西,或许运用oracle自带的SQLPLUS东西,衔接需求删去的表空间的oracle数据局库。
承认当时用户是否有删去表空间的权限,假如没有droptablespace,请先用更高档的用户(如sys)给予授权或许直接用更高档的用户。
用droptablespacexxx,删去需求删去的表空间。
删去有任何数据目标的表空间
运用droptablespacexxxincludingcontentsanddatafiles;来删去表空间。
注意事项:
假如droptablespace语句中含有datafiles,那datafiles之前必须有contents关键字,否则会提示ora-01911过错
1、以system用户登录查找需求删去的用户(普通用户没有删去权限)
select*fromdba_users;
2、查询需求删去用户对应的表空间
select*fromdba_data_files;
3、删去用户和表空间
dropuserusernamecascade;
droptablespacetablespacenameincludingcontentsanddatafilescascadeconstraint;
在删去用户时可能会碰到无法删去当时衔接的用户,这是由于还有数据库衔接到该用户,有会话存在,需求先删去会话。
最暴力的做法是直接shutdown数据库,然后重启即可。。。
一般的操作是经过查询SessionID,手动杀掉会话再删去用户:
1)查询衔接情况:selectusername,sid,serial#fromv$session;
2)找到要删去用户的sid和serial并删去:altersystemkillsession’sid,serial’;
再履行删去用户的操作,假如仍是无法删去阐明还有衔接的会话,继续履行删去会话的操作。
———————
Oracle数据库中删去了表空间物理文件XXX.ora后导致用droptablespace删去表空间失利,解决方法如下:
用sqlplus/nolog指令进入oracle数据库履行如下指令:
sql>conn/assysdba;
sql>startup;(假如数据库已启动则不需求此指令)
sql>alterdatabasedatafile”/home/oracle/XXX.ora”offlinedrop;(/home/oracle/XXX.ora为表空间文件的物理途径)
sql>droptablespaceXXX;
履行完后,重启数据库即可。