Oracle9i后的表空间管理改进:默认与临时表空间

1 下载量 147 浏览量 更新于2024-09-03 收藏 37KB DOC 举报
"Oracle数据库中的表空间管理在Oracle9i及后续版本中得到了显著的优化,旨在解决用户在SYSTEM表空间创建对象的问题。在Oracle9i之前,如果没有为新用户指定默认表空间,则默认为SYSTEM。Oracle9i引入了设置默认临时表空间的功能,以减少在SYSTEM中的误操作。而在Oracle Database 10g中,可以为用户指定一个默认表空间,允许在数据库创建后通过ALTER DATABASE命令进行更改。然而,更改默认表空间可能会影响到已有的用户设置,需要注意潜在的边界效应。若要查询数据库的默认永久表空间,可以使用DATABASE_PROPERTIES视图查询'DEFAULT_PERMANENT_TABLESPACE'属性。" 在Oracle数据库中,表空间管理是数据库存储结构的核心部分,用于组织和管理数据库的数据文件。在早期版本,如Oracle9i之前,如果在创建用户时不明确指定默认表空间,那么用户的所有对象(如表、索引等)都会默认存放在SYSTEM表空间中。这可能导致SYSTEM表空间的过度使用,影响性能和系统的整体稳定性。为了解决这个问题,Oracle9i引入了一个改进,即允许数据库管理员(DBA)为用户指定一个默认的临时表空间,这样用户在创建临时对象时就不会无意识地占用SYSTEM表空间。 在Oracle Database 10g中,这种改进进一步扩展到永久对象。DBA现在可以使用`ALTER DATABASE DEFAULT TABLESPACE <tsname>`命令为新创建的用户指定一个默认的永久表空间。这意味着,除非用户在创建对象时显式指定了其他表空间,否则所有新对象都将存储在这个默认表空间中。这一功能的灵活性使得在多节点环境中分配不同表空间成为可能,可以根据需要调整默认表空间。 然而,需要注意的是,当改变默认表空间时,已经存在的用户可能会受到影响。即使某个用户在创建时有显式的默认表空间设置,一旦数据库的默认表空间改变,该用户的新对象也会按照新的默认表空间存储。这种行为可能导致预期之外的结果,因此在进行此类更改时必须谨慎,并且充分理解其对现有用户和系统的影响。 为了确定当前数据库的默认永久表空间,DBA可以运行SQL查询,如下所示: ```sql SELECT property_value FROM database_properties WHERE property_name = 'DEFAULT_PERMANENT_TABLESPACE'; ``` 这个查询会返回当前设置的默认永久表空间的名称,这对于监控和管理表空间的使用至关重要。 总结来说,Oracle数据库通过不断优化表空间管理,提供了更灵活和安全的方式来控制用户对象的存储,以提高数据库的性能和可维护性。理解和正确应用这些管理策略对于有效的Oracle数据库运维至关重要。