数据库中一个用户为fin,给fin分配的表空间为A。表空间B与A有关联,(即fin用户的数据A,B中都有)现在 想把A,B两个表空间合并成一个名字为C的表空间,应该怎么操作。求具体操作步骤。在线等
   网上有个方法是按表导数据然后再导入到需要的表空间中,但小弟在导的时候发现表空间不是自包含的,所以没有成功。
   本人新手,描述详细。谢谢各位大侠!oracle数据库表空间

解决方案 »

  1.   

    直接修改表的表空间
    alter table t move tablespace C;
      

  2.   

    如果表空间A的空闲空间够大,可以将B上的表迁到表空间A上,然后释放B的表空间。
      

  3.   

    我的建议是,找出a和b表空间中的所有的数据文件,移动到表空间c中,你参考下。
    1. 确定数据文件所在的表空间
    select tablespace_name from dba_data_files where
    file_name=’d:\test\sp01.dbf’;
    2. 使表空间脱机
    确保数据文件的一致性,将表空间转变为offline 的状态。
    alter tablespace sp01(表空间名) offline;
    3. 使用命令移动数据文件到指定的目标位置
    host move d:\test\sp01.dbf c:\test\sp01.dbf
    4. 执行alter tablespace 命令
    在物理上移动了数据后,还必须执行alter tablespace 命令对数据库文件进行
    逻辑修改:
    alter tablespace sp01 rename datafile ‘d:\test\sp01.dbf’ to
    ‘c:\test\sp01.dbf’;
    5. 使得表空间联机
    在移动了数据文件后,为了使用户可以访问该表空间,必须将其转变为online
    状态。
    alter tablespace sp01(表空间名) online;