Oracle

如何找到數據泵 dmp 文件的模式名稱?

  • September 19, 2013

我獲得了一個 DMP 數據泵導出文件,可以導入到我的本地 Oracle 實例中。我試過執行這個命令行:

impdp full=Y 目錄=DATA_PUMP_DIR dumpfile=MyDumpFile.dmp logfile=import.log

我得到錯誤:

ORA-31655: 沒有為作業選擇數據或元數據對象

ORA-39154: 來自外部模式的對像已從導入中刪除

並且沒有數據被導入。

根據我的Google搜尋,一個可能的原因是我需要指定remap_schama. 但我不知道 dmp 文件中架構的名稱是什麼。有什麼簡單的方法可以查出來嗎?

**編輯:**我沒有找到這個問題的解決方案,但我確實找到了解決方法……我找到了製作 DMP 的人,並從他那裡得到了模式名稱。remap_schema根據他的定義指定,Hey Presto!

使用sqlfile=參數 ofimpdp生成包含轉儲中所有 DDL/DML 的文件。

例如:

[oracle@oel61 ~]$ impdp phil/phil directory=oracledmp dumpfile=phil.dmp logfile=phil.log sqlfile=philddl.txt

Import: Release 11.2.0.2.0 - Production on Wed Mar 13 15:15:03 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
Master table "PHIL"."SYS_SQL_FILE_FULL_01" successfully loaded/unloaded
Starting "PHIL"."SYS_SQL_FILE_FULL_01":  phil/******** directory=oracledmp dumpfile=phil.dmp logfile=phil.log sqlfile=philddl.txt 
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "PHIL"."SYS_SQL_FILE_FULL_01" successfully completed at 15:15:05

[oracle@oel61 ~]$ 

在文件中查找CREATE USERDDL 語句應該會告訴您執行導入需要哪些模式。

例如,從我的測試轉儲中:

-- new object type path: SCHEMA_EXPORT/USER
-- CONNECT SYSTEM
CREATE USER "PHIL" IDENTIFIED BY VALUES 'S:924B2E756404611021428644B4DF06A4A7BAB886837FCCFA510151E0FC44;181446AE258EE2F6'
     DEFAULT TABLESPACE "PHILDATA"
     TEMPORARY TABLESPACE "TEMP";
-- new object type path: SCHEMA_EXPORT/SYSTEM_GRANT
GRANT UNLIMITED TABLESPACE TO "PHIL";
GRANT CREATE SESSION TO "PHIL";
-- new object type path: SCHEMA_EXPORT/ROLE_GRANT
GRANT "DBA" TO "PHIL";
-- new object type path: SCHEMA_EXPORT/DEFAULT_ROLE
ALTER USER "PHIL" DEFAULT ROLE ALL;

唯一的缺點是,如果 .dmp 文件很大,則生成的 SQL 轉儲會很大。

引用自:https://dba.stackexchange.com/questions/36583