標籤:style color ar 使用 sp strong 檔案 資料 on
在oracle安裝目錄下有EXP.EXE與IMP.EXE這2個檔案,他們分別被用來執行資料庫的匯入匯出。所以Oracle資料匯入匯出imp/exp就相當與oracle資料還原與備份。
Oracle資料匯出exp
Exp參數詳解:
USERID
運行匯出命令的帳號的使用者名稱/口令
BUFFEER
用來取資料行的緩衝區的大小
FILE
匯出轉儲檔案的名字
COMPRESS
匯出是否應該壓縮有片段的段成一個範圍,這將會影響STORAGE子句
GRANTS
匯出時否要匯出資料庫物件上的授權
INDEXES yes|no
是否要匯出表上的索引
ROWS
是否應匯出行。如它為‘N’,那麼在匯出檔案中僅產生資料庫物件的DDL
CONSSTRAINTS
是否匯出表舊的約定條件
FULL
如設為‘Y’,那麼將執行一個整個資料庫匯出操作
OWNER
要匯出的一系列資料庫帳號,然後執行這些帳號的USER匯出操作
TABLES
要匯出的一系列表;執行這些表的TABLE匯出操作
RECORDLENGTH
轉儲匯出檔案日誌的長度(以位元組為單位),通常都使用預設,除非要在兩個不同作業系統中傳遞匯出檔案
INCTYPE
正在執行的匯出操作的類型(有效值有COMPLETE(預設值),CUMULATIVE和IVCREMENTAL)
RECORD
在增量匯出類型中的一個標記,標明是否將日誌儲存到資料字典中日誌匯出的表中
PARFILE
要傳遞給匯出的參數檔案的名字。這個檔案將包含所有參數的入口項
ANALYZE
標明是否將移對象的統計資訊寫入匯出轉儲檔案中
CONSISTENT
標明是否保留所有匯出對象的讀取一致複製
LOG
匯出日誌將要寫入的檔案的名字
MLS
標明是否要匯出MLS 標號
MLS_LABEL
規定了MLS標號的格式
Oracle資料匯入imp.exe
imp參數詳解:
USERID
運行匯入命令的帳號的使用者名稱/口令
BUFFEER
用來取資料行的緩衝區的大小
FILE
匯入轉儲檔案的名字
SHOW
規定檔案內容是否被顯示,而不是被執行
EGNORE
標明在執行‘CREATE’命令時,是否忽略遇到的錯誤。如果正在匯入的對象已經存在時,應使用這個參數
FULL
如設為‘Y’,那麼將執行一個整個資料庫匯入操作
FROMUSER
在FULL=N的情況下,才有參數。它是一系列的資料庫帳號,其對象應從匯出轉儲檔案中讀取
TOUSER
一系列資料庫帳號,匯出轉儲檔案扣的對象將要匯入這些帳號
GRANTS
匯入時否要匯入資料庫物件上的授權
INDEXES
是否要匯入表上的索引
ROWS
是否應匯入行。如它為‘N’,那麼在匯入檔案中執行資料庫物件的DDL
TABLES
要匯入的一系列表
RECORDLENGTH
轉儲匯入檔案日誌的長度(以位元組為單位),通常都使用預設,除非要在兩個不同作業系統中傳遞匯入檔案
INCTYPE
正在執行的匯入操作的類型(有效值有COMPLETE(預設值),CUMULATIVE和IVCREMENTAL)
PARFILE
要傳遞給匯入的參數檔案的名字。這個檔案將包含所有參數的入口項
ANALYZE
標明是否將移對象的統計資訊寫入匯入轉儲檔案中
LOG
匯入日誌將要寫入的檔案的名字
MLS
標明是否要匯入MLS 標號
INDEXFILE
不執行匯入動作,只產生建索引的文本
Exp、Imp工具使用介紹
Exp它有三種模式:
a. 使用者模式: 匯出使用者所有對象以及對象中的資料;
b. 表模式: 匯出使用者所有表或者指定的表;
c. 整個資料庫: 匯出資料庫中所有對象。
Exp使用樣本
- 匯出整個資料庫,包括資料表空間、表、約束、函數、使用者、許可權等等。
Exp system/[email protected] file=d:\backup.dmp full=y
- 把scott使用者裡兩個表emp,dept匯出到檔案/directory/scott.dmp
exp scott/tiger tables=emp,dept file=d:\scott.dmp grants=y
- 匯出emp中滿足指定條件的資料
exp scott/scott tables=emp query=\"where job=‘salesman‘ and sal<1600\" file=d:\scott2.dmp
- 其他…
imp有三種模式:
a. 使用者模式: 匯出使用者所有對象以及對象中的資料;
b. 表模式: 匯出使用者所有表或者指定的表;
c. 整個資料庫: 匯出資料庫中所有對象。
Imp使用樣本
- 將D:\daochu.dmp 中的資料匯入 TEST資料庫中。
imp system/[email protected] file=d:\daochu.dmp full=y
上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行匯入。
在後面加上 ignore=y 就可以了
- 將d:\daochu.dmp中的表table1 匯入
imp system/[email protected] file=d:\daochu.dmp tables=(table1)
- 從d:\daochu.dmp中篩選scott使用者的emp、dept表,然後匯入
imp system/manager fromuser=scott file=d:\daochu.dmp tables=(emp,dept)
- 從d:\daochu.dmp中篩選scott使用者的emp表,然後匯入到joe使用者中
imp system/manager fromuser=scott touser=joe tables=emp
- 其他…
匯入工具imp可能出現的問題
- 資料庫物件已經存在
一般情況, 匯入資料前應該徹底刪除目標資料下的表, 序列, 函數/過程,觸發器等;
資料庫物件已經存在, 按預設的imp參數, 則會匯入失敗
如果用了參數ignore=y, 會把exp檔案內的資料內容匯入
如果表有唯一關鍵字的約束條件, 不合條件將不被匯入
如果表沒有唯一關鍵字的約束條件, 將引起記錄重複
- 匯出資料時,密碼如果為純數字時提示使用者名稱或密碼錯誤
Oracle 10g中,exp工具使用時密碼不能為純數字,所以需要先修改密碼為字母.
- 資料庫物件有主外鍵約束
不符合主外鍵約束時, 資料會匯入失敗
解決辦法: 先匯入主表, 再匯入依存表
disable目標匯入對象的主外鍵約束, 匯入資料後, 再enable它們
- 許可權不夠
如果要把A使用者的資料匯入B使用者下, A使用者需要有imp_full_database許可權
- 匯入大表( 大於80M ) 時, 儲存分配失敗
預設的EXP時, compress = Y, 也就是把所有的資料壓縮在一個資料區塊上.
匯入時, 如果不存在連續一個大資料區塊, 則會匯入失敗.
匯出80M以上的大表時, 記得compress= N, 則不會引起這種錯誤.
- imp和exp使用的字元集不同
如果字元集不同, 匯入會失敗, 可以改變unix環境變數或者NT註冊表裡NLS_LANG相關資訊。匯入完成後再改回來.
- imp和exp版本不能往上相容
imp可以成功匯入低版本exp產生的檔案, 不能匯入高版本exp產生的檔案
根據情況我們可以用
$ imp [email=username/[email protected]_string]username/[email protected]_string[/email]
說明: connect_string 是在/ORACLE_HOME/network/admin/tnsnames.ora定義的本地或者遠端資料庫的名稱。
Oracle資料匯入匯出imp/exp