Oracle删除用户对表空间的影响

草原上的狼 2014-06-06 09:54:44
项目中发现一个疑问。就是Oracle在创建用户的时候,如果用户使用的是自己创建的表空间来存放数据,那么Oracle在删除此用户的时候对应的此表空间中数据是否也一并删除? 但是实际测试发现用户删除了但是对应的表空间的数据却没有删除,因为表空间文件大小根本没变。这是为什么?我有一点自己的理解,但是对Oracle实现原理不是很了解所以不敢妄自发表意见,请各位高手谈谈各自的看法。
...全文
2871 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
草原上的狼 2015-03-27
  • 打赏
  • 举报
回复
谢谢大家,大致理解了。
sych888 2014-09-19
  • 打赏
  • 举报
回复
删除用户主要是删除用户相关的模式对象 如果你的一些表空间是这个用户独有的,那么可以进一步删除表空间,进而释放空间
不写代码的钦 2014-09-19
  • 打赏
  • 举报
回复
表空间和用户是多对多的关系。
yiyongle 2014-09-18
  • 打赏
  • 举报
回复
一个用户的数据可以存储在多个表空间里,一个表空间可以存储多个用户的数据,删除了用户只是删除了该用户下的schema objects,对表空间不会有影响。
小灰狼W 2014-06-06
  • 打赏
  • 举报
回复
楼上是对的。用户和表空间没有必然联系。删除一张表,一般情况下这张表会进入所属用户的回收站,如果是删除用户,数据会彻底消失,因为回收站随用户一起不见了。 当你创建一个表空间时,可以给对应的数据文件指定一个大小,系统会将磁盘空间以指定的格式初始化分配给数据文件,这时候数据文件中的空间并未被分配给segment(表和索引),同样的,当段被删除时,空间会被回收,但数据文件并不会自动收缩。也就是你说的表空间文件大小没变 这就有点像表中的高水位:当表中的记录被删除,对应的数据块中的空间即可用来插入新的数据,但即使整个数据块/盘区为空,也不会被释放出该表所在的段。形成了高水位
tomshenhao 2014-06-06
  • 打赏
  • 举报
回复
表空间和用户没有直接关系,你创建或者删除用户都不会影响表空间。 表空间只是一个容器,用来存放表,索引,存储过程等。
CT_LXL 2014-06-06
  • 打赏
  • 举报
回复
引用 楼主 wenhua110 的回复:
项目中发现一个疑问。就是Oracle在创建用户的时候,如果用户使用的是自己创建的表空间来存放数据,那么Oracle在删除此用户的时候对应的此表空间中数据是否也一并删除? 但是实际测试发现用户删除了但是对应的表空间的数据却没有删除,因为表空间文件大小根本没变。这是为什么?我有一点自己的理解,但是对Oracle实现原理不是很了解所以不敢妄自发表意见,请各位高手谈谈各自的看法。
删除用户不会删除表空间。比如你这个用户有很多数据在这个表空间里面,其他用户也共享这些数据,如果将表空间删除了数据也就没有了。还有就是如果删除用户就删除数据的话对这个数据库影响很大,数据库最大的作用其实是对数据的保护。
huangdh12 2014-06-06
  • 打赏
  • 举报
回复
删掉用户,对应的数据就失效了。 数据文件变成可用了。 但是大小是不会自动收缩的。

3,495

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