如题。我要做一个表空间的拷贝。里面的数据是和原来的完全一样的。使用EXP/IMP 貌似不能包括数据。如何解决?
因为项目中 要有一个做开发用,一个上线测试的。为了互不影响,有这个需求。

解决方案 »

  1.   

    回1楼。我是ORACLE新手。这个方面我找了资料了。我用EXP的时候提示不包括数据。但是我需要连数据一起导出。IMP怎么使用 最好给个例子谢谢。 在ORACLE方面我确实是新手
      

  2.   

    谁跟你说传输表空间只有结构?
    exp、imp导出导入元数据,
    然后复制表空间所包含的数据文件(数据文件就是需要的数据)。网上的资料很多
      

  3.   

    可以使用PL/SQL的导入导出工具,可以选择表。
    使用EXP/IMP 貌似不能包括数据是可以导出元数据的。
      

  4.   

    exp tablespace1
    imp tablespace2 from tablespace1
      

  5.   

    表空间的数据文件怎么找的?我这样做
    select b.name from v$tablespace a, v$datafile b where a.ts#=b.ts# and a.name='XXX'
    查出来结果为空。
    因为我之前删除过一些文件。是不是表示我的数据文件现在不存在?需要重新备份一次还是?
      

  6.   

    不要随意删除数据文件!!1、确定你的name为大写。
    2、还可以用这个语句去查一下,根据路径去确认一下数据文件是否存在
    SELECT t.TABLESPACE_NAME, t.FILE_NAME
      FROM dba_data_files t
     WHERE t.TABLESPACE_NAME = upper('表空间名');
      

  7.   

    exp 会包含数据的吧?
    你如果是要换表空间,估计比较麻烦 一般来说 导入的会放在原来表空间下。
    你试试 新建一个用户,默认表空间是你的目标表空间,该用户在原表空间上不要赋予资源,然后 指定fromuser和touser。
      

  8.   

    谁告诉你EXP 不会导出数据了!!!!!!!!!!!!!!建议你直接冷复制吧 
      

  9.   

    使用EXP/IMP 貌似不能包括数据???
    昨天刚刚用过肯定包含数据的
      

  10.   

    oracle表空间的传输步骤如下: 1.检验表空间的自包含性: 2.将表空间置为只读: 3.卸出表空间: 4.复制数据文件和卸出文件,并将这些文件复制到另一台服务器。 5.使用IMP装入表空间: oracle表空间的传输步骤如下: 1.检验表空间的自包含性: 2.将表空间置为只读: 3.卸出表空间: 4.复制数据文件和卸出文件,并将这些文件复制到另一台服务器。 5.使用IMP装入表空间可参考如下链接:
    http://wenku.baidu.com/view/bfa7183767ec102de2bd89f8.html
      

  11.   

    可以使用dbms_file_transfer.copy_file来实现本地复制,你可以到网上查一下如何使用。
      

  12.   

    可以直接把表空间的数据文件拷贝过去,在新机器上 重建控制文件,重建日志,进行恢复。
    1、把备份主机 backup controlfile to trace;到 trace 文件里找到重建controlfile 的语句。
    2、把备份主机数据库 shutdown 了
    3、拷贝数据库 表空间的数据文件到目标机器下
    4、目标主机 startup nomount, 进行重做日志文件的 控制文件创建。
    5、再 startup open 就可以了。  
      

  13.   

    忘了说了。这是针对10G的Oracle , 11G 的可能会有点不同吧。 还没研究过。 
    这个过程很简单,具体步骤你上网查查就清楚了。 
      

  14.   

    谢谢楼上各位答复!在ORACLE 方面我是菜鸟。。丢人了! 
    首先重申下环境:我是在REDHAT 5.4 SERVER 下装的ORACLE11G R1
    要拷贝的源表空间:sandbox2 目标表空间:sandbox_hf
    都在同一个数据库 orcl 下。
    目标:使sandbox_hf下的表结构和数据和sandbox2的一致,之后互不影响。
    早上有点事情,耽误了。不好意思。我现在把我的操作说明下,请大家指导。
    1.我用EXP命令成功导出了sandbox2.dmp文件。
    2.我用命令在/u01/app/oracle/oradata/orcl/ 下找到了sandbox2(注意没有后缀,我在建立数据文件的时候没加.DBF)
    3.我用imp命令:
    imp file=/tmp/sandbox2.dmp transport_tablespace=y datafiles=/u01/app/oracle/oradata/orcl/sandbox2 tablespaces=sandbox_hf(这里对不?我是想拷贝到sandbox_hf)
    报错了,错误如下:
    import done in US7ASCII character set and AL16UTF16 NCHAR character set
    import server uses ZHS16GBK character set (possible charset conversion)
    . importing SYS's objects into SYS
    . importing SYS's objects into SYS
    IMP-00017: following statement failed with ORACLE error 29347:
     "BEGIN   sys.dbms_plugts.beginImpTablespace('SANDBOX2',10,'SYS',1,0,8192,1,4"
     "0763378,1,2147483645,8,128,8,0,1,2147483645,8,1257749144,1,4129,37247199,NU"
     "LL,0,0,NULL,NULL); END;"
    IMP-00003: ORACLE error 29347 encountered
    ORA-29347: Tablespace name validation failed - failed to match tablespace 'SANDBOX2'
    ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86
    ORA-06512: at "SYS.DBMS_PLUGTS", line 1827
    ORA-06512: at line 1
    IMP-00000: Import terminated unsuccessfully
    请大家耐心点。小弟感激
      

  15.   

    http://www.oracle-base.com/articles/10g/FileTransfer10g.php 很简单的。
      

  16.   

    http://xingxingwx.iteye.com/blog/131169
    这里边写的很详细,楼主可以参考一下。可以使用expdp和impdp命令来对tablespace表空间和schema进行备份和还原!!
      

  17.   

    可以使用exp 进行导出再imp导入...
      

  18.   

    exp,imp 支持表空间的迁移,原理是只做表空间catalog 或 metadata 的导入导出,然后 copy 相应的数据文件。
      

  19.   

      不行不行 EXP导出.IMP导入 只支持是恢复回来的那种。我试了用IMP导入 修改了TABLESPACE为目标新表空间。结果报错。上面有详细步骤了。ORACLE error 29347
      试了另一种方式:新建了个表空间。把原来的表空间设置为只读,复制了数据文件,覆盖掉新表空间的数据文件,结果也失败了。显示不出原表空间的内容。不知道为什么。
      有没有人做过一样的。请不要以原有经验想当然。。
      

  20.   

    exp 加一个参数就行了rows=n 只导表结构,不导数据;
      

  21.   

    已解决。。给分。有些人说的差不多了。最后在一个DBA朋友的帮助下解决了
      

  22.   

    因为dmp文件里面有对象有包含表空间的信息,所以如果该用户有该表空间的权限的话,默认会建在那个表空间,
    如果没有权限了,他则会当做ignore来进行处理,导入到用户指定的表空间。
    (个人理解,仅供参考)