Oracle数据库的数据文件(扩展名为DBF的文件)是用于保存数据库中数据的文件,系统数据、数据字典数据、临时数据、索引数据、应用数据等都物理地存储在数据文件中。用户对数据库中数据的操作,例如数据的插入、删除、修改和查询等,其本质都是对数据文件进行操作。所有数据文件占据空间的大小决定了数据库容量的大小。
在Oracle数据库中,为了提高系统运行效率,用户并不是直接对数据文件进行操作,而是由数据库进程将用户需要的数据先由数据文件读取到数据高速缓冲区缓存,然后再从数据高速缓冲区将数据返回给用户,这样可以提高系统的复用性,减少磁盘I/O。如果用户修改了数据高速缓冲区中的数据,在一定条件下由DBWR进程将脏数据写入数据文件。这种“先内存后外存”的方式极大地提高了系统的运行效率。
在Oracle数据库中,虽然数据文件依附于表空间而存在,但是可以对数据文件进行独立的管理,包括数据文件测创建、数据文件大小的修改、数据文件脱机与联机操作、数据文件名称与位置的改变、数据文件的删除以及数据文件信息查询等。
Oracle数据库中有一种特殊的数据文件,称为临时数据文件,属于数据库的临时表空间。临时数据文件中的内容是临时性的,在一定条件下自动释放。于临时文件相对应,其他数据文件都称为永久性数据文件。
在Oracle数据库中,数据文件是依附于表空间而存在的。一个表空间可以包含一个或多个数据文件,但一个数据文件只能从属于一个表空间。在逻辑上,数据库由表空间构成;在物理上,数据库由数据文件构成。
数据文件的管理准则主要包括合理设置数据文件的数量、数据文件的大小及数据文件的存储位置3个方面。
创建一个表空间时应该估计数据库对象所需空间的潜在大小,以确定数据文件的大小。在数据库运行过程中,可以根据需要向表空间添加新的数据文件或修改数据文件大小以扩展表空间。确定数据文件大小时,要结合考虑磁盘剩余空间大小及其使用情况。
由于对数据库的操作最终转换为对数据文件的操作,因此在数据库运行过程中对数据文件会进行频繁的读写操作。为了提高I/O效率,消除竞争,应该合理地分配数据文件的存储位置。
1)将需要并行访问的数据文件放置在不同的硬盘上,提高系统读写的效率。
2)将数据文件与控制文件。重做日志文件分散存储于不同的磁盘上,既可以提高数据库的运行效率,又可以减少数据库发生介质故障时的损毁程度。在数据库运行过程中,系统需要并行操作数据文件、控制文件和重做日志文件,将这些物理文件分散于不同的磁盘,可以实现并行操作,提高系统运行效率。
由于在Oracle数据库中,数据文件是依附于表空间而存在的,因此创建数据文件的过程实质上就是向表空间添加数据文件的过程。可以在创建数据库、创建表空间时创建数据文件,也可以在数据库运行与维护过程中为表空间添加数据文件。应该根据表空间要存储的数据库对象大小、磁盘个数及剩余空间等情况,决定数据文件的数量与大小。
在Oracle数据库中,随着数据库中数据容量的变化,可以调整数据文件的大小。改变数据文件大小的方法有两种,一种是设置数据文件的自动扩展方式,另一种是重新设定数据文件大小。
在Oracle数据库中,数据文件创建后可以手工修改数据文件的大小。如果数据库存储空间不足,可以通过增加数据文件大小的方式来解决,而不需要为数据库新建数据文件,这对于数据文件数量已经达到数据库极限数量的情况非常有效。如果数据文件空间有大量剩余,可以采用减小数据文件的方法回收存储空间,避免存储空间的浪费。手动改变数据文件大小的方法对大文件表空间的扩展更为有益,因为不能为大文件表空间添加新的数据文件。
数据文件创建后,可以改变它们的名称与位置。通过重命名或移动数据文件,可以在不改变数据库逻辑存储结构的情况下,对数据库的物理存储结构进行调整。
改变数据文件名称与位置的操作可以在表空间级别进行,也可以在数据库级别进行。在表空间级别进行是指改变数据文件名称与位置的操作只影响当前表空间的应用,不影响其他表空间的应用。在数据库级别进行是在数据库处于加载状态下进行的,此时数据库还没有打开,所有的应用都将停止。
可以使用下列语句删除表空间中指定的空的数据文件。
ALTER TABLESPACE......DROP DATAFILE:删除永久表空间中指定的空的数据文件。
ALTER TABLESPACE......DROP TEMPFILE:删除临时表空间中指定的空的临时数据文件。
所谓空的数据文件或空的临时数据文件是指为该文件分配的所有区都被回收。删除数据文件或临时数据文件的同事,将删除控制文件和数据字典中与该数据文件相关信息,同时将删除操作系统中对应的物理文件。
删除数据文件或临时数据文件时受到下列一些约束: