2011-11-18 41 views
10

我有一个oracle完整转储。我知道我必须把这个转储与fromusertouser条款。但是我不知道转储中包含的模式的名称。列出Oracle导出转储文件的内容

如何打开使用Oracle 10g创建的转储以检查和分析内容?

回答

11

只需使用SHOW=Y参数

IMP SCOTT/TIGER SHOW=Y FILE=import_file.dmp 
+0

就是用这种方式导入模拟并且没有对数据库进行实际操作? – Kerby82

+0

是的,没有真正的操作在数据库上完成。 @ Kerby82 – Sathya

2
imp SCOTT/tiger show=Y fiLE=IMPORT_FILE.DMP log=**logfile.log** fromuser=scott touser=scott 

如果你只在对象名和模式的名称感兴趣,这是很好的对象中表中没有的内容列表。

一旦您的命令成功完成,请使用您喜欢的文本编辑器(如notepad/vim)通过添加参数LOG = logfile.log来打开由imp命令生成的日志文件。 在这个文件中,imp命令将输出它将执行的所有动作作为真实情况。 现在在每个位置上搜索“”文本“”,您将获得SCHEMA NAMES,然后是该模式中包含的object_names。

后面是创建/更改对象的命令,因为它们在原始数据库中。
之后,数据插入将被模拟,您可能会知道每个模式中有多少条记录。

但它不会列出它们。导入只是一个表EMP

---------开始小鬼命令的输出

导入示例文件--------

Export file created by EXPORT:V10.02.01 via conventional path 
import done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set 

**. importing SCOTT's objects into SCOTT** 
"ALTER SESSION SET CURRENT_SCHEMA= "SCOTT"" 
"CREATE TABLE "EMP" ("EMPNO" NUMBER(4, 0), "ENAME" VARCHAR2(10), "JOB" VARCH" 
"AR2(9), "MGR" NUMBER(4, 0), "HIREDATE" DATE, "SAL" NUMBER(7, 2), "COMM" NUM" 
"BER(7, 2), "DEPTNO" NUMBER(2, 0)) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRAN" 
"S 255 STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAU" 
"LT) TABLESPACE "USERS" LOGGING NOCOMPRESS" 
. . skipping table "EMP"         

"CREATE UNIQUE INDEX "PK_EMP" ON "EMP" ("EMPNO") PCTFREE 10 INITRANS 2 MAX" 
"TRANS 255 STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL D" 
"EFAULT) TABLESPACE "USERS" LOGGING" 
"ALTER SESSION SET CURRENT_SCHEMA= "SCOTT"" 
"ALTER TABLE "EMP" ADD CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO") USING INDE" 
"X PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 FREELISTS 1 FREE" 
"LIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" LOGGING ENABLE " 

"ALTER TABLE "EMP" ADD CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO") REFEREN" 
"CES "DEPT" ("DEPTNO") ENABLE NOVALIDATE" 
"ALTER TABLE "EMP" ENABLE CONSTRAINT "FK_DEPTNO"" 

Import terminated successfully without warnings. 

- -------出小鬼命令结束---------

Look here

这个工具的权利要求,并提供你采取转储文件,并把d ata转换成Excel/Access/CSV格式的文件。这可能是你正在寻找的。

它表明什么用了导入的表到真正的数据库内

以防万一有人想找到它转储文件包含所需的数据。

而不是通过所有旧的转储,你应该保持一个日志文件与每个DUMPFILE后缀的相同名称附加它的日期和时间。
FULL_DB_DUMP_15012014_1240pm.DMP

,让您只需打开相关日志文件,以获得该文件包含您的需要或兴趣是什么模式的想法。

[2]:关于第二个想法:如果您的转储文件高达2GB,并且您可以识别ORACLE SQL。
以只读模式使用像HxD,Hexor,HexEdit这样的十六进制编辑器打开转储文件。一旦打开,您可以浏览二进制/ ASCII形式的转储文件的内容。这可能是一个粗略的方法,但它会给你一个模式和对象名称的DDL的一部分视图与一些内容的视图/触发器/函数/程序等。虽然,你将无法阅读&了解整个内容。但它服务于此目的。也许相对较快。

0

如果您在UNIX环境中工作,则可以使用命令字符串来显示转储文件中的可读信息。

strings test.dmp | grep CREATE。* TABLE