Oracle 数据文件转移
1、确定需求
表空间:db320
数据文件:
/u01/app/oracle/product/10.2.0/db_1/oradata/orcl/data01.dbf
/u01/app/oracle/product/10.2.0/db_1/oradata/orcl/data02.dbf
转移存储目录:
/oradata/orcl

1、停止监听(目的是保证应用不连接数据库)
停止监听或者重启数据之前需要和开发人员联系将所有应用先关闭,然后停止监。这样做是为了避免应用不断报错。
[oracle@oracle10g ~]$ lsnrctl stop
如果是rac的话,需要使用srvctl 命令停止监听
[oracle@oracle10g /]$ ps -ef | grep orcl 查看是否有应用远程连接


2、设置表空间为read only
SQL> alter tablespace db320 read only; 设置表空间只读模式
select TABLESPACE_NAME ,STATUS from dba_tablespaces; 查看表空间是否设置成功

3、设置表空间为 offline状态
SQL> alter tablespace db320 offline;
SQL> select FILE_NAME,STATUS,ONLINE_STATUS from dba_data_files where tablespace_name='DB320';

4、复制数据文件到新的路径
[oracle@oracle10g orcl]$ cp data01.dbf /oradata/orcl/
[oracle@oracle10g orcl]$ cp data02.dbf /oradata/orcl/
通过复制而不是通过移除mv的方式,是因为数据文件较大,在移除过程中可能会发生错误

5、rename 转移数据文件
SQL> alter tablespace db320 rename datafile '/u01/app/oracle/product/10.2.0/db_1/oradata/orcl/data01.dbf' to '/oradata/orcl/data01.dbf' ;
SQL> alter tablespace db320 rename datafile '/u01/app/oracle/product/10.2.0/db_1/oradata/orcl/data02.dbf' to '/oradata/orcl/data02.dbf';

6、设置表空间 online 状态
SQL> alter tablespace db320 online;
SQL> select FILE_NAME,STATUS,ONLINE_STATUS from dba_data_files where tablespace_name='DB320'; 查看rename和online设置

7、设置表空间为 read write
SQL> alter tablespace db320 read write;
Tablespace altered.
SQL> select TABLESPACE_NAME ,STATUS from dba_tablespaces;
设置之后才看表空间是否可用,最好是重启数据库验证

8、删除原路径中已经复制的数据文件
[oracle@oracle10g orcl]$ rm -rf data01.dbf
[oracle@oracle10g orcl]$ rm -rf data02.dbf
