1.說明
使用Oracle命令行導出導入dmp文件,
從而在兩個數據庫之間快速轉移數據,
也可以用來作為數據庫的備份,
將來可以快速恢復數據。
命令:導出exp、導入imp
步驟:
- 使用Oracle的exp命令將指定數據庫導出為dmp文件;
- 然后將dmp文件上傳到需要導入的數據庫所在服務器;
- 使用Oracle的imp命令將dmp文件導入指定數據庫。
2.導出exp
在Oracle數據庫10.21.19.63上的guwei用戶下,
有兩張表USER_INFO,POLICY_INFO,
下面導出這兩張表的所有數據,
導出命令:
exp guwei/ai123456@10.21.19.63/orcl file=guwei_user_policy.dmp tables=USER_INFO,POLICY_INFO
導出日志:
Export: Release 11.2.0.1.0 - Production on Mon Oct 28 03:08:08 2019
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in AL32UTF8 character set and AL16UTF16 NCHAR character set
About to export specified tables via Conventional Path ...
. . exporting table USER_INFO 150904330 rows exported
. . exporting table POLICY_INFO 10 rows exported
Export terminated successfully without warnings.
導出說明:
這里導出1.5億條數據,耗時4分鍾左右,
導出的guwei_user_policy.dmp文件大小為7.8G。
3.上傳dmp文件
將dmp文件上傳到需要導入的數據庫所在服務器:
scp guwei_user_policy.dmp oracle@10.21.13.14:/home/oracle/script/guwei
4.導入imp
下面把USER_INFO,POLICY_INFO這兩張表導入,
導入到Oracle數據庫10.21.13.14上的yuwen用戶下,
導入命令:
imp yuwen/ai123456@10.21.13.14/orcl file=guwei_user_policy.dmp tables=USER_INFO,POLICY_INFO
導入日志:
Import: Release 12.1.0.2.0 - Production on Mon Oct 28 15:55:51 2019
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
Export file created by EXPORT:V11.02.00 via conventional path
Warning: the objects were exported by GUWEI, not by you
import done in US7ASCII character set and AL16UTF16 NCHAR character set
import server uses AL32UTF8 character set (possible charset conversion)
export client uses AL32UTF8 character set (possible charset conversion)
. importing GUWEI's objects into YUWEN
. importing GUWEI's objects into YUWEN
. . importing table "USER_INFO" 150904330 rows imported
. . importing table "POLICY_INFO" 10 rows imported
Import terminated successfully without warnings.
導入說明:
導入1.5億條數據,耗時40分鍾左右,性能還是比較好的。
5.三種導入導出類型
Oracle支持三種導入導出類型
分別是表方式(T方式),用戶方式(U方式),全庫方式(Full方式),
上面給出的示例是表方式(T方式)。
5.1 表方式(T方式)
將指定表的數據導出,
備份某個用戶模式下指定的對象(表),
使用如下命令:
exp guwei/ai123456@10.21.19.63/orcl rows=y indexes=n compress=n buffer=50000000 file=exp_table.dmp log=exp_table.log tables=USER_INFO,POLICY_INFO
恢復備份數據中的指定表,
使用如下命令:
imp yuwen/ai123456@10.21.13.14/orcl fromuser=guwei touser=yuwen rows=y indexes=n commit=y buffer=50000000 ignore=n file=exp_table.dmp log=exp_table.log tables=USER_INFO,POLICY_INFO
5.2 用戶方式(U方式)
將指定用戶的所有對象及數據導出,
備份某個用戶模式下的所有對象,
使用如下命令:
exp jnth/thpassword@oracle owner=guwei rows=y indexes=n compress=n buffer=50000000 file=exp_table.dmp log=exp_table.log
恢復備份數據的全部內容,
使用如下命令:
imp yuwen/ai123456@10.21.13.14/orcl fromuser=guwei touser=yuwen rows=y indexes=n commit=y buffer=50000000 ignore=n file=exp_table.dmp log=exp_table.log
恢復備份數據中的指定表,
使用如下命令:
imp yuwen/ai123456@10.21.13.14/orcl fromuser=guwei touser=yuwen rows=y indexes=n commit=y buffer=50000000 ignore=n file=exp_table.dmp log=exp_table.log tables=USER_INFO,POLICY_INFO
5.3 全庫方式(Full方式)
將數據庫中的所有對象導出,
備份完整的數據庫,
使用如下命令:
exp system/systempassword@oracle rows=y indexes=n compress=n buffer=50000000 full=y file=exp_table.dmp log=exp_table.log
導入完整數據庫,
使用如下命令:
imp system/systempassword@oracle rows=y indexes=n commit=y buffer=50000000 ignore=y full=y file=exp_table.dmp log=exp_table.log
6.導出導入的優缺點:
優點:
- 簡單易行;
- 可靠性高;
- 不影響數據庫的正常運行。
缺點:
- 只能提供到"某一時間點上"的恢復,不能最大可能的恢復數據;
- 數據量大時,恢復較慢。
7.導出exp參數說明
參數名 | 說明 | 默認值 |
---|---|---|
USERID | 用戶名/口令 | |
FULL | 導出整個文件 | N |
BUFFER | 數據緩沖區的大小 | |
OWNER | 導出指定的所有者用戶名列表 | |
FILE | 輸出文件 | (EXPDAT.DMP) |
TABLES | 導出指定的表名列表 | |
COMPRESS | 是否壓縮導出的文件 | Y |
RECORDLENGTH | IO 記錄的長度 | |
GRANTS | 導出權限 | Y |
INCTYPE | 增量導出類型 | |
INDEXES | 導出索引 | Y |
RECORD | 跟蹤增量導出 | Y |
ROWS | 導出數據行 | Y |
PARFILE | 參數文件名 | |
CONSTRAINTS | 導出限制 | Y |
CONSISTENT | 交叉表一致性 | |
LOG | 屏幕輸出的日志文件 | |
STATISTICS | 分析對象(ESTIMATE) | |
DIRECT | 直接路徑 | N |
TRIGGERS | 導出觸發器 | Y |
FEEDBACK | 顯示每 x 行 (0) 的進度 | |
FILESIZE | 各轉儲文件的最大尺寸 | |
QUERY | 選定導出表子集的子句 | |
TRANSPORT_TABLESPACE | 導出可傳輸的表空間元數據 | N |
TABLESPACES | 導出指定的表空間列表 |
8.導入imp參數說明
參數名 | 說明 | 默認值 |
---|---|---|
USERID | 用戶名/口令 | |
FULL | 導入整個文件 | N |
BUFFER | 數據緩沖區大小 | |
FROMUSER | 所有人用戶名列表 | |
FILE | 輸入文件 | (EXPDAT.DMP) |
TOUSER | 用戶名列表 | |
SHOW | 只列出文件內容 | N |
TABLES | 表名列表 | |
IGNORE | 忽略創建錯誤 | N |
RECORDLENGTH | IO記錄的長度 | |
GRANTS | 導入權限 | Y |
INCTYPE | 增量導入類型 | |
INDEXES | 導入索引 | Y |
COMMIT | 提交數組插入 | N |
ROWS | 導入數據行 | Y |
PARFILE | 參數文件名 | |
LOG | 屏幕輸出的日志文件 | |
CONSTRAINTS | 導入限制 | Y |
DESTROY | 覆蓋表空間數據文件 | N |
INDEXFILE | 將表/索引信息寫入指定的文件 | |
SKIP_UNUSABLE_INDEXES | 跳過不可用索引的維護 | N |
FEEDBACK | 每 x 行顯示進度 | |
TOID_NOVALIDATE | 跳過指定類型 ID 的驗證 | |
FILESIZE | 每個轉儲文件的最大大小 | |
STATISTICS | 始終導入預計算的統計信息 | |
RESUMABLE | 在遇到有關空間的錯誤時掛起 | |
RESUMABLE_NAME | 用來標識可恢復語句的文本字符串 | |
RESUMABLE_TIMEOUT | RESUMABLE 的等待時間 | |
COMPILE | 編譯過程, 程序包和函數 | Y |
STREAMS_CONFIGURATION | 導入 Streams 的一般元數據 | Y |
STREAMS_INSTANITATION | 導入 Streams 的實例化元數據 | N |
TRANSPORT_TABLESPACE | 導入可傳輸的表空間元數據 | |
TABLESPACES | 將要傳輸到數據庫的表空間 | |
DATAFILES | 將要傳輸到數據庫的數據文件 | |
TTS_OWNERS | 擁有可傳輸表空間集中數據的用戶 |