Oracle Export命令使用淺解

2021-08-31 22:24:31 字數 3579 閱讀 3950

oracle

的 export 命令顧名思義就是匯出資料庫資訊用的,既可以匯出表結構,也可以匯出資料, 表空間,或者按使用者匯出等等。按照通常的說法,該命令主要是用於資料庫的遷移或者備份的。下面就介紹一下該命令的部分引數。

1.認識exp命令

執行 export 操作需要執行的命令是 exp, exp 匯出資料的乙個優點就是快,但匯出的結果檔案均為二進位制檔案,而且要求不能手動修改。

exp 在設定執行引數的值的時候,支援的格式為 exp keyword=value 或

keyword=(value1,value2,...,valuen), 例如 :

exp scott/tiger grants=y tables=(emp,dept,mgr)
exp 命令支援多個引數,要檢視這些引數的說明可以執行如下命令來看幫助。

exp help=y

但是給出的引數的資訊比較粗略。有必要對常用引數進行一下具體說明。

2.引數說明

userid:    使用者名稱

/ 口令。格式為 使用者名稱

/ 密碼 @ 待連線的資料庫。該引數必須為 exp 命令的第乙個引數。

buffer :資料緩衝區大小。該引數指定查詢資料庫記錄時的緩衝區大小,單位為 byte ,如果該引數設為 0 ,那麼獲取資料庫記錄時每次讀取一行。該引數需要配合引數 direct=n 來使用。

file:輸出檔案。匯出的目標檔名,如果不設定該引數的話,命令會採用預設檔名——expdat.dmp

tables:表名列表。需要匯出的表名,可以是乙個,也可以是多個。單個表名格式為:tables=test_tab, 多個表名格式:tables=(test_tab_1,test_tab_2) 。在這提示一點,在linux 、unix 環境下多個表名時用到的括號需要轉義,如下tables=\(test_tab_1,test_tab_2\) 。

compress

事實上,compress 是改變storage 引數initial 的值。比如:create table .... storage( initial 10k next 10k..)  現在資料已經擴充套件到100 個extent, 如果採用compress=y 來export 資料,則產生的語句時storage( initial 1000k next 10k) ; 我們可以看到next 值並沒有改變,而initial 是所有extent 的總和。所以會出現如下情況,表a 有4 個100m 的extent, 執行delete from a ,然後再用compress=y 匯出資料,產生的create table 語句將有400m 的initial extent 。即使這是table 中已經沒有資料!!這是的dump 檔案即使很小,但是在import 時就會產生乙個巨大的table. 另外,也可能會超過datafile 的大小。比如,有4 個50m 的資料檔案,其中表a 有15 個10m 的extent, 如果採用compress=y 的方式匯出資料,將會有initial=150m 那麼在重新匯入時,不能分配乙個150m 的extent ,因為單個extent 不能跨多個檔案。

recordlengthio 記錄的長度。和direct=y 配合使用的是recordlength 引數,它定義了export i/o 緩衝的大小,作用類似於常規路徑匯出使用的buffer 引數。建議設定recordlength 引數為最大i/o 緩衝,即65535(64kb) 。

indexes:匯出索引。匯入過程中建立使用者定義的索引,特別是表上有多個索引或者資料表特別龐大時,需要耗費大量時間。某些情況下,需要以最快的時間匯入資料,而索引允許後建,我們就可以使用

indexes=n 只匯入資料不建立索引,從而加快匯入速度。

direct直接路徑。該引數設定為

y 時, oracle 將採用直接讀取資料庫儲存檔案的方式獲取資料,而不再通過查詢資料庫的方式,省去了執行 sql 的時間,提高了匯出速度。

log螢幕輸出的日誌檔案。

rows匯出資料行。預設為

y ,匯出表中資料。設定 n ,則只會匯出表結構。這個引數就讓我給誤會了,我看到這個引數還以為是指定行數呢,這個引數太無厘頭了。

consistent交叉表的一致性。這個引數是指定在資料匯出過程中,是否維持資料庫表一致性。預設為n ,如果設定為y 的話,在匯出過程中外部系統同樣可以查詢資料庫相關表,並且獲取到一致性的資料,在匯出之前更新或者修改的資料不會被外部系統感知。這樣也就需要占用資料庫的回滾段。如果主機資源緊張,可以將引數設定為n ,這樣既可以少占用回滾段資源,更主要的是這樣匯出速度也會提公升。

filesize:每個轉儲檔案的最大大小。單位為bytes, 設定了該引數後,當匯出的資料檔案超過最大值時,會重新寫入到新檔案中,以此類推。但是每次寫入新檔案的時候,命令會轉為互動狀態,需要使用者資料新的檔名。

query使用者匯出表的子集的select 子句。在只希望匯出某錶的一部分符合條件的資料時,這個引數就能派上用場了。整個引數需要用

」 」 括起來。這個引數通過輸入where 條件可以只匯出預期的資料。如果是匯出針對的是多個表,那麼在輸入where 條件時需要保證該子句對匯出的任何一張表都是有效的。

constraints匯出約束條件。是否匯出表中已有的constraint 。

grants是否匯出授權資訊。

statistics分析物件 。指定匯出過程中是否統計匯出資訊。選項包括:

none ,

compute , estimate 。我習慣上把它設定為 none, 這樣可以提高匯出速度。

常用的引數基本上就這些了。

3.舉例

下面簡單列舉了乙個匯出命令的語句,加深下直觀印象。

exp scott/scottpwd@testdb file=e:\data\test20111107.dmp buffer=100000 tables=(etl_test_0,etl_test_1,etl_test_2) compress=n indexes=n direct=n rows=y grants=y consistent=n constraints=y log=e:\ data\ exp.log query=」where id > 10」

scaffold dbcontext 命令使用說明

工具的scaffold dbcontext 資料庫上下文腳手架 指令來生成models和context。指令詳細介紹 scaffold dbcontext connection provider outputdir context schemas tables dataannotations for...

scaffold dbcontext 命令使用說明

scaffold dbcontext 命令使用說明 工具的scaffold dbcontext 資料庫上下文腳手架 指令來生成models和context。指令詳細介紹 scaffold dbcontext connection provider outputdir context schemas ...

scaffold dbcontext 命令使用說明

工具的scaffold dbcontext 資料庫上下文腳手架 指令來生成models和context。指令詳細介紹 scaffold dbcontext connection provider outputdir context schemas tables dataannotations for...