dmpファイルがexpであるかexpdpであるかを判断する方法

4171 ワード

今日は友達がdmpファイルをインポートしてくれて、何も教えてくれませんでした.最後にインポートに成功しました.簡単なテストをします.
テストエクスポート2分ファイル1部はexpdpでエクスポートし、1部はexpでエクスポートします
expdp system/redhat dumpfile=rmantest.dmp directory=orabak tables=rmantest.tt
exp system/redhat file=/orabak/exprman.dmp tables=rmantest.tt
そしてultraedit編集ツールでこの2つのファイルを開きます
expdpがエクスポートしたファイルヘッダ情報は、次のとおりです.
00000000h: 03 01 7C 1D 2C DA 00 67 80 BC 00 00 36 5E 01 E7 ; ..|.,?g€?.6^.?
00000010h: 41 AC 43 7C 7D 07 57 E0 45 00 00 00 00 00 01 00 ; A |}.W .......
00000020h: 00 00 01 00 00 10 00 03 69 07 DD 09 1A 0B 07 3A ; ........i.?...:
00000030h: 00 00 00 02 02 00 00 00 00 04 00 00 00 00 00 01 ; ................
00000040h: 33 A8 00 22 53 59 53 54 45 4D 22 2E 22 53 59 53 ; 3?"SYSTEM"."SYS
00000050h: 5F 45 58 50 4F 52 54 5F 54 41 42 4C 45 5F 30 31 ; _EXPORT_TABLE_01
00000060h: 22 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; "...............
00000070h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000080h: 00 00 00 00 00 78 38 36 5F 36 34 2F 4C 69 6E 75 ; .....x86_64/Linu
00000090h: 78 20 32 2E 34 2E 78 78 00 00 00 00 00 00 00 00 ; x 2.4.xx........
000000a0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
000000b0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
000000c0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
000000d0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
000000e0h: 00 00 00 00 00 00 00 00 00 00 6F 72 63 6C 00 00 ; ..........orcl..
000000f0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000100h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000110h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
00000120h: 00 00 00 00 00 00 00 41 4C 33 32 55 54 46 38 00 ; .......AL32UTF8.

expがエクスポートしたファイルのヘッダ情報は、次のとおりです.
00000000h: 03 03 54 45 58 50 4F 52 54 3A 56 31 30 2E 30 32 ; ..TEXPORT:V10.02
00000010h: 2E 30 31 0A 44 53 59 53 54 45 4D 0A 52 54 41 42 ; .01.DSYSTEM.RTAB
00000020h: 4C 45 53 0A 32 30 34 38 0A 30 0A 32 30 0A 30 0A ; LES.2048.0.20.0.
00000030h: 03 54 03 69 03 67 00 01 00 00 00 00 00 00 00 00 ; .T.i.g..........
00000040h: 00 0E 00 20 20 20 20 20 20 20 20 20 20 20 20 20 ; ...             
00000050h: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;                 
00000060h: 20 20 20 20 20 D0 C7 C6 DA CB C4 20 39 D4 C2 20 ;          9  
00000070h: 32 36 20 31 31 3A 34 35 3A 32 39 20 32 30 31 33 ; 26 11:45:29 2013
00000080h: 63 3A 5C 65 78 70 72 6D 61 6E 2E 64 6D 70 00 00 ; c:\exprman.dmp..
00000090h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
000000a0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
000000b0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................
000000c0h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; ................

expdpからエクスポートされたファイルにはインスタンス名とデータベース文字セットが表示され、ユーザーと表領域が分からない場合はimpdpにインポートされたエラーログに基づいて知ることができます.
一方、expがエクスポートしたファイルには文字セットの情報は表示されませんが、impインポート時のヒント情報で知ることができます.以下に示します.
[oracle@ora11g ~]$ imp system/redhat file=/orabak/exprman.dmp fromuser=rmantest1 touser=rmantes1t
Import: Release 11.2.0.3.0 - Production on Thu Sep 26 13:55:42 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

Export file created by EXPORT:V11.02.00 via conventional path
import done in US7ASCII character set and UTF8 NCHAR character set
import server uses AL32UTF8 character set (possible charset conversion)
IMP-00034: Warning: FromUser "RMANTEST1" not found in export file
Import terminated successfully with warnings.

一方、imp-00034というエラーは、ユーザーがexpからエクスポートしたファイルを見つけることができず、UltraEditツールでexpからエクスポートしたファイルを開いて正しいユーザーを探すことができるということです.
したがって、expがエクスポートしたファイルでも、expdpがエクスポートしたファイルでも、文字セットやユーザー、表領域が分かれば簡単にインポートできます.
他の人から送られたdmpファイルが大きい場合はultraeditで開くのは遅くなりますlinuxのddコマンドでdmpファイルのヘッダ情報を切り取ることができます
dd if=yourdmpfile.dmp of=newfile.dmp bs=1M count=1
次にnewfileを開きます.dmpファイルでいいです.