Oracle 数据文件转移 当存放数据文件的存储空间不足之后,需要将部分数据文件转移到其他存储上,有一种方法是通过offline表空间来达到目的。 数据库处于open状态需求确定:1:确定需求操作步骤:1:停止监听或者重启数据库(目的是保证应用不连接数据库)2:设置表空间为read only 3:设置表空间为 offline状态4:复制数据文件到新的路径5:rename 转移数据文件6:设置表空间 online 状态7:设置表空间为 read write8:删除原路径中已经复制的数据文件注意:这里是转移的是应用表空间,对系统表空间system、undo表空间和temp表空间无法使用
确定需求表空间: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
停止监听(目的是保证应用不连接数据库) 停止监听或者重启数据之前需要和开发人员联系将所有应用先关闭,然后停止监。这样做是为了避免应用不断报错。[oracle@oracle10g ~]$ lsnrctl stop如果是rac的话,需要使用srvctl 命令停止监听[oracle@oracle10g /]$ ps -ef | grep orcl 查看是否有应用远程连接
设置表空间为read only SQL> alter tablespace db320 read only; 设置表空间只读模式select TABLESPACE_NAME ,STATUS from dba_tablespaces; 查看表空间是否设置成功
设置表空间为 offline状态SQL> alter tablespace db320 offline;SQL> select FILE_NAME,STATUS,ONLINE_STATUS from dba_data_files where tablespace_name='DB320';
复制数据文件到新的路径[oracle@oracle10g orcl]$ cp data01.dbf /oradata/orcl/[oracle@oracle10g orcl]$ cp data02.dbf /oradata/orcl/通过复制而不是通过移除mv的方式,是因为数据文件较大,在移除过程中可能会发生错误
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';
设置表空间 online 状态SQL> alter tablespace db320 online;SQL> select FILE_NAME,STATUS,ONLINE_STATUS from dba_data_files where tablespace_name='DB320'; 查看rename和online设置
设置表空间为 read writeSQL> alter tablespace db320 read write;Tablespace altered.SQL> select TABLESPACE_NAME ,STATUS from dba_tablespaces; 设置之后才看表空间是否可用,最好是重启数据库验证
删除原路径中已经复制的数据文件[oracle@oracle10g orcl]$ rm -rf data01.dbf[oracle@oracle10g orcl]$ rm -rf data02.dbf
举报/反馈