datafile ----转csdn之ppp_10001
原文地址:http://blog.csdn.net/ppp_10001/article/details/4688848
数据文件(DATAFILE)是用于存储数据库中的数据的操作系统中的文件。系统数据、数据字典数据、临时数据、撤销数据、索引数据、应用程序表中存储的数据等都是物理的存储在数据文件中。表空间中不能没有数据文件,创建表空间必然创建数据文件,而一个数据文件却可以单独创建并隶属于一个表空间,尤其是可以不依赖于表空间而单独对数据文件进行管理。
一、数据文件概述
数据文件是ORACLE三类文件中占用磁盘空间最大的一类文件。每个ORACLE数据库都有一个或多个数据文件。
ORACLE在存取数据时,首先在内存结构中的SGA区的数据高速缓存区中查找,如果要存取的数据不在数据高速缓冲区中,才会从相应的数据文件中读取数据,并将其存储在数据高速缓冲区中,以便使用,否则并不读取数据文件。当修改或插入新数据时,也是先在数据高速缓冲区中进行操作,然后当满足一定条件时,如果数据高速缓冲区中脏缓存快达到一定数量,再由DBWn后台进程决定如何将其写入到相应的数据文件中。
DBA在创建数据文件时,必须指明该数据文件属于哪个表空间。但又可以单独管理数据文件。
一个数据文件只能属于一个表空间,一个表空间可以有几个数据文件。一个表空间只能属于一个数据库,一个数据库可以有几个表空间。
DBA可以随时修改已有数据文件的大小、名称或位置。数据文件的大小实际上表示该数据文件在磁盘上的可用空间。数据文件被写满之后,就不能再向其中写入数据了,也就不能向表空间写数据了。DBA必须及时的增加新的可用空间,如给该表空间增加新的空白数据文件,或使数据文件自动扩展空间。对于新创建的表空间及其数据文件,并没有数据,但存入数据后就会占用可用空间。数据文件被写满后,就不能再向其中写入数据了,也就不能向表空间写数据了。
ORALE为每个数据文件指定了2个关联的文件号:一个是绝对文件号,一个是相对文件号。
绝对文件号(ABSOLUTE FILE NUMBER):在数据库中唯一的标识一个数据文件。在较早的ORACLE版本中被简称为"文件号"。
相对文件号(RELATIVE FILE NUMBER):在表空间中唯一的标识一个数据文件。
二、管理数据文件的准则
创建数据文件是为了将其放入表空间以便存取数据,所以,数据文件与表空间之间的关系、对表空间的准则都影响到管理数据文件的准则,主要包括数据文件的数量、大小、位置等方面内容。
(一)确定数据文件的大小和数量
一个数据库至少需要拥有一个数据文件,以供SYSTEM表空间使用。
为其他非系统表空间安排数据文件时,需要考虑:
1.初始化参数DB_FILES指定了在SGA区中能够保存的数据文件信息的最大数量,也就是一个例程所能支持的数据文件的最大数量。DB_FILES是一个静态参数,虽然能够在例程运行过程中修改,但是要到下一次启动例程实例时修改才会生效;
2.操作系统中一个进程能够同时打开的文件数量是有限的,这个限制值的大小取决与操作系统本身。当达到操作系统打开文件的限度时,就不能再创建数据文件了。
3.没新建一个数据文件,都会在数据库的控制文件中添加一条记录。如果在使用CREATE DATABASE或CREATE CONTROLFILE语句创建数据库或控制文件时,指定了MAXDATAFILES子句,那么在控制文件中最多只能保存MAXDATAFILES条数据文件的记录(MAXDATAFILES参数的默认值是100),但是数据库所能拥有的数据文件的最大值仍然是由DB_FILES参数指定的,如果MAXDATAFILES参数小于DB_FILES参数,ORACLE会自动对控制文件进行扩展,以便容纳更多的数据文件记录。
4.为了进行模块化的管理,表空间及其数据文件个数一般是与应用程序的个数相对应的,所以数据文件的个数也间接的受应用程序个数的限制。
(二)合理的放置数据文件
1.将并发访问的数据文件分散放置。
2.将数据文件与重做日志文件分散放置。如果数据文件和重做日志文件保存在同一个硬盘中,则当这个硬盘损坏时,数据库中的数据将永久性的丢失。
3.要考虑数据文件本身的大小及其增长情况,并结合磁盘的剩余空间的大小,合理的放置数据文件。
三、创建数据文件
创建数据文件实际上就是向表空间中添加数据文件。当创建表空间时,要先估算一下所有数据库对象可能总共有多大,并在多个设备上创建足够的数据文件,这样做就能确保数据被均匀的分散在所有设备上。随后,如果需要,可以创建额外的数据文件并将他恩添加到相应的表空间中,以增加分配给该表空间的磁盘空间的总量,并因此增加数据库的空间。
CREATE TABLESPACE 创建一个表空间和组成它的数据文件
CREATE TEMPRARY TABLESPACE 创建一个临时表空间和组成它的临时文件
ALTER TABLESPACE...ADD DATAFILE 创建一个数据文件,并将其添加到(永久)表空间
ALTER TABLESPACE...ADD TEMPFILE 创建一个临时文件,并将其添加到临时表空间
CREATE DATABASE 创建一个数据库及其和SYSTEM表空间关联的数据文件
(一)在创建表空间时创建数据文件
在创建表空间时,通常要先估计表空间中要存储的数据库对象的大小,了解磁盘的个数及其剩余空间的情况,然后为它创建若干个数据文件。
例1:
创建一个mytbs01表空间,并创建一个大小为2M的数据文件mytbs01.dbf.
CREATE TABLESPACE mytbs01 DATAFILE 'd:/mytbs01.dbf' SIZE 2M;
如果在数据文件子句中没有指定文件的路径,ORACLE将在默认的路径中创建这些数据文件,这取决于操作系统。
在指定的路径中有同名的操作系统文件,则需要在数据文件子句中使用REUSE选项。如果数据库中有同名的表空间,则必须先删除该表空间才行。
ALTER TABLESPACE mytbso1 OFFLINE;------表空间脱机
DROP TABLESPACE mytbs01 INCLUDING CONTENTS;------删除表空间
CREATE TABLESPACE mytbs01 DATAFILE 'e:/mytbs01.dbf' SIZE 2M REUSE;------使用REUSE选项,覆盖同名的数据文件。
例2:
创建一个mytmptbs01临时表空间,并创建一个大小为3买的临时文件mytmptbs01.dbf。
CRETE TEMPRARY TABLESPACE mytmptbs01 TEMPFILE 'e:/mytmptbs01.dbf' SIZE 3M UNIFORM SIZE 64K;
(二)向表空间添加数据文件
要为表空间添加新的数据文件,可以使用ALTER TABLESPACE...ADD DATAFILE语句。执行该语句的用户必须具有ALTER TABLESPACE系统权限。
例1:
向mytbs01表空间添加一个大小为3M的新数据文件。
ALTER TABLESPACE mytbs01 ADD DATAFILE 'e:/mytbs01_2.dbf' SIZE 3M;
与普通表空间不同,如果要为临时表空间添加新的临时数据文件,必须使用ALTER TABLESPACE...ADD TEMPFILE语句。
例2:
向mytmptbs01临时表空间添加一个大小为4M的新临时文件。
ALTER TABLESPACE mytmptbs01 ADD TEMPFILE 'e:/mytmptbs01_2.dbf' SIZE 4M;
如果向(永久)表空间添加临时文件,或者向临时表空间添加数据文件就会有错误提示。
(三)查询新创建的数据文件信息
新创建的数据文件的信息不仅会被记录到数据字典中,还会被记录到控制文件中,以便在打开数据库时使用。
例1:查询dba_data_files和dba_temp_files视图。
SELECT tablespace_name,tbs_name,file_name,blocks,bytes/1024/1024 Mbytes,autoextensible auto,maxbytes/1024/1024 maxMbytes FROM dba_data_files WHERE tablespace_name LIKE 'MY%' UNION SELECT tablespace_name,tbs_name,file_name,blocks,bytes/1024/1024 Mbytes,autoextensible auto,maxbytes/1024/1024 maxMbytes FROM dba_temp_files WHERE tablespace_name LIKE 'MY%'
四、改变数据文件的大小
当表空间或数据文件的空间被用完之后,就不能再向其中插入新的数据了。除了向表空间添加新的数据文件之外,还可以增加数据文件的大小。
改变数据文件的大小一共有2中方式:
1.设置数据文件为自动扩展,但最好要同时限定其最大大小,以免出现磁盘空间的管理问题。
2.手动改变数据文件的大小。
(一)数据文件的空间大小及其局限性
不能创建没有指定空间大小的表空间或数据文件,也不能创建小于一个最小值的数据文件。
即使在创建表空间或数据文件时指定了空间大小,也会有用完的时候。
(二)设置数据文件为自动扩展
在创建数据文件时或者在数据文件创建之后,都可以将数据文件设置为自动扩展方式。如果数据文件是自动扩展的,当表空间被填满后,当需要更多的存储空间时,ORACLE会以指定的方式自动增大数据文件。使用自动扩展的优点如下:
1.DBA无需过多的干涉数据库物理存储空间的分配问题。
2.可以确保应用程序不会因为分不到存储空间而导致错误。
在使用以下语句创建或修改数据文件时,都可以显示的指定AUTOEXTEND ON子句来将数据文件设置为自动扩展方式。CREATE DATABASE,CREATE TABLESPACE,ALTER TABLESPACE。
例1:
将上述mtbs02表空间的数据文件mytbs02_1.dbf设置为自动扩展方式,就可以再次向其中添加更多的记录。
ALTER DATABASE DATAFILE 'e:/mytbs02_1.dbf' AUTOEXTEND ON NEXT 1M MAXSIZE 5M;
例2:
取消以后数据文件的自动扩展方式,同样使用ALTER DATABASE语句。
ALTER DATABASE DATAFILE 'e:/mytbs02_1.dbf' AUTOEXTEND OFF;
例3:
在创建表空间mytbs03时将其数据文件mytbs03_1.dbf设置为自动扩展方式。
CREATE TABLESPACE mytbs03 ADD DATAFILE 'e:/mytbs03_1.dbf' SIZE 2M AUTOEXTEND ON NEXT 3M MAXSIZE 8M;
例4:
在表空间mytbs03创建之后再添加一个新的自动扩展方式的数据文件mytbs03_2.dbf.
ALTER TABLESPACE mytbs03 ADD DATAFILE 'd:/mytbs03_2.dbf' SIZE 4M AUTOEXTEND ON NEXT 4M MAXSIZE 11M;
(三)手动改变数据文件的大小
在手动改变数据文件的大小之前,应先查看各个数据文件的大小、占用量和占用率等信息,以便了解哪些数据文件的大仙应该改变。
除了自动扩展方式外,DBA还可以通过手动方式来增加或减少已有数据文件的大小。手动方式改变数据文件的大小需要使用带有RESIZE子句的ALTER DATABASE语句。
例1:
将数据文件mytbs03_1.dbf从现在的2M增大为3M。
ALTER DATABASE DATAFILE 'e:/mytbs03_1.dbf' RESIZE 3M;
利用RESIZE子句也可以缩小数据文件,但必须保证缩小后的数据文件足以容纳其中现有的数据。
五、在ARCHIVELOG模式中修改数据文件的可用性
可以通过修改数据文件和临时文件的联机、脱机状态来改变这些文件的可用性。因为在NOARCHIVELOG模式中使数据文件脱机,很可能导致丢失数据文件,所以一般是在ARCHIVELOG模式中修改数据文件的可用性。
处于脱机状态的数据文件对于数据库来说是不可用的,知道他们被恢复为联机状态为止。将数据文件设置为联机状态或脱机状态时,不会影响到表空间的状态。但是反过来,将表空间设置为联机或脱机状态时,属于该表空间的所有数据文件都会同时进入联机或脱机状态。
如果ORACLE在写入某个数据文件时发生错误,ORACLE会自动将该数据文件设置为脱机状态,并且记录在警告文件中。DBA在排除了故障之后,需要以手动的方式重新将该数据文件恢复为联机状态。
一个只读表空间中的数据文件可以被单独的脱机或联机。在一个只读表空间中使用一个数据文件联机,将使该文件可读,但仍不能对该文件写,除非包括他的表空间返回到读写状态。
要单独的改变数据文件的可用性,只能使用ALTER DATABASE语句,用户必须具有ALTER DATABASE系统权限,如果要改变属于某个表空间的所有数据文件的可用性,则可以使用ALTER TABLESPACE语句,用户必须具有ALTER TABLESPACE或MANAGE TABLESPACE系统权限。
可以使系统表空间以外的任何表空间中的所有数据文件脱机,但不能使系统表空间中的数据文件脱机。脱机后的数据文件仍然还留在相应的表空间中,以便在该表空间中重新联机。
(一)将数据库设置成ARCHIVELOG模式
如果要将一个数据库从NOARCHIVELOG模式更改为ARCHIVELOG模式,其步骤是:
1.以具有SYSDBA权限的SYS用户连接到数据库,确认数据库的归档模式。ARCHIVE LOG LIST;
2.关闭数据库,然后将数据库启动到MOUNT状态。
3.将归档模式改为NOARCHIVELOG模式。ALTER DATABASE ARCHIVELOG;
4.将数据库打开,并确认数据库的归档模式。
(二)修改数据文件的可用性
当数据库处于ARCHIVELOG模式时,要使一个表空间中的所有数据文件脱机,只需要使用ALTER TABLESPACE tablespace_name DATAFILE OFFLINE语句,但重新联机之前需要进行介质恢复。
当数据库处于ARCHIVELOG模式时,要使一个临时表空间中的所有临时文件脱机或联机,只需要使用ALTER TABLESPACE tablespace_name TEMPFILE OFFLINE/ONLINE语句。
当数据库处于ARCHIVELOG模式时,要使一个单独的数据文件脱机,只需要使用ALTER DATABASE DATAFILE datafile_name OFFLINE语句,脱节之后就不能使用该数据文件了,并且重新联机之前需要进行介质恢复。
可以用RECOVER DATAFILE语句进行数据文件的介质恢复,并且要对表空间中的所有数据文件进行了介质恢复之后,才能使用ALTER TABLESPACE tablespace_name DATAFILE ONLINE语句将表空间中的所有数据文件重新联机。
可以使用RECOVER DATAFILE语句进行数据文件的介质恢复,然后使用ALTER DATABASE DATAFILE datafile_name ONLINE语句使该数据文件重新联机,联机之后就可以使用该数据文件了。
六、移动数据文件
在创建数据文件之后,还可以移动数据文件,即改变它们的位置或名称。
通过移动或重命名数据文件,可以在不改变数据库逻辑结构的情况下,对数据库的物理存储结构进行调整,在磁盘上执行空间调整和I/O负载平衡;还可以将一个大小增长的很快的数据文件移动到一个可用磁盘空间比较多的磁盘上;可以将一个不符合命名习惯的数据文件重新命名。
当改变数据文件的位置和名称时,ORACLE只是在控制文件和数据字典中改变了数据文件的指针,并没有物理的创建新的数据文件,也没有重定位和重命名任何操作系统文件。DBA必须自己在操作系统层复制文件,并重定位或重命名数据文件。
在对数据库的物理结构进行任何操作之前都要对数据库进行一次完全备份,这样即使修改操作失败,都还可以通过使用备份来将数据库恢复到初始状态。此外,在修改完成之后,也需要立即对数据库的控制文件进行备份,以记录下修改后的数据库结构。
可以一次移动一个或多个表空间中的一个或多个数据文件,但根据数据文件所处的表空间不同,有的表空间可以被脱机,而有的表空间不能被脱机(系统表空间),所以在不同的数据库状态下移动数据文件。
1.要改变的数据文件属于同一个表空间,或要在数据库处于OPEN状态下移动数据文件,就应该使用ALTER TABLESPACE RENAME DATAFILE语句进行操作,完成这项操作需要具有ALTER TABLESPACE系统权限。
2.要改变的数据文件分别属于多个表空间,或要在数据库处于MOUNT状态下移动数据文件,就应该使用ALTER DATABASE RENAME FILE语句进行操作,完成这项操作需要具有ALTER DATABASE系统权限。
(一)在OPEN状态下移动数据文件
当数据库处于OPEN状态时,即可以使用ALTER TABLESPAEC RENAME DATAFILE语句,也可以使用ALTER DATABASE RENAME FILE语句来移动数据文件。但ALTER TABLESPACE RENAME DATAFILE语句只能用在数据库处于OPEN状态时使用,并且需要数据文件所在的表空间处于OFFLINE状态。因为SYSTEM和SYSAUX表空间不能被脱机,所以ALTER TABLESPACE RENAME DATAFILE语句就不能用于移动这两个表空间中的数据文件。
在OPEN状态下移动数据文件,就不用为了移动数据文件而关闭或停止使用数据库了,但这种方法只能用于非系统表空间。
(1)移动同一个表空间的数据文件
假设要将mytbs01表空间的两个数据文件e:/mytbs01_1.dbf和e:/mytbs01_2.dbf分别移动到e:/share/mytbs01_1.dbf和e:/share/mytbs01_2.dbf。
使用ALTER TABLESPACE RENAME DATAFILE语句来移动同一个表空间的数据文件的方法:
1.为了确保数据文件的一致性,必须使表空间脱机。ALTER TABLESPACE tablespace_name OFFLINE;
2.移动数据文件。表空间脱机之后,其中的数据文件的内容将不会发生改变,要使用操作系统命令来移动数据文件。这里只移动了位置,并没有更改文件名。HOST MOVE e:/mytbs01_1.dbf e:/share/mytbs01.dbf;HOST MOVE e:/mytbs01_2.dbf e:/share/mytbs01_2.dbf;
3.执行ALTER TABLESPACE RENAME DATAFILE语句。物理移动数据文件后,还必须执行ALTER TABLESPACE RENAME DATAFILE语句来进行逻辑修改,即修改数据字典中的信息,尤其是控制文件中的数据文件信息。该语句的形式就是将表空间中原来的文件名逐个对应的更名为新的文件名。ALTER TABLESPACE RENAME DATAFILE 'e:/mytbs01_1.dbf','e:/mytbs01_2.dbf' TO 'e:/share/mytbs01_1.dbf','e:/share/mytbs01_2.dbf';
4.使表空间联机。ALTER TABLESPACE tablespace_name ONLINE;
5.备份控制文件或数据库。ALTER DATABASE BACKUP CONTROLFILE TO 'e:/control.bkp';ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
由于ALTER TABLESPACE RENAME DATAFILE语句要指定一个表空间。所以它一次只能移动同一个表空间的数据文件。
(2)移动多个表空间的数据文件
假设要将mytbs02表空间的唯一数据文件e:/mytbs02_1.dbf和mytbs03表空间的其中一个数据文件e:/mytbs03.dbf分别移动到e:/share/mytbs02_01.dbf和e:/share/mytbs03_02.dbf。
1.脱机表空间。ATLER TABLESPACE tablespace_name_1 OFFLINE;ALTER TABLESPACE tablespace_name_2 OFFLINE;
2.移动数据文件。HOST MOVE e:/mytbs02_1.dbf e:/share/mytbs02_01.dbf;HOST MOVE e:/mytbs03_2.dbf e:/share/mytbs03_02.dbf;
3.执行ALTER DATABASE RENAME FILE语句。ALTER DATABASE RENAME FILE 'e:/mytbs02_1.dbf','e:/mytbs03_2.dbf' TO 'e:/share/mytbs02_01.dbf','e:/share/mytbs03_02.dbf';
4.使表空间联机。ALTER TABLESPACE tablespace_name_1 ONLINE;ALTER TABLESPACE tablespace_name_2 ONLINE;
5.备份控制文件和数据库。ALTER DATABASE BACKUP CONTROLFILE TO 'e:/control.bkp';ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
由于ALTER DATABASE RENAME FILE语句是针对整个数据库的数据文件的,所以它一次能够移动多个表空间的数据文件。
(二)在MOUNT状态下移动控制文件
因为系统表空间不能被脱机,所以为了移动这两个表空间中的数据文件,就只能在数据库处于MOUNT状态下,使用ALTER DATABASE RENAME FILE语句来移动其中的数据文件。
假设要将SYSTEM表空间中的唯一数据文件c:/oracle/product/10.1.0/oradata/test/system01.dbf移动到e:/share/system01.dbf,使用ALTER DATABASE RENAME FILE语句来移动数据文件的方法:
1.关闭数据库。SHUTDOWN IMMEDIATE;STARTUP MOUNT;
2.移动数据文件。HOST MOVE c:/oracle/product/10.1.0/oradata/test/system01.dbf e:/share/system01.dbf;
3.执行ALTER DATABASE RENAME FILE语句。物理移动后,还必须执行ALTER DATABASE RENAME FILE语句来进行逻辑修改,即修改数据字典中的信息,尤其是控制文件中的数据文件信息。ALTER DATABASE RENAME FILE 'c:/oracle/product/10.1.0/oradata/test/system01.dbf' TO 'e:/share/system01.dbf';
4.将数据库启动到OPEN状态。ALTER DATABASE OPEN;
5.备份控制文件或数据库。ALTER DATABASE BACKUP CONTROLFILE TO 'e:/controlfile.bkp';ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
(三)将只读表空间中的数据文件移动到只读介质上
将表空间设置为只读状态,可以防止对数据文件进行写操作,从而减少备份和恢复操作。另外,ORACLE的服务进程不会更改只读表空间中的数据文件,所以只读表空间中的数据文件可以被移动到只读介质中,如CD-ROM或WORM设备上。创建只读表空间,并将数据文件移动到只读介质上,可以创建一个保存和查询历史数据的环境。
(1)在WORM设备上创建只读表空间
WORM(Write Once-Read Many)设备是指类似于CD-ROM驱动器的设备。这些设备中的存储介质只能写入一次,但可以被多次读取。WORM是存储只读表空间的理想设备。
在WORM设备上创建一个制度表空间的基本步骤是:
1.在磁盘中创建一个读写表空间,然后将不再需要更改的历史记录等只读数据移动到该表空间中,如创建表,然后导入数据。
2.将表空间设置成只读状态。此时会在该表空间的所有数据文件上启动一个检查点(CHECKPOINT)。
3.在操作系统中,将该只读表空间中的所有数据文件复制或刻录到只读介质上。
4.将该表空间进一步设置为脱机状态。
5.在数据库中,执行ALTER DATABASE RENAME FILE语句,将该只读表空间中所有的、原来的文件名逐个对应的移动或更名为只读介质上的新数据文件名。
6.将该表空间恢复设置为联机状态。
(2)只读表空间中的数据文件的延迟打开
ORACLE会在启动例程、加载数据库时读取控制文件中的信息,以便检查各个联机表空间中的各个数据文件是否可用。如果ORACLE无法找到并打开某个数据文件,则无法打开数据库,即启动数据库的动作就会失败。
如果某个只读表空间中的数据文件被存放在WORM设备中,在数据库启动它们很可能并不可用,如存储数据文件的关盘还没有放入驱动器中。因此,最后可以在启动数据库时不对该只读表空间的这些数据文件进行可用性检查。这可以通过将初始化参数READ_ONLY_OPEN_DELAYED设置成TRUE来实现。这样一来,ORACLE知道第一次访问该只读表空间时,才检查其中的这些数据文件的可用性,并打开他们。这种方法被称为数据文件的“延迟打开”。
采用“延迟打开”方法之后,在启动数据库时,即使这些数据文件暂时无法存放,也不会导致启动数据库失败。
七、删除数据文件
可以删除不再使用的数据文件、临时文件。
(一)删除表空间中的所有数据文件
当表空间中的内容不再需要时,就可以将其删除。ORACLE数据库中的任何表空间,除系统表空间外,都可以被删除。
不能删除包含任何活动端的表空间。如果表空间中一个表当前正在被使用,或者表空间包含一个活动的回退段、撤销段,就不能删除该表空间。为了简单,应该使表空间在被删除之前脱机。
要删除一个表空间,使用DROP TABLESPACE tablespace_name;语句。用户必须拥有DROP TABLESPACE系统权限才能删除一个表空间。
例:
删除一个临时表空间。
ALTER TABLESPACE mytmptbs01 TEMPFILE OFFLINE;
DROP TABLESPACE mytmptbs01;
例:
要删除一个非空的表空间,就要使用INCLUDING CONTENTS选项,否则会有错误提示。
ALTER TABLESPACE tablespace_name OFFLINE;
DROP TABLESPACE mytbs02 INCLUDING CONTENTS;
上面的语句只会从数据字典、控制文件中删除表空间信息,而与其相关的数据文件仍然存在与磁盘上。但是,当表空间一旦被删除,无论它所包括的数据文件是否被删除,这些数据文件都会时区作用。
从ORACLE 9I开始,在删除表空间的同时还可以级联的删除与其相关的数据文件。如果在ORACLE删除表空间的同时,没有只是它删除数据文件,它就必须在以后使用合适的操作系统命令来删除他们。
例:
要删除一个表空间的同时删除与他相关的数据文件。
ALTER TABLESPACE tablespace_name OFFLINE;
DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;
(二)只删除一个数据文件
假如表空间中的某个数据文件不再需要了,可以只删除该数据文件。但是,删除数据文后,其中保存的数据也被删除了,可能会影响到表空间中所保存的数据,所以在删除之前需要考虑该数据文件的内容是否确实没用了。
例:
删除一个数据文件,必须使用ALTER DATABASE DATAFILE...OFFLINE DROP语句。
ALTER DATABASE DATAFILE 'e:/share/mytbs01_2.dbf' OFFLINE DROP;
这条语句只是将该数据文件的状态编程了RECOVER了,而并没有从数据库中、更没有从磁盘中删除该数据文件。要使该数据文件可以被重新利用,需要进行介质恢复,并将该数据文件的状态改为ONLINE。
RECOVER DATAFILE 'e:/share/mytbs01_2.dbf';
ALTER