本土oracle数据导出到另一台机子的oracle

本地oracle数据导出到另一台机子的oracle

你数据库对应的用户是不同的吧,根据用户导出就行了!  
   
   
  当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(包括机器故障、介质故障、误操作等),数据库有时也可能遭到破坏,这时如何尽快恢复数据就成为当务之急。如果平时对数据库做了备份,那么此时恢复数据就显得很容易。由此可见,做好数据库的备份是多么的重要,下面笔者就以ORACLE7为例,来讲述一下数据库的备份和恢复。ORACLE   数据库有三种标准的备份方法,它们分别为导出/导入(EXPORT/IMPORT)、冷备份、热备份。导出备份是一种逻辑备份,冷备份和热备份是物理备份。    
   
  ----   一、   导出/导入(Export/Import)    
   
  ----   利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回Oracle数据库中去。    
   
  ----   1.   简单导出数据(Export)和导入数据(Import)    
   
  ----   Oracle支持三种类型的输出:    
   
  ----   (1)表方式(T方式),将指定表的数据导出。    
   
  ----   (2)用户方式(U方式),将指定用户的所有对象及数据导出。    
   
  ----   (3)全库方式(Full方式),将数据库中的所有对象导出。    
   
  ----   数据导出(Import)的过程是数据导入(Export)的逆过程,它们的数据流向不同。    
   
  ----   2.   增量导出/导入    
   
  ----   增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。    
   
  ----   增量导出包括三个类型:    
   
  ----   (1)“完全”增量导出(Complete)    
   
  ----   即备份整个数据库,比如:    
   
  ----   $exp   system/manager   inctype=complete   file=990702.dmp    
   
  ----   (2)   “增量型”增量导出    
   
  ----   备份上一次备份后改变的数据。比如:    
   
  ----   $exp   system/manager   inctype=incremental   file=990702.dmp    
   
  ----   (3)   “累计型”增量导出(Cumulative)    
   
  ----   累计型导出方式只是导出自上次“完全”   导出之后数据库中变化了的信息。比如:    
   
  ----   $exp   system/manager   inctype=cumulative   file=990702.dmp    
   
  ----   数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效地完成。    
   
  ----   比如数据库的备份任务可作如下安排:    
   
  ----   星期一:完全导出(A)    
   
  ----   星期二:增量导出(B)    
   
  ----   星期三:增量导出(C)    
   
  ----   星期四:增量导出(D)    
   
  ----   星期五:累计导出(E)    
   
  ----   星期六:增量导出(F)    
   
  ----   星期日:增量导出(G)    
   
  ----   如果在星期日,数据库遭到意外破坏,数据库管理员可按以下步骤来恢复数据库:    
   
  ----   第一步:用命令CREATE   DATABASE重新生成数据库结构;    
   
  ----   第二步:创建一个足够大的附加回段。    
   
  ----   第三步:完全增量导入A:    
   
  ----   $imp   system./manager   inctype=   RECTORE   FULL=Y   FILE=A    
   
  ----   第四步:累计增量导入E:    
   
  ----   $imp   system/manager   inctype=   RECTORE   FULL=Y   FILE   =E    
   
  ----   第五步:最近增量导入F:    
   
  ----   $imp   system/manager   inctype=RESTORE   FULL=Y   FILE=F    


二、   冷备份    
   
  ----   冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。对于备份Oracle信息而言,冷备份是最快和最安全的方法。冷备份的优点是:    
   
  ----   1.是非常快速的备份方法(只需拷贝文件)    
   
  ----   2.容易归档(简单拷贝即可)    
   
  ----   3.容易恢复到某个时间点上(只需将文件再拷贝回去)    
   
  ----   4.能与归档方法相结合,作数据库“最新状态”的恢复。    
   
  ----   5.低度维护,高度安全。    
   
  ----   但冷备份也有如下不足:    
   
  ----   1.单独使用时,只能提供到“某一时间点上”的恢复。    
   
  ----   2.在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。    
   
  ----   3.若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。    
   
  ----   4.不能按表或按用户恢复。    
   
  ----   如果可能的话(主要看效率),应将信息备份到磁盘上,然后启动数据库(使用户可以工作)并将所备份的信息拷贝到磁带上(拷贝的同时,数据库也可以工作)。冷备份中必须拷贝的文件包括:    
   
  ----   1.所有数据文件    
   
  ----   2.所有控制文件    
   
  ----   3.所有联机REDO   LOG文件    
   
  ----   4.Init.ora文件(可选)。    
   
  ----   值得注意的是冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的    
   
  ----   下面是做冷备份的完整例子:    
   
  ----   (1)   关闭数据库$sqldba   lmode=y    
   
  ----   SQLDBA   >connect   internal;    
   
  ----   SQLDBA   >shutdown   normal;    
   
  ----   (2)   用拷贝命令备份全部的时间文件、重做日志文件、控制文件、初始化参数文件    
   
  ----   SQLDBA   >!   cp   <   file   >   <;   backup   directory   >    
   
   
  ----   (3)   重启Oracle数据库    
   
  ----   $sqldba   lmode=y    
   
  ----   SQLDBA   >connect   internal;    
   
  ----   SQLDBA   >startup;    

 

 

 

 

 

 

 

