Import or Export dmp file(Oracle)
使用PL/SQL匯出資料庫時,可以匯出3種檔案,分別是
- ".dmp"檔:這是匯出整個資料庫的物件,包含Table裡的資料
- ".sql檔":這是利用T-sql的方式匯出
- ".pde檔":此檔案是PL/SQL自己的檔案,這相對起來比較小,可是有時候會失敗,目前原因不明
在Command mode中也可以進行匯入與匯出DB的動作:
Import
1.注意若匯入的物件已存在, 那麼會被略過並報錯, 跳至下一個物件匯入
2.若不想顯示報錯訊息可加上 ignore=y
1.匯入dmp檔中部分Table
imp UserName/Password@sid fromuser=UserName touser=UserName tables=table1,table2,table3 file=DmpPath log=LogPath
- UserName: 使用者名稱
- Password: 密碼
- sid: oracle service id
- fromuser: 匯入資料由哪個使用者提供
- touser: 匯入到哪個使用者
- file: dmp檔完整路徑,包含檔案名稱(Ex. 'C:\backup file\dmpFile.dmp'),若路徑沒有空格不需單引號
- log: 匯入時產生的Log檔存放路徑(Ex. 'C:\backup file\LogFile.log'),若路徑沒有空格不需單引號
- tables:需匯入的Table名稱
2.匯入dmp檔中所有檔案(如Table、Sequence、Procedure...), 不加上 full = y 指令預設也是全部匯入
imp UserName/Password@sid fromuser=UserName touser=UserName file=DmpPath log=LogPath
上述等同於下列
imp UserName/Password@sid full=y fromuser=UserName touser=UserName file=DmpPath log=LogPath
Export
1若想用 winzip 壓縮 dmp 檔, 只需要加上 compress=y
1. 匯出部分Table
exp username/password@sid tables=table1,table2,table3 file=DmpPath log=LogPath
或
exp username/password@sid tables=(table1,table2,table3) file=DmpPath log=LogPath
2.匯出所有檔案(如Table、Sequence、Procedure...), 不加上 full = y 指令預設也是全部匯出
exp username/password@sid file=DmpPath log=LogPath
上述等同於下列
exp username/password@sid full=y file=DmpPath log=LogPath
3.匯出指定 user 的所有檔案(如Table、Sequence、Procedure...)
exp username/password@sid full=y file=DmpPath owner=(system,sys) log=LogPath
4.匯出指定 Table 的部分資料
exp username/password@sid tables=(table1) query="where column like 'a%'" file=DmpPath log=LogPath
參考: http://wenku.baidu.com/view/017198eb4afe04a1b071de40.html
使用 Step by Step 方式 Import 或 Export
Export (備份):
開啟命令提示字元,輸入 "exp system/用戶密碼@資料庫名稱"
→ 詢問陣列緩衝區的大小(值的大小僅會影響備份速度)
→ 匯出檔案名稱(如:backup1.dmp,預設最後會將檔案匯出在 C 槽底下)
→ 詢問匯出類型(分為:1.整個資料庫 2.使用者 3.表格)
→ 接下來選項大部份都可選 "yes"(例如是否要壓縮) → 自動開始備份
Import (回復):
開啟命令提示字元,輸入 "imp system/用戶密碼@資料庫名稱"
→ 詢問從哪個檔案回復 → 詢問陣列緩衝區的大小
→ 詢問「是否僅列出匯入檔案的內容」(若選擇 "no",會逐步詢問以下的相關資料,否則會跳過一些步驟)
→ 告知「物件已存在,建立物件的錯誤被略過不予以處理」(預設值為 "no",則系統碰到錯誤就會顯示錯誤訊息)
→ 詢問「是否匯入整個匯出檔」(若選 "yes" 則會將原先所有 Export 的資料全部匯入;若選 "no" 則會詢問是要匯入哪位 User 的 Schema、哪一個 Table)
→ 自動開始回復
上述參考: http://sql.robbin0919.com/2010/01/oracle-expimp.html
Oracle 10g 新的 Import 指令(impdp)
參考: http://freetoad.pixnet.net/blog/post/23382633-oracle-10g-import-data-from-command
1.當匯入時遇到該物件已經存在了, 可使用參數 TABLE_EXISTS_ACTION
TABLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | REPLACE}
此參數是舊版 ignore 的取代加強版,不設定時預設為SKIP
SKIP若物件存在,則不匯入,跳至下個需處理的物件去處理,若有 CONTENT=DATA_ONLY 參數,則此參數是無效的
APPEND
從 DUMP 檔匯入資料至原先 TABLE 中, 原先 TABLE 資料不異動
TRUNCATE
先刪除(TRUNCATE)所有的資料,再從 DUMP 檔匯入資料至 TABLE 中
REPLACE
先 drops 存在的 TABLE,再從 DUMP 檔中的 DDL Create Table 及匯入資料至 TABLE,若有CONTENT=DATA_ONLY參數,則此參數是無效的
2.想核對 dmp 內的 table structure or function等 source 與目前的是否一致, 可使用參數 SQLFILE
加入參數 sqlfile=xxx.sql, 則產生 dmp 內 DDL script 的 SQL 指令於 xxx.SQL 內, 若以本例,就只會產生 create table.... 等 DDL script,
不會產生 insert into 資料的指令,有 SQLFILE=參數,就只產生 SQL file, 並不會對資料庫做任何異動
Example
The following is an example of using the SQLFILE parameter.
You can create the expfull.dmp dump file used in this example
by running the example provided for the Export FULL parameter. See FULL.
> impdp hr/hr DIRECTORY=dpump_dir1 DUMPFILE=expfull.dmp SQLFILE=dpump_dir2:expfull.sql
3.顯示工作中的明細, 可使用參數 STATUS
此參數是舊版 FEEDBACK 的取代版
Example:
The following is an example of using the STATUS parameter. You can create the expfull.dmp dump file used in this example by running the example provided for the Export FULL parameter. SeeFULL.
> impdp hr/hr NOLOGFILE=y STATUS=120 DIRECTORY=dpump_dir1 DUMPFILE=expfull.dmp
Example
Example 3-1 Performing a Data-Only Table-Mode Import
只會匯入資料,因為指令CONTENT=DATA_ONLY
> impdp hr/hr TABLES=employees CONTENT=DATA_ONLY DUMPFILE=dpump_dir1:table.dmp
NOLOGFILE=y
Example 3-2 Performing a Schema-Mode Import
匯入指定的SCHEMA HR,並且排除匯入EXCLUDE=設定的物件,及若TABLE資料有重覆,則DROP TABLE後 CREATE AND LOAD DATA FROM DMP FILE。
> impdp hr/hr SCHEMAS=hr DIRECTORY=dpump_dir1 DUMPFILE=expschema.dmp
EXCLUDE=CONSTRAINT,REF_CONSTRAINT,INDEX TABLE_EXISTS_ACTION=REPLACE
Example 3-3 Network-Mode Import of Schemas
> impdp hr/hr TABLES=employees REMAP_SCHEMA=hr:scott DIRECTORY=dpump_dir1
NETWORK_LINK=dblink
這裡列出IMPORT舊版與新版參數的差異....
Original Import Parameter | Comparable Data Pump Import Parameter |
BUFFER | A parameter comparable to BUFFER is not needed. |
CHARSET | A parameter comparable to CHARSET is not needed. |
COMMIT | A parameter comparable to COMMIT is not supported. |
COMPILE | A parameter comparable to COMPILE is not supported. |
CONSTRAINTS | EXCLUDE=CONSTRAINT |
DATAFILES | TRANSPORT_DATAFILES |
DESTROY | REUSE_DATAFILES |
FEEDBACK | STATUS |
FILE | DUMPFILE |
FILESIZE | Not necessary. It is included in the dump file set. |
FROMUSER | SCHEMAS |
FULL | FULL |
GRANTS | EXCLUDE=GRANT |
HELP | HELP |
IGNORE | TABLE_EXISTS_ACTION |
INDEXES | EXCLUDE=INDEX |
INDEXFILE | SQLFILE with INCLUDE INDEX |
LOG | LOGFILE |
PARFILE | PARFILE |
RECORDLENGTH | A parameter comparable to RECORDLENGTH is not needed. |
RESUMABLE | A parameter comparable to RESUMABLE is not needed. It is automatically defaulted for privileged users. |
RESUMABLE_NAME | A parameter comparable to RESUMABLE_NAME is not needed. It is automatically defaulted for privileged users. |
RESUMABLE_TIMEOUT | A parameter comparable to RESUMABLE_TIMEOUT is not needed. It is automatically defaulted for privileged users. |
ROWS=N | CONTENT=METADATA_ONLY |
ROWS=Y | CONTENT=ALL |
SHOW | SQLFILE |
SKIP_UNUSABLE_INDEXES | SKIP_UNUSABLE_INDEXES |
STATISTICS | A parameter comparable to STATISTICS is not needed. If the source table has statistics, they are imported. |
STREAMS_CONFIGURATION | STREAMS_CONFIGURATION |
STREAMS_INSTANTIATION | A parameter comparable to STREAMS_INSTANTIATION is not needed. |
TABLES | TABLES |
TABLESPACES | This parameter still exists, but some of its functionality is now performed using the TRANSPORT_TABLESPACESparameter. |
TOID_NOVALIDATE | A command comparable to TOID_NOVALIDATE is not needed. OIDs are no longer used for type validation. |
TOUSER | REMAP_SCHEMA |
TRANSPORT_TABLESPACE | TRANSPORT_TABLESPACES (see command description) |
TTS_OWNERS | A parameter comparable to TTS_OWNERS is not needed because the information is stored in the dump file set. |
USERID | A parameter comparable to USERID is not needed. This information is supplied as theusername/password when you invoke Import. |
VOLSIZE | A parameter comparable to VOLSIZE is not needed because tapes are not supported. |