数据库所在硬盘空间剩下的不多了,所以我删除了一些不需要的用户:
drop user B0901 cascade;
drop user B0902 cascade;
drop user B0903 cascade;但是删除用户后,空间一点变化都没有
这几个用户使用的TABLESPACE都是USERS现在我查系统中还有很多用户使用这个USERS表空间:
SQL> select username,default_tablespace from dba_users;USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
A0908 USERS
A0901 USERS
A0904 USERS
A0907 USERS
A0909 USERS
A0905 USERS
现在我的问题是,如何要释放已经删除用户所占用的磁盘空间,而不影响其他使用USERS表空间的用户?
drop user B0901 cascade;
drop user B0902 cascade;
drop user B0903 cascade;但是删除用户后,空间一点变化都没有
这几个用户使用的TABLESPACE都是USERS现在我查系统中还有很多用户使用这个USERS表空间:
SQL> select username,default_tablespace from dba_users;USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
A0908 USERS
A0901 USERS
A0904 USERS
A0907 USERS
A0909 USERS
A0905 USERS
现在我的问题是,如何要释放已经删除用户所占用的磁盘空间,而不影响其他使用USERS表空间的用户?
------------------------------ ------------------------------
MGMT_VIEW SYSTEM
SYS SYSTEM
DBSNMP SYSAUX
SYSMAN SYSAUX
SYSTEM SYSTEM
OUTLN SYSTEM
EXFSYS SYSAUX
DMSYS SYSAUX
WMSYS SYSAUX
ORDSYS SYSAUX
XDB SYSAUX
OLAPSYS SYSAUX
SI_INFORMTN_SCHEMA SYSAUX
ORDPLUGINS SYSAUX
MDSYS SYSAUX
CTXSYS SYSAUX
ANONYMOUS SYSAUX不是users的我刚刚都没有帖出来
你是想删除用户对应的表是吧,那你当初就不应该让这么多用户共用一个TABLESPACE。
使用:
select * from dba_objects t where t.owner = 'username'
查询出你要删除用户对应的OBJECT,然后DROP掉就OK了。
这样的理解是不对的,user即为schema。而对象是以schema为基础,进行存储的,这里drop掉用户,所以是会删除掉这个用户的对象的,所以你给的sql是会返回什么样的数据叻。 如果是你描述的这样的,oracle的实现也太考虑的不仔细了。那么下面回到我们的问题上来,为什么空间不会减少了,这里主要还是老的话题,tablespace的shrink的问题。 这里删除掉user和user里的对象,并不会shrink表的数据文件,要shrink数据文件,需要用其他的一些方法。可见
http://www.inthirties.com/thread-6-1-1.htmlhttp://blog.csdn.net/inthirties/archive/2009/09/09/4531986.aspx
如果不是,而只是释放用户数据在数据文件占用的空间,就按照zhangchu_63那样。
参考一下http://www.inthirties.com/thread-6-1-1.html http://blog.csdn.net/inthirties/archive/2009/09/09/4531986.aspx
如果zhangchu_63兄弟对USER和SCHEMA还不太清楚的话 可以看下下面这个文章http://blog.csdn.net/wh62592855/archive/2009/09/27/4599333.aspx
alter tablespace tablespace_name coalesce;
alter database datafile 'data_file_name' resize 100M;
1.升级到9205
2.禁止undo tablespace自动增长 -- 创建一个新的小空间的UNDO TABLESPACE
CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE '/opt/oracle/oradata/undotbs02.dbf' SIZE 100M REUSE AUTOEXTEND ON;
-- 设置新的表空间为系统UNDO_TABLESPACE
ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS2;
-- DROP 旧的表空间
alter system set undo_retention=0;
然后才能DROP:(需要等待一会)
DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES;
SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;
其实ORACLE我才刚刚起步。