想把一台旧数据库服务器中的数据库全部内容导入到新数据库服务器中的数据库中,
请问如何实现?

解决方案 »

  1.   

    EXP,IMP
    10G可以用EXPDP,IMPDP
    还可以用RMAN
      

  2.   

    export from the old server:
    exp  "sys/pass@xxx as sysdba"   full=y file=d:\full.dmpcopy the d:\full.dmp from the old server to the new server
    then,import into the new server:
    imp  "sys/pass@xxx as sysdba"   full=y file=d:\full.dmp
      

  3.   


    补充一下自己的exp和imp时的小经验
    exp时如果有使用blob,long等大对象数据类型的话,最好在exp 加上compress=n
    imp时,如果数据量比较大的话,最好设置比较合适的buffer 而且 commit=y, imp时关闭归档,
      

  4.   

    [oracle@roy orcl]$ exp david/david rows=y indexes=n compress=n buffer=65536 full=y file=exp_fulldatabase_090101.dmp log=exp_fulldatabase_090101.log; [oracle@roy orcl]$ imp david/david rows=y indexes=n commit=y  full=y ignore=y buffer=65536 file=/tmp/exp_fulldatabase_090101.dmp log=/tmp/imp.log; 1. ignore参数 
    Oracle在恢复数据的过程中,当恢复某个表时,该表已经存在,就要根据ignore参数的设置来决定如何操作。若ignore=y,Oracle不执行CREATE TABLE语句,直接将数据插入到表中,如果插入的记录违背了约束条件,比如主键约束,则出错的记录不会插入,但合法的记录会添加到表中。 
    若ignore=n,Oracle不执行CREATE TABLE语句,同时也不会将数据插入到表中,而是忽略该表的错误,继续恢复下一个表。 2. indexes参数 
    在恢复数据的过程中,若indexes=n,则表上的索引不会被恢复,但是主键对应的唯一索引将无条件恢复,这是为了保证数据的完整性。 如果内存足够,buffer尽量设大点,这样导入导出都快点。  如果有大的表,最好加上commit=y
      

  5.   


    以sys用户应该可以导出全部的东西(表空间也许需要先手工建好)
      

  6.   


    那exp的时候是不是要导出整个数据库?
      

  7.   


    那旧数据库中的system等用户和新数据库中的这些自带用户的数据会不会冲突
      

  8.   

    表空间和用户名需要存在的。不过如果表等对象的定义已经有的话,再import就会报错。
    如果数据已经存在的话,很多表都是有primary key constraint的,再import也会报错的。
      

  9.   

    可能是你导出的权限与导入权限不一致。  比如:你导出时用户的权限是dba而你导入的用户权限不是dba