首页 > 数据库 > Oracle > ORACLE笔记十一
表空间管理策略
在逻辑上,数据库由多个表空间组成。DBA通过创建表空间库数据库建立存储空间,并且将各种类型的应用数据分享存放,在数据库运行过程中,DBA还应根据需要对表空间进行维护,包括改变表空间的可用性、调整表空间的存储管理方式、库用户分配表空间配额等。
每个数据库在创建时都会自动建立SYSTEM表空间。ORACLE建议仅在SYSTEM表空间中存储数据字典等ORACLE自身对象和数据,而将所有的用户对象和数据都保存在其他的表空间中,因此需要为数据库创建其他的非SYSTEM表空间。
改变表空间的可用性
在多表空间数据库中,DBA通过将某个表空间设置为脱机状态,可以使数据库的某个部分暂时无法被用户访问。脱机状态就是离线状态,先设置成脱机状态,再删除表空间。
如果在将表空间切换成脱机状态时,表空间所有的数据文件都处于可用状态,那么ORACLE可以将与该表空间相关的所有脏缓存块都写入数据文件中,因而在恢复成联机状态时不需要进行数据库恢复。但是如果在切换时,表空间的某个数据文件由于发生了写错误而处于不可用状态,导致表空间的部分脏数据块无法写入数据文件,因此在恢复库联机状态时需要进行数据库恢复。
如果数据库运行在不归档模式下,由于无法保留恢复表空间的所需的重做日志,因此不能将表空间以立即方式切换到脱机状态。
将表空间设置成脱机状态之后,在SGA区中有可能会继续产生属于该表空间的脏缓存块(比如,某个事务开始于表空间进入脱机状态之前,结束于表空间进入脱机状态之后,并且对这个表空间中的数据进行了修改),ORACLE将把这些脏缓存块以回退信息的形式记录在位于SYSTEM表空间中的延迟回退段中。在表空间恢复成联机状态时,ORACLE会利用延迟回退段中的信息来恢复相应的修改操作。
恢复表空间成联机状态
在数据库处于打开状态时,DBA可以将脱机的表空间重新恢复库联机状态。在表空间恢复成联机状态之后,用户可以重新访问其中的数据。
删除表空间
如果表空间和其中保存的数据不再需要使用,可以从数据库中删除这个表空间。除了SYSTEM表空间外,数据库中的任何表空间都可以删除。
一个表空间一旦被删除,其中存储的数据将永久性丢失。因此,在删除表空间之前,确认其中的数据的确不再需要使用。此外,DBA最好在删除表空间之前和删除表空间之后对数据库进行完全备份。
在删除表空间时,ORACLE仅仅是在控制文件和数据字典中删除与表空间和数据文件相关的信息,默认情况下ORACLE并不会在操作系统中删除相应的数据文件。因此,在成功执行删除表空间的操作后,需要手工删除操作系统中的数据文件。
如果要删除的表空间中包含有活动的段,比如表空间中的某个表正被用户使用,或者表空间中包含有一个活动回退段,将不能删除这个表空间,DBA可以先将表空间置于脱机状态,然后再将其删除。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/183680/viewspace-790314/ ,如需转载,请注明出处,否则将追究法律责任。