exp/imp导出导入工具的使用    
   
  2004-02   余枫  
   
  一.   导出工具   exp  
   
  1.   它是操作系统下一个可执行的文件   存放目录/ORACLE_HOME/bin  
   
        exp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移  
         
        它有三种模式:  
                a.     用户模式: 导出用户所有对象以及对象中的数据;  
                b.     表模式: 导出用户所有表或者指定的表;  
                c.     整个数据库: 导出数据库中所有对象。  
   
  2.   导出工具exp交互式命令行方式的使用的例子  
   
  $exp   test/test123@appdb  
  Enter   array   fetch   buffer   size:   4096   >   回车  
  Export   file:   expdat.dmp   >   m.dmp     生成导出的文件名    
  (1)E(ntire   database),   (2)U(sers),   or   (3)T(ables):   (2)U   >   3  
  Export   table   data   (yes/no):   yes   >   回车  
  Compress   extents   (yes/no):   yes   >   回车  
  Export   done   in   ZHS16GBK   character   set   and   ZHS16GBK   NCHAR   character   set  
  About   to   export   specified   tables   via   Conventional   Path   ...  
  Table(T)   or   Partition(T:P)   to   be   exported:   (RETURN   to   quit)   >   cmamenu     要导出的表名  
  .   .   exporting   table                                                 CMAMENU               4336   rows   exported  
  Table(T)   or   Partition(T:P)   to   be   exported:   (RETURN   to   quit)   >要导出的表名n  
  Table(T)   or   Partition(T:P)   to   be   exported:   (RETURN   to   quit)   >   回车  
  Export   terminated   successfully   without   warnings.    
   
  3.   导出工具exp非交互式命令行方式的例子  
   
  $exp   scott/tiger   tables=(emp,dept)   file=/directory/scott.dmp   grants=y    
   
  说明:把scott用户里两个表emp,dept导出到文件/directory/scott.dmp  
   
  $exp   scott/tiger   tables=emp   query=\"where   job=\'salesman\'   and   sal\<1600\"   file=/directory/scott2.dmp    
   
  说明:在exp里面加上导出emp的查询条件job='salesman'   and   sal<1600  
           
          (但我个人很少这样用,还是把满足条件的记录生成临时表后,再exp会方便一些)  
   
  $exp   parfile=username.par   file=/directory1/username_1.dmp,/directory1/username_2.dmp   filesize=2000M   log=/directory2/username_exp.log  
   
  参数文件username.par内容  
  userid=username/userpassword  
  buffer=8192000  
  compress=n  
  grants=y  
   
  说明:username.par为导出工具exp用的参数文件,里面具体参数可以根据需要去修改  
   
            filesize指定生成的二进制备份文件的最大字节数  
             
            (可用来解决某些OS下2G物理文件的限制及加快压缩速度和方便刻历史数据光盘等)  
   
  二.导入工具   imp  
   
  1.   它是操作系统下一个可执行的文件   存放目录/ORACLE_HOME/bin  
   
  imp导入工具将EXP形成的二进制系统文件导入到数据库中.  
   
        它有三种模式:  
                a.     用户模式: 导出用户所有对象以及对象中的数据;  
                b.     表模式: 导出用户所有表或者指定的表;  
                c.     整个数据库: 导出数据库中所有对象。  
                 
        只有拥有IMP_FULL_DATABASE和DBA权限的用户才能做整个数据库导入  
         
        imp步骤:  
        (1)   create   table     (2)   insert   data     (3)   create   index   (4)   create   triggers,constraints  
   
  2.导入工具imp交互式命令行方式的例子  
  $   imp  
  Import:   Release   8.1.6.0.0   -   Production   on   星期五   12月   7   17:01:08   2001  
  (c)   Copyright   1999   Oracle   Corporation.     All   rights   reserved.  
  用户名:     test  
  口令:****  
  连接到:   Oracle8i   Enterprise   Edition   Release   8.1.6.0.0   -   64bit   Production  
  With   the   Partitioning   option  
  JServer   Release   8.1.6.0.0   -   Production  
  导入文件:   expdat.dmp>   /tmp/m.dmp  
  输入插入缓冲区大小(最小为   8192   )   30720>  
  经由常规路径导出由EXPORT:V08.01.06创建的文件  
  警告:   此对象由   TEST   导出,   而不是当前用户  
  已经完成ZHS16GBK字符集和ZHS16GBK   NCHAR   字符集中的导入  
  只列出导入文件的内容(yes/no):no>  
  由于对象已存在,   忽略创建错误(yes/no):no>   yes  
  导入权限(yes/no):yes>  
  导入表数据(yes/no):yes>  
  导入整个导出文件(yes/no):no>   yes  
  .   正在将TEST的对象导入到   SCOTT  
  .   .   正在导入表                                               "CMAMENU"               4336行被导入  
  成功终止导入,但出现警告。    
   
   
  3.导入工具imp非交互式命令行方式的例子  
   
  $   imp   system/manager   fromuser=jones   tables=(accts)    
  $   imp   system/manager   fromuser=scott   tables=(emp,dept)    
  $   imp   system/manager   fromuser=scott   touser=joe   tables=emp    
  $   imp   scott/tiger   file   =   expdat.dmp   full=y    
  $   imp   scott/tiger   file   =   /mnt1/t1.dmp   show=n   buffer=2048000   ignore=n   commit=y   grants=y   full=y   log=/oracle_backup/log/imp_scott.log  
  $   imp   system/manager   parfile=params.dat    
  params.dat   内容    
  file=dba.dmp   show=n   ignore=n   grants=y   fromuser=scott   tables=(dept,emp)    
   
  4.导入工具imp可能出现的问题  
   
  (1)   数据库对象已经存在  
  一般情况,   导入数据前应该彻底删除目标数据下的表,   序列,   函数/过程,触发器等;      
  数据库对象已经存在,   按缺省的imp参数,   则会导入失败  
  如果用了参数ignore=y,   会把exp文件内的数据内容导入  
  如果表有唯一关键字的约束条件,   不合条件将不被导入  
  如果表没有唯一关键字的约束条件,   将引起记录重复  
   
  (2)   数据库对象有主外键约束  
              不符合主外键约束时,   数据会导入失败  
              解决办法:   先导入主表,   再导入依存表  
  disable目标导入对象的主外键约束,   导入数据后,   再enable它们  
  (3)     权限不够  
  如果要把A用户的数据导入B用户下,   A用户需要有imp_full_database权限  
   
  (4)     导入大表(   大于80M   )   时,   存储分配失败  
              默认的EXP时,   compress   =   Y,   也就是把所有的数据压缩在一个数据块上.  
              导入时,   如果不存在连续一个大数据块,   则会导入失败.  
              导出80M以上的大表时,   记得compress=   N,   则不会引起这种错误.  
   
  (5)   imp和exp使用的字符集不同  
              如果字符集不同,   导入会失败,   可以改变unix环境变量或者NT注册表里NLS_LANG相关信息.  
              导入完成后再改回来.  
   
  (6)   imp和exp版本不能往上兼容  
  imp可以成功导入低版本exp生成的文件,   不能导入高版本exp生成的文件  
  根据情况我们可以用  
  $   imp   username/password@connect_string  
    说明:   connect_string   是在/ORACLE_HOME/network/admin/tnsnames.ora  
        定义的本地或者远端数据库的名称  
  注意事项:  
  UNIX:   /etc/hosts                     要定义本地或者远端数据库服务器的主机名  
  win98:         windows\hosts                           和IP地址的对应关系      
   
  win2000:     winnt\system32\drivers\etc\hosts