oracle資料庫的自動匯出匯入

來源:互聯網
上載者:User

如果在本地建立一個資料庫,想把伺服器上的資料庫匯入到本地,可以這樣做:

首先建立一個“匯出匯入.bat” ,然後編輯內容:

exp username/password@xxxfile=c:/aaa.dmp
sqlplus  system/yyyy @1.txt
imp  username/password full=y file=c:/aaa.dmp

再建立一個“1.txt”檔案,內容為:

drop userusername cascade
/
create userusername identified by password default tablespace tablespace_name
/
grant resource,connect tousername
/
quit
/

這樣就可以實現自動匯出伺服器上的資料然後匯入到本地了。我以前因為1.txt檔案裡的退出sql命令使用exit而不是quit老不成功。

如果要匯入其中的一個或多個表,可以用imp username/pwd full=n table=(ta,tb) file=xxx.dmp

 

==================exp imp expdp impdp==================

exp:
 1. 擷取協助
 exp help=y

 2. 將資料庫TEST,test也可以是“ip:port/dbname”形式完全匯出,使用者名稱system 密碼manager 匯出到D:/xxx.dmp中
   expsystem/manager@TESTfile=d:/xxx.dmp full=y

 3. 將資料庫中system使用者與sys使用者的表匯出
   expsystem/manager@TESTfile=d:/xxx.dmp wner=(system,sys)

 4. 將資料庫中的表a、b匯出
    expusername/password@TESTfile= d:/xxx.dmp tables=(a,b)

 5. 將資料庫中的表table1中的欄位filed1以"00"打頭的資料匯出
   expusername/password@TESTfile=d:/xxx.dmp tables=(table1) query=" where filed1 like '00%'"

 6. 如果資料庫過大,可以匯出多個檔案
 expusername/password@TEST  file=d:/exp01.dmp,d:/exp02.dmp,d:/exp03.dmp filesize=2g  buffer=10240000  log=a.log

 7.匯出表結構,不要資料、索引和統計資訊等
   expusername/password@TESTfile= d:/xxx.dmp rows=n triggers=n index=n STATISTICS=none
  注意在匯出前請先查看要匯出的資料所佔的空間,如下:
  select sum(bytes)/1024/1024 from user_extents; 一般查看的值和要匯出的dmp檔案的大小大致相當,可以據此來確定匯出幾個dmp檔案。
  可以設定BUFFER大小來加快匯出速度,一般可以設定為10m,即102400000,如
  加上log參數可以把匯出資訊存放到記錄檔裡。

 

關鍵字   說明 (預設值)
USERID   使用者名稱/口令          
FULL        匯出整個檔案 (N)
BUFFER   資料緩衝區大小      
OWNER        所有者使用者名稱列表
FILE     輸出檔案 (EXPDAT.DMP)
TABLES     表名列表
COMPRESS  匯入到一個區 (Y) 
RECORDLENGTH   IO 記錄的長度
GRANTS    匯出許可權 (Y)     
INCTYPE     增量匯出類型
INDEXES   匯出索引 (Y)   
RECORD       跟蹤增量匯出 (Y)
DIRECT    直接路徑 (N)   
TRIGGERS     匯出觸發器 (Y)
LOG      螢幕輸出的記錄檔 
STATISTICS    分析對象 (ESTIMAT
ROWS      匯出資料行 (Y)     
PARFILE      參數檔案名稱
CONSISTENT 交叉表的一致性 (N) 
CONSTRAINTS  匯出的約束條件 (Y

OBJECT_CONSISTENT    只在對象匯出期間設定為唯讀交易處理 (N)
FEEDBACK             每 x 行顯示進度 (0)
FILESIZE             每個轉儲檔案的最大大小
FLASHBACK_SCN        用於將會話快照設定回以前狀態的 SCN
FLASHBACK_TIME       用於擷取最接近指定時間的 SCN 的時間
QUERY                用於匯出表的子集的 select 子句
RESUMABLE            遇到與空格相關的錯誤時掛起 (N)
RESUMABLE_NAME       用於標識可恢複語句的文本字串
RESUMABLE_TIMEOUT    RESUMABLE 的等待時間
TTS_FULL_CHECK       對 TTS 執行完整或部分相關性檢查
TABLESPACES          要匯出的資料表空間列表
TRANSPORT_TABLESPACE 匯出可傳輸的資料表空間中繼資料 (N)
TEMPLATE             調用 iAS 模式匯出的模板名

imp:
1. 擷取協助
 imp help=y

2. 匯入一個完整資料庫
 imp system/manager file=bible_db log=dible_db full=y ignore=y

3. 匯入一個或一組指定使用者所屬的全部表、索引和其他對象
 imp system/manager file=c:/xxx.dmp log=c:/a.log fromuser=username
 或 impusername/password@TESTfile=username log=username
4. 將一個使用者所屬的資料匯入另一個使用者
 imp system/manager  file=c:/xxx.dmp log=c:/a.log  fromuser=u1 touser=u2
 imp system/manager  file=c:/xxx.dmp log=c:/a.log  fromuser=(u1,u2) touser=(u3,u4)
 
5. 匯入一個表
 imp system/manager file=c:/xxx.dmp log=c:/a.log  fromuser=username TABLES=(a,b)

6. 從多個檔案匯入
 imp system/manager file=(c:/exp01.dmp,c:/exp02.dmp,c:/exp03.dmp,c:/exp04.dmp)
log=paycheck, filesize=1G full=y

7. 使用參數檔案
 imp system/manager parfile=bible_tables.par
bible_tables.par參數檔案:
 #Import the sample tables used for the Oracle8i Database Administrator's
Bible. fromuser=username touser=username_copy file=username log=username_import

在資料量比較大的情況下需要設定buffer和commit參數,buffer一般為10m左右,即10240000.
設定ignore可以忽略匯入的錯誤,避免出現錯誤終止繼續匯入操作
 
匯入
分區表時有時候會出現如下錯誤:
IMP-00003:
ORACLE error 20001 encountered
ORA-20001: Invalid or inconsistent input values
ORA-06512: at "SYS.DBMS_STATS", line 6053
ORA-06512: at line 1
IMP-00017: following statement failed with ORACLE error 20001:
 "BEGIN  DBMS_STATS.SET_TABLE_STATS(NULL,'"HCL"','"SYS_SUBP5290"'"
 ",NULL,NULL,-1,-1,-1,0); END;"
可能是在匯入資料後再匯入統計資訊時出錯誤,經過
測試發現匯出資料量比較小的情況下不會出現該過錯,具體原因待查。避免該類錯誤在匯入時加上statistics=none,說明不再匯入統計資訊:
imp c/c full=n file=H.dmp tables=(hcl) buffer=12800000 statistics=none log=a.log commit=y
對於匯入資料很大的情況,如果buffer設定的過小則會出現匯入錯誤:IMP-00032:   SQL   語句超過緩衝區長度 
這樣匯入的使用者中的表或索引沒有做統計分析。

 

imp參數如下:
關鍵字   說明 (預設值)
USERID   使用者名稱/口令          
FULL       匯入整個檔案 (N)
BUFFER   資料緩衝區大小  
FROMUSER    所有者使用者名稱列表
FILE     輸入檔案 (EXPDAT.DMP)
TOUSER     使用者名稱列表
SHOW     只列出檔案內容 (N)  
TABLES      表名列表
IGNORE   忽略建立錯誤 (N)  
RECORDLENGTH  IO 記錄的長度
GRANTS   匯入許可權 (Y)   
INCTYPE     增量匯入類型
INDEXES   匯入索引 (Y)        
COMMIT       提交數組插入 (
ROWS     匯入資料行 (Y)     
PARFILE      參數檔案名稱
LOG     螢幕輸出的記錄檔
CONSTRAINTS    匯入限制 (Y)
DESTROY                覆蓋資料表空間資料檔案 (N)
INDEXFILE              將表/索引資訊寫入指定的檔案
SKIP_UNUSABLE_INDEXES  跳過不可用索引的維護 (N)
FEEDBACK               每 x 行顯示進度 (0)
TOID_NOVALIDATE        跳過指定類型 ID 的驗證
FILESIZE               每個轉儲檔案的最大大小
STATISTICS             始終匯入預計算的統計資訊
RESUMABLE              在遇到有關空間的錯誤時掛起 (N)
RESUMABLE_NAME         用來標識可恢複語句的文本字串
RESUMABLE_TIMEOUT  
RESUMABLE 的等待時間
COMPILE                編譯過程, 程式包和函數 (Y)
STREAMS_CONFIGURATION  匯入流的一般中繼資料 (Y)
STREAMS_INSTANTIATION  匯入流執行個體化中繼資料 (N)

 

Oracle Database 10g引入了最新的資料泵(Data Dump)技術,使DBA或開發人員可以將資料庫中繼資料(對象定義)和資料快速移動到另一個oracle資料庫中.
資料泵匯出匯入(EXPDP和IMPDP)的作用
1,實現邏輯
備份和邏輯恢複.
2,在資料庫使用者之間移動對象.
3,在資料庫之間移動對象
4,實現資料表空間搬移.
資料泵匯出匯入與傳統匯出匯入的區別
在10g之前,傳統的匯出和匯入分別使用EXP工具和IMP工具,從10g開始,不僅保留了原有的EXP和IMP工具,還提供了資料泵匯出匯入工具EXPDP和IMPDP.使用EXPDP和IMPDP時應該注意的事項;
EXP和IMP是客戶段工具程式,它們既可以在可以用戶端使用,也可以在服務端使用.
EXPDP和IMPDP是服務端的工具程式,他們只能在ORACLE服務端使用,不能在用戶端使用
IMP只適用於EXP匯出檔案,不適用於EXPDP匯出檔案;IMPDP只適用於EXPDP匯出檔案,而不適用於EXP匯出檔案.
資料泵匯出包括匯出表,匯出方案,匯出資料表空間,匯出資料庫4種方式.

expdp:
使用EXPDP工具時,其轉儲檔案只能被存放在DIRECTORY對象對應的OS目錄中,而不能直接指定轉儲檔案所在的OS目錄.因此,使用EXPDP工具時,必須首先建立DIRECTORY對象.並且需要為資料庫使用者授予使用DIRECTORY對象許可權.
sql>conn / as sysdba
sql>CREATE DIRECTORY dump dir AS ‘D:DUMP’;
sql>GRANT READ, WIRTE ON DIRECTORY dump_dir TO test;
1,匯出表
Expdp test/test DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=dept,emp
2,匯出方案
Expdp test/test DIRECTORY=dump_dir DUMPFILE=schema.dmp
SCHEMAS=system,test
3.匯出資料表空間
Expdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp
TABLESPACES=user01,user02
4,匯出資料庫
Expdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=Y


impdp:
Impdp test/test DIRECTORY=dump_dir DUMPFILE=tab.dmp
TABLES=dept,emp
Impdp system/manage DIRECTORY=dump_dir DUMPFILE=tab.dmp
TABLES=test.dept,test.emp REMAP_SCHEMA=test:SYSTEM
第一種方法表示將DEPT和EMP表匯入到test方案中,第二種方法表示將DEPT和EMP表匯入的SYSTEM方案中.
注意,如果要將表匯入到其他方案中,必須指定REMAP SCHEMA選項.
2,匯入方案
Impdp test/test DIRECTORY=dump_dir DUMPFILE=schema.dmp
SCHEMAS=test
Impdp system/manager DIRECTORY=dump_dir DUMPFILE=schema.dmp
SCHEMAS=test REMAP_SCHEMA=test:system
3,匯入資料表空間
Impdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp
TABLESPACES=user01
4,匯入資料庫
Impdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y

http://space.itpub.net/559237/viewspace-448811

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.