表空间是在Oracle中可以使用的最大的逻辑存储结构,在数据库中建立的所有内容都被存储在表空间中。Oracle使用表空间将相关的逻辑结构组合在一起,表空间在物理上与数据文件相对应,每一个表空间由一个或多个数据文件组成,一个数据文件只可以属于一个表空间。这是逻辑与物理的统一。所以存储空间在物理上表现为数据文件,而在逻辑上表现为表空间。数据库管理员可以创建若干个表空间,也可以为表空间增加或删除数据文件。表空间是通过数据文件来扩大,表空间的大小等于构成该表空间的所有数据文件的大小之和。
由于表空间物理上对应了操作系统的一个或多个数据文件,因此在表空间中创建的对象在物理上可以有如下两种存储方式。
1.若表空间只对应一个数据文件,该表空间中所有对象都存储在这个数据文件中。
2.若表空间对应多个数据文件,Oracle可将对象存储在该表空间的任意一个数据文件中。事实上,Oracle可以将同一个对象的数据分布在表空间的多个数据文件中。
在创建数据库时,Oracle会自动创建一些默认的表空间,其中除了用于存储用户数据的普通表空间外,在一个数据库中还会存在3种类型的表空间: System表空间、撤销表空间、临时表空间。
1.System表空间
在创建数据库时自动创建System表空间,在SYSTEM表空间中保存有如下信息
a.在System表空间中存储数据库的数据字典和内部系统表基表。数据字典是一组保存数据库自身信息的内部系统表和视图。
b.在System表空间中存储所有PL/SQL程序的源代码和解析代码,包含存储过程、函数、包和触发器等。在需要保存大量PL/SQL程序的数据库中,应当设置足够大的SYSTEM表空间。
c.在System表空间中存储数据库对象(如视图、对象类型说明、同义词和序列)的定义。当在数据库中创建一个新的对象时,对象的实际数据可以存储在其他的表空间中,但对象的定义信息保存在System表空间中。
查看数据库中数据字典的信息:
select * from dict;
查看内部系统表的SQL: select * from V$fixed_view_definition;
2.撤销表空间
撤销表空间是特殊的表空间,它专门用来在自动撤销管理方式下存储撤销信息,即回退信息。当数据库进行更新、插入、删除等操作的时候,新的数据被更新到原来的数据文件中,而旧的数据就被放到撤销段中。如果数据需要回滚,那么可以从撤销段将数据再复制到数据文件中,来完成数据的回退。在系统恢复的时候,撤销段可以用来撤销没有被提交的数据,解决系统的一致性。
任何数据库用户都不能在撤销表空间中创建数据库对象(如表、索引等)。在撤销表空间中,存在大量的写入操作,而只有少量的读取操作。
数据库管理员可以为数据库创建多个撤销表空间,但是每个数据库实例最多只能使用一个撤销表空间。在使用DBCA创建数据库时,一般会自动建立一个默认的撤销表空间UNDOTBS.
3.临时表空间
在实例运行过程中,Oracle必须使用一些临时空间来保存SQL语句在执行过程中所产生的临时数据。在Oracle 11g 中,系统为所有数据库用户指定了一个专门的临时表空间TEMP .在使用DBCA创建数据库时,会自动建立默认的临时表空间TEMP;此外,在数据库已经建立后,也可以使用Create Temporary tablespace语句来创建临时表空间
在临时表空间中,同一个实例中的所有SQL语句的排序操作将共享使用一个排序段。排序段在执行第一条具有排序操作的SQL语句时被创建,在实例关闭时释放。
阅读(931) | 评论(0) | 转发(0) |