windows系统:1.alter tablespace xxx offline;
2.拷贝数据文件到F:
3.alter tablespace xxx rename datafile 'E:\xxx...' to 'F:\xxx...';
4.alter tablespace xxx online;linux系统:
与windows步骤相同

解决方案 »

  1.   

    如果是系统表空间或是包含活动回滚段的表空间就不能采用脱机的办法了必须事先把数据库置于mount的状态,
    用alter database rename datafile 'E:\xxx...' to 'F:\xxx...';
      

  2.   


    安全起见先作个exp.
    一定要正常关闭DB.
    然后启动到mount下作数据文件转移
      

  3.   

    比较安全的办法是:
    一、先冷备份数据库(shutdown immediate后)
    二、把数据文件COPY到F盘下
    三、重新生成控制文件(alter database backup controfile to trace)
    四、在D:\oracle\admin\udump\下找到最新的日志文件,那里有控制文件内容
    五、复制出控制文件的脚本,并修改,将所有E:\替换成F:\
    六、在sqlplus里执行这个脚本,即重建控制文件
    七、shutdown immediate
        startup mount
        会要求恢复数据库
        recover database
    八、alter database open
    数据库打开
      

  4.   

    请看:Oracle数据库文件大挪移 http://blog.csdn.net/lkz912/archive/2002/12/25/14242.aspx
    不仅适合Windows也适合Linux下的Oracle。
      

  5.   

    数据文件迁移
    环境:oracle817 
        win2000 server14:37:23 SQL> create tablespace tsp_u01 datafile 'C:\oracle\oradata\tsp_u01.dbf' size 10M
    14:38:52   2  autoextend on next 5M maxsize unlimited;表空间已创建。已用时间:  00: 00: 01.31
    14:40:16 SQL> select tablespace_name,status from dba_tablespaces;TABLESPACE_NAME                STATUS
    ------------------------------ ---------
    SYSTEM                         ONLINE
    RBS                            ONLINE
    USERS                          ONLINE
    TEMP                           ONLINE
    TOOLS                          ONLINE
    INDX                           ONLINE
    SFMIS                          ONLINE
    ZBMIS                          ONLINE
    HBMIS                          ONLINE
    HBXNMIS                        ONLINE
    OEM_REPOSITORY                 ONLINETABLESPACE_NAME                STATUS
    ------------------------------ ---------
    TSP_U01                        ONLINE已选择12行。已用时间:  00: 00: 00.63
    14:40:38 SQL> alter tablespace tsp_u01 offline;表空间已更改。已用时间:  00: 00: 00.38
    14:41:05 SQL> select tablespace_name,status from dba_tablespaces where tablespace_name='TSP_U01';TABLESPACE_NAME                STATUS
    ------------------------------ ---------
    TSP_U01                        OFFLINE已用时间:  00: 00: 00.16
    //将数据文件进行物理迁移
    14:41:26 SQL> alter tablespace tsp_u01 rename datafile 'C:\oracle\oradata\tsp_u01.dbf'
    14:43:00   2  to 'C:\oracle\oradata\oral\tsp_u01.dbf';表空间已更改。已用时间:  00: 00: 00.63
    14:43:32 SQL> alter tablespace tsp_u01 online;表空间已更改。已用时间:  00: 00: 00.81
    14:43:45 SQL> select tablespace_name,status from dba_tablespaces where tablespace_name='TSP_U01';TABLESPACE_NAME                STATUS
    ------------------------------ ---------
    TSP_U01                        ONLINE已用时间:  00: 00: 00.15
    //下面是将测试用的表空间以及数据文件删除
    14:45:35 SQL> drop tablespace tsp_u01 including contents cascade constraints;表空间已丢弃。已用时间:  00: 00: 00.28
    14:45:43 SQL>