在论坛上看到一个经常遇到的问题,移动数据文件,收录一下,以后用得到:
有两种方法可以更改ORACLE数据文件的名字,联机方法与脱机方法。
一:脱机(可以移动任何表空间中的数据文件、日志文件,命令为alter database rename file)
Because the SYSTEM tablespace cannot be taken offline, you must use this method to move data files in the SYSTEM tablespace.
具体步骤为
1:$sqlplus “/ as sysdba”
SQL>shutdown
2:$mv or move (使用操作系统命令改名字)
3:$sqlplus “/ as sysdba”
SQL>startup mount
SQL>alter database rename file 'xxxxx' to 'xxxxx'
(注意在alter open之前不要退出)
4:SQL>alter database open;
二:联机(不可移动system表空间,回滚段和临时表空间中的数据文件,命令为alter tablespace )
The following alter tablespace command is applied only to data files in a non-SYSTEM tablespace that does not contain active rollback or temporary segments:
具体步骤为:
1:$sqlplus “/ as sysdba”;
SQL>alter tablespace xxxx offline(如果非归档加drop);
2:$mv xxxxx xxxxx (用os命令移动数据文件)
3:SQL>alter tablespace xxxx rename datafile 'xxxx' to 'xxxxx';
4:SQL>alter tablespace xxxx online;
三:表空间OFFLINE和ONLINE可以考虑是否是归档模式,可是,移动数据文件 ,一定是在归档模式下进行:
例如:
1、ALTER DATABASE DATAFILE '/oracle/test/BULLETIN_INFO.dbf' OFFLINE;(归档模式)
2、SQL> ALTER DATABASE DATAFILE '/oracle/test/BULLETIN_INFO.dbf' OFFLINE;
ALTER DATABASE DATAFILE '/oracle/test/BULLETIN_INFO.dbf' OFFLINE
*
第 1 行出现错误:
ORA-01145: offline immediate disallowed unless media recovery enabled
ALTER DATABASE RENAME FILE '/oracle/test/BULLETIN_INFO.dbf'TO '/oracle/bulletin.dbf';
(非归档模式)
3、SQL> conn as sysdba
已连接。
SQL> ALTER DATABASE DATAFILE '/oracle/test/BULLETIN_INFO.dbf' OFFLINE;
数据库已更改。
SQL> ALTER DATABASE RENAME FILE '/oracle/test/BULLETIN_INFO.dbf'TO '/oracle/bull
etin.dbf';
数据库已更改。
归档模式下移动一个数据文件!