日期:2014-05-17  浏览次数:20738 次

关于oracle只读表空间问题请教
各位大虾好,小弟最近在学习oracle,现在看书过程中遇到些问题,在此请教一下
书上说将某个表空间设置为只读后,仍可对其中的表进行删除操作,因为删除操作只是对数据字典进行处理,而数据字典在system表空间中.在一个只读表空间中创建表却会失败,因为需要实际物理空间.

我想问的是:被删除表的描述信息是在system表空间中,但其所在数据文件不仍是在那个只读表空间中吗?
drop的操作只会删除数据字典而不会操作数据文件?


分不是很多,望见谅
Oracle

------解决方案--------------------
see: 我当时看到只读表空间能够删除数据的整理
我觉着Oracle只有多做几个练习才能掌握的更好.

http://blog.csdn.net/ziwen00/article/details/8498150





引用:
各位大虾好,小弟最近在学习oracle,现在看书过程中遇到些问题,在此请教一下
书上说将某个表空间设置为只读后,仍可对其中的表进行删除操作,因为删除操作只是对数据字典进行处理,而数据字典在system表空间中.在一个只读表空间中创建表却会失败,因为需要实际物理空间.

我想问的是:被删除表的描述信息是在system表空间中,但其所在数据文件不仍是在那个只读表空间中吗……

------解决方案--------------------
在设置表空间的过程中发现,只读表空间的表是可以DROP的,这个是为什么呢?


每个数据库在运行的时候,都会有一个ONLINE的表空间,表空间的名字是SYSTEM,SYSTEM表空间中保存了数据字典,以及PLSQL中的存储过程、触发器、函数、包等等数据库对象。当进行DDL进行数据库的删除操作的时候,是操作的SYSTEM表空间,ORACLE会在SYSTEM存储的数据字典中,将删除的表设置为DROP状态,等该表空间的状态变成READ WRITE状态的时候,就会真正的从数据库里面删除该表。
------解决方案--------------------
实际上,删除的时候,只是把数据字典中的记录做了更改,数据还是存储在原来的位置。
你可以实际测试下,做一个sql trace或者是10046事件跟踪,就可以清楚。