1. 程式人生 > >邏輯備份之exp/imp

邏輯備份之exp/imp

  exp/imp針對於邏輯結構,所以必須在資料庫open階段才能用,只是導資料,與物理檔案(datafile)沒有太大的關係,exp/imp操作的都是二進位制檔案,10g後還引進了expdp/impdp。exp/imp作用有:資料庫遷移、歷史資料歸檔、重新組織表(行遷移、高水位線的處理)、轉移資料、物理備份的輔助手段。使用的方式有:互動模式、命令列模式、引數檔案模式、圖形模式,建議使用命令模式和引數檔案模式。

一、exp

命令列模式:
[oracle]$emp -help

[oracle]$emp scott/tiger file=/u02/scott1.dmp tables=emp

匯出使用者:
emp scott/tiger file=/u02/scott1.dmp owner=scott

導多個表(用逗號或空格分隔開):
exp scott/tiger file=/u02/scott.dmp table=emp,dept salgrade

導多個使用者:
exp system/oracle file=/u02/scottu.dmp owner=scott,hr

用sys去導:
exp \'sys/oracle as sysdba\' file=/u02/uscott.dmp owner=scott

生成log:
exp \'sys/oracle as sysdba\' file=/u02/uscott.dmp owner=scott log=/tmp/exp01.log

全庫導(必須有dba許可權):
exp \'sys/oracle as sysdba\' file=/u02/full1.dmp,/u02/full2.dmp filesize=200m full=y

匯出的檔案超過2G,會報錯,怎麼辦?可以指定多個數據檔案
exp scott/tiger file=/u02/s01.dmp,/u02/s02.dmp filesize=1g table=emp,dept salgrade log=/tmp/exp01.og
如果匯出的檔案大小沒有1g,將只有一個到處檔案

查詢字元,需要轉意:
exp scott/oracle file=/oracle/scott01.dmp tables=test_drop query=\"where name\=\'zhang\'\"

$ORACLE_HOME/bin/exp userid=user_name/pwd file=/back/tyds/faultimg_0901.dmp
log=/faultimg_0901.log buffer=999999999 tables=dfaultimg:IMG_LATEST feedback=10000
query=\" where pass_time \>to_date\(\'2008-12-31 18\'\,\'yyyy-mm-dd hh24\'\) and pass_time \<=to_date\(\'2009-01-31 18\'\,\'yyyy-mm-dd hh24\'\) \"

引數模式:
例一:[oracle]$vi p1.txt
userid=scott/tiger
file=/u02/ss01.dmp
tables=emp,dept
[oracle]$exp parfile=p1.txt

例二:[oracle]$vi p4.txt
userid=scott/tiger
file=/u02/emp10_20.dmp
tables=emp
query='where deptno in (10,20)'

例三:[oracle]$cat expsql
userid=scott/oracle
file=/oracle/scott.dmp
tables=test_drop
query="where name='zhang'"

二、imp

--先匯出
[oracle]$exp scott/tiger file=/u02/scott.dmp
SQL>drop table emp purge;
SQL>drop table dept purge;
SQL>purge recyclebin;
[oracle]$imp scott/tiger file=/u02/scott.dmp tables=emp,dept

[oracle]$imp scott/tiger file=/u02/scott.dmp tables=emp ignore=y
ignore=y 表已經存在,不需要匯入表結構了

以system使用者匯出scott使用者資料,再以system匯入
[oracle]$imp system/oracle file=/u02/scott.dmp owner=scott
[oracle]$exp system/oracle fromuser=scott touser=scott file=/u02/scott.dmp tables=emp,dept