ORACLE備份和恢復 - 邏輯備份 exp/imp

君落塵發表於2014-11-13

ORACLE備份和恢復

<1>邏輯備份
  不用去複製資料庫的物理檔案
  備份邏輯上的結構
  外部的工具:匯出和匯入的工具
  DOS下的命令 cmd下執行
    匯出exp  export縮寫形式

檢視幫助 exp help=y

    使用引數檔案匯出
     exp parfile=c:\abc.par
  >>>abc.par的內容
a)scott使用者連線匯出自己的所有物件   
      userid=scott/tiger --連線的使用者scott
      file=c:\a1.dmp  --匯出的檔案的名字a1.dmp
          --匯出了scott使用者的所有物件

b)用system連線來匯出scott下的所有物件 
     exp parfile=c:\sys.par
      >>>>sys.par的內容
       userid=system/manager
       file=c:\b1.dmp
       wner=(scott)  --匯出scott使用者的所有物件
  匯出多個使用者的資料
  建立一個測試使用者 test
  
    grant connect,resource
     to test identified by t123;
  
    alter user test
       default tablespace users
       temporary tablespace temp;
 
    create table student(
      stu_id number(4) primary key,
      stu_name varchar2(20),
      stu_score number(2)
   );
   insert into student values (1000,
      'Mike',95);
   insert into student values (1001,
      'John',90);

 匯出scott和test下的所有物件????
 >>>userid=system/manager
    file=c:\st.dmp
    wner=(scott,test)

 匯出scott下的emp,dept表????
 >>>userid=system/manager
    file=c:\st.dmp
    tables=(scott.emp,scott.dept,test.student)

 匯出整個資料庫(備份整個資料庫)
  必須用超級使用者 system ,sys
exp system/manager file=c:\system.dmp full=y feedback=1000
或者
exp parfile=c:\sys.par
>>>sys.par
 userid=system/manager
 file=c:\system.dmp
 full=y 

比較全的一個匯出的引數檔案
>>>sys.par
   userid=system/manager
   file=c:\aa.dmp
   buffer=1024000  --緩衝
   rows=y          --是否匯出記錄
   compress=y      --extent是否壓縮
   grants=y        --grant語句是否匯出
   indexes=y       --匯出索引
   full=y          --全庫匯出
   feedback=3      --顯示匯出進度每3行

匯出表scott.dept中部門編號是40的記錄
 >>>sys.par
   userid=system/manager
   file=c:\sys.dmp
   tables=(scott.emp)
   query="where deptno=10"

匯出表scott.emp中的記錄
 >>>sys.par
   userid=system/manager
   file=c:\sys.dmp
   tables=(scott.emp)
   feedback=3  --每3行記錄顯示一個點進度

如何把匯出的資料匯入到資料庫中進行恢復??
  imp    import縮寫形式
  dos命令
   imp help=y 檢視幫助

 <1>把scott下的表emp匯出 ,
 然後刪除表中的內容(truncate table emp),
 利用匯出的檔案來恢復??
  a)匯出
   exp parfile=c:\sys.par
  >>> sys.par
   userid=system/manager
   file=c:\emp.dmp
   tables=(scott.emp)
 
  b)刪除
   truncate table emp;  --刪資料
   或者
   drop table emp;  --刪除結構

  ( delete from emp;  --刪資料可以恢復)

  c)恢復
  imp prafile=c:\im.par;
  >>>im.par
   userid=system/manager
   file=c:\emp.dmp
   fromuser=scott    --從哪個使用者來恢復
   show=y            --顯示匯入檔案中的SQL語句

 <2>scott下的物件全部複製到test使用者下
  (克隆使用者scott)
  a)匯出scott使用者
   exp parfile=c:\sys.par
   >>>sys.par
     userid=system/manager
     file=c:\scott.dmp
     wner=(scott)

  b)匯入scott.dmp檔案中的內容到test使用者下
    imp parfile=c:\im.par
    >>>im.par
     userid=system/manager
     file=c:\scott.dmp
     fromuser=scott
     touser=test

  <3>scott使用者匯出資料後
     使用者scott被刪除了
     怎麼來恢復??????
   a)匯出scott使用者
     exp parfile=c:\sys.par
     >>>sys.par
      userid=system/manager
      file=c:\scott.dmp
      wner=(scott)
  
  b)刪除scott使用者
   drop user scott cascade; 


  c)恢復
   先建立使用者scott
   grant connect,resource to scott
    identified by tiger;
 
   alter user scott
     default tablespace users
     temporary tablespace temp;

   然後匯入
  imp parfile=c:\im.par
  >>im.par
   userid=system/manager
   file=c:\scott.dmp
   fromuser=scott

<4>如何進行全庫匯入
  imp system/manager
file=c:\all.dmp full=y ignore=y
  full   ---全庫
  ignore  ---忽略匯入過程中的錯誤

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29819001/viewspace-1331260/,如需轉載,請註明出處,否則將追究法律責任。

相關文章