【原】alter database & alter tablespace

作者:david_zhang@sh 【转载时请以超链接形式标明文章】

链接:http://www.cnblogs.com/david-zhang-index/archive/2012/03/20/2408844.html?updated=1

DataFile脱机或联机两种方法:

① ALTER DATABASE 语句修改单独的DataFile

② ALTER TABLESPACE 语句修改所有的DataFile

1.在NOARCHIVELOG模式下使DataFile脱机

1 SQL>alter database datafile '/u01/app/oracle/oradata/oracle/users01.dbf' offline drop/offline for drop;

该命令不会删除数据文件,只是将数据文件的状态更改为recover,offline drop与offlline for drop没有区别,offline之后都需要进行recover才可以online,offline drop命令相当于把一个数据文件至于离线状态,并且需要恢复,数据文件的相关信息还会存在数据字典和控制文件中

2.在ARCHIVRLOG模式下使DataFile脱机

1 alter database datafile '/u01/app/oracle/oradata/oracle/users01.dbf' offline
example:

SQL>alter database datafile '/u01/app/oracle/oradata/oracle/users01.dbf' offline;

SQL>alter database datafile '/u01/app/oracle/oradata/oracle/users01.dbf' online;

3.修改TableSpace中所有DataFile

SQL>alter tablespace users offline;

当表空间脱机时,表空间里所有的数据文件将自动脱机,当表空间联机时,数据文件自动联机,无需介质恢复,数据文件脱机,但再联机时需要介质恢复,datafile被offline 时不会触发文件检查点,tablespace被offline时会触发文件检查点,当触发文件检查点时,数据文件scn号才会一致,这也是为什么online datafile需要media recovery而online tablespace不需要的原因。

注:修改某TableSpace中的所有数据文件,但是TableSpace本身的状态不改变

二 使用ALTER TABLESPACE命令删除表空间的数据文件

1 SQL>alter tablesapce users drop datafile '/u01/app/oracle/oradata/oracle/users01.dbf';

Oracle 10G R2开始,该语句可以来删除一个数据文件,并且相应的数据字典信息控制文件和磁盘上的文件也会清除,删除之后的原数据文件序列号可以重用

example:

SQL>select file_name,online_status from dba_data_files;

FILE_NAME                                                    ONLINE_STATUS

/u01/app/oracle/oradata/oracle/users01.dbf                   recovery
1 SQL>alter tablespace users drop datafile '/u01/app/oracle//oracle/users01.dbf';
2 
3 ERROR at line 14 
5 ORA-03263: cannot drop the first file of tablespace users

因为数据文件被offline,所以才报错

注:该语句只能是datafile online的时候才可以使用,如果说对应的数据文件已经是offline for drop,那么仅针对 dictionary managed tablespaces 可用

三 删除表空间

SQL> drop tablespace users including contents and datafiles; 
posted @ 2012-03-20 21:40  david_zhang@sh  阅读(1558)  评论(0编辑  收藏  举报