linux中exp命令详解_exp/imp命令的介绍和使用
1. exp/imp簡介
exp/imp是oracle提供的一個對數據庫進行邏輯備份的客戶端工具。利用這個工具可以把數據庫按表空間、用戶或某些表保存到操作系統下的一個二進制文件里。這個二進制文件與平臺無關,利用這個特性可以完成數據的跨平臺的遷移。exp/imp可以看做是一個select--create--insert的過程。exp時select出要導出的數據和相關的ddl,imp時執行這個“腳本”(ddl和insert)。
2.exp/imp導入導出的模式
exp/imp一共有四種模式:FULL、USER、TABLES、TABLESPACES
FULL:必須具有EXP_FULL_DATABASE的權限,導出數據庫中所有用戶的對象,sys用戶的對象不會被導出,因此屬于sys用戶的一些觸發器將會丟失,導入后需要手工創建。
USER:具有create session的用戶,即可對屬于自己的schame進行導出。user模式將導出該模式下的所有對象及對象權限(不包括系統權限)等。
TABLES:導出指定的表(表明可用通配符%)。
TABLESPACES:主要用于transport tablespaces,必須以sysdba權限才能進行。
3.exp/imp主要參數介紹
exp:
BUFFER:指定緩沖區的大小,即一次fetch獲取的最大行數,以字節為單位,默認是4096。buffer參數只在常規路徑導出生效,直接路徑導出不生效。
FILE:指定導出的文件名稱,結合FILESIZE參數(導出文件的大小)可以指定多個數據文件名稱,這樣可以實現一邊exp,一遍imp。
COMPRESS:不是指對導出的數據進行壓縮。是指在導入時,創建表時指定initial_extent的大小,默認是Y。參數取Y時,導入時initial_extent的大小為導出時表的表大小;參數取N時,導入時initial——extent的大小即為導出表的initial_extent的大小。
COMPRESS 取Y,實驗如下:
SQL> select segment_name,initial_extent,next_extent,bytes from user_segments whe
re segment_name='T';
SEGMENT_NA INITIAL_EXTENT NEXT_EXTENT?????BYTES---------- -------------- ----------- ----------
T?????????????????? 65536?????????????? 14680064
SQL> host exp userid=test/test tables=t file=d:\a.dmp compress=y;
Export: Release 10.2.0.1.0 - Production on 星期五 4月 12 19:22:30 2013
Copyright (c) 1982, 2005, Oracle.? All rights reserved.
連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已導出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
即將導出指定的表通過常規路徑...
. . 正在導出表?????????????????????????????? T導出了????? 278528 行
成功終止導出, 沒有出現警告。
SQL> conn test1/test1
已連接。
SQL> host imp userid=test1/test1 file=d:a.dmp fromuser=test touser=test1
Import: Release 10.2.0.1.0 - Production on 星期五 4月 12 19:24:09 2013
Copyright (c) 1982, 2005, Oracle.? All rights reserved.
連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
經由常規路徑由 EXPORT:V10.02.01 創建的導出文件
警告: 這些對象由 TEST 導出, 而不是當前用戶
已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的導入
. 正在將 TEST 的對象導入到 TEST1
. . 正在導入表???????????????????????????? "T"導入了????? 278528 行
成功終止導入, 沒有出現警告。
SQL> select segment_name,initial_extent,next_extent,bytes from user_segments whe
re segment_name='T';
SEGMENT_NA INITIAL_EXTENT NEXT_EXTENT????? BYTES---------- -------------- ----------- ----------
T??????????????? 14680064?????????????? 14680064
COMPRESS 取N,實驗如下:
SQL> conn test1/test1
已連接。
SQL> drop table t;
表已刪除。
SQL> conn test/test
已連接。
SQL> select segment_name,initial_extent,next_extent,bytes from user_segments whe
re segment_name='T';
SEGMENT_NAINITIAL_EXTENT NEXT_EXTENT????? BYTES---------- -------------- ----------- ----------
T?????????????????65536?????????????? 14680064
SQL> host exp userid=test/test tables=t file=d:\b.dmp compress=n;
Export: Release 10.2.0.1.0 - Production on 星期五 4月 12 19:42:24 2013
Copyright (c) 1982, 2005, Oracle.? All rights reserved.
連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已導出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
即將導出指定的表通過常規路徑...
. . 正在導出表?????????????????????????????? T導出了????? 278528 行
成功終止導出, 沒有出現警告。
SQL> conn test1/test1
已連接。
SQL> host imp userid=test1/test1 file=d:\b.dmp fromuser=test touser=test1;
Import: Release 10.2.0.1.0 - Production on 星期五 4月 12 19:43:35 2013
Copyright (c) 1982, 2005, Oracle.? All rights reserved.
連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
經由常規路徑由 EXPORT:V10.02.01 創建的導出文件
警告: 這些對象由 TEST 導出, 而不是當前用戶
已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的導入
. 正在將 TEST 的對象導入到 TEST1
. . 正在導入表???????????????????????????? "T"導入了????? 278528 行
成功終止導入, 沒有出現警告。
SQL> select segment_name,initial_extent,next_extent,bytes from user_segments whe
re segment_name='T';
SEGMENT_NAINITIAL_EXTENT NEXT_EXTENT????? BYTES---------- -------------- ----------- ----------
T?????????????????65536?????????????? 14680064
GRANTS:對指定表導出時是否把該表上所關聯的權限信息也進行導出,默認是Y。
INDEXS:導出文件中包含表中相關索引的創建語句,默認是Y。
CONSTRAINTS:導出文件中包含表中相關約束的創建語句,默認是Y.。
DIRECT:是否使用直接路徑,默認為N,即用常規路徑導出。direct=y時可以起到提速作用。
ROWS:是否導入數據,默認是Y。
CONSISTENT:是否以只讀事務的形式進行導出,默認值為N。參數取Y時,exp將在一個事務中進行,所有數據都是基于一個時間點的,導出過程中發生改變的數據將從回滾段中獲取,當回滾段數據被覆蓋時,會報ORA-01555;參數取N時,每張表都作為一個單獨的事務導出,所以只能保證表內的數據一致性,表之間的一致性會被破壞,所以導出時都應該在系統不繁忙是進行。
RECORDLENTH:操作系統I/O緩存大小,與DIRECT=Y配合使用,以字節為單位,最大為64K。直接路徑導出時,BUFFER參數失效,取而代之的是recordlength參數
TRIGTGERS:導出文件中包含表中相關觸發器的創建語句,默認是Y。
STATISTICS:對象分析,默認為estimate(estimate,估算;compute,計算;none,無對象分析)
PARFILE:指定參數文件,把參數信息都放入一個文件中,exp是指定該參數文件即可。
FEEDBACK:每導出多少行顯示一次進度。
imp
與exp一樣的參數就不說了
SHOW:按順序列出dmp文件中的ddl語句,但不執行具體的導入。
IGNORE:創建數據庫對象時,如果對象已存在,是否忽略,默認為N。
FROMUSER:從哪個用戶導出,配合TOUSER使用。
TOUSER:導入到哪個用戶下,配合FROMUSER使用,實現用戶間的數據遷移。
COMMIT:導入數據時是否以緩存記錄作為提交單位,默認為N,以表為提交單位。
總結
以上是生活随笔為你收集整理的linux中exp命令详解_exp/imp命令的介绍和使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爱到尽头 覆水难收
- 下一篇: 白话Elasticsearch11-深度