41
  • で作成された Oracle データベースのバックアップ ファイル (.dmp) がありexpdpます。
  • .dmp ファイルは、データベース全体のエクスポートです。
  • このダンプ ファイル内からスキーマの 1 つを復元する必要があります。
  • このダンプ ファイル内のスキーマの名前がわかりません。
  • データのインポートに使用impdpするには、ロードするスキーマの名前が必要です。

.dmp ファイルを調べて、その中のすべてのスキーマを一覧表示する必要があります。


更新 (2008-09-18 13:02) - 詳細情報:

私が現在使用しているimpdpコマンドは次のとおりです。

impdp user/password@database directory=DPUMP_DIR 
      dumpfile=EXPORT.DMP logfile=IMPORT.LOG  

また、DPUMP_DIR が正しく構成されています。

SQL> SELECT directory_path
2  FROM dba_directories
3  WHERE directory_name = 'DPUMP_DIR';

DIRECTORY_PATH
-------------------------
D:\directory_path\dpump_dir\

はい、EXPORT.DMP ファイルは実際にはそのフォルダーにあります。

impdpコマンドを実行したときに表示されるエラー メッセージは次のとおりです。

Connected to: Oracle Database 10g Enterprise Edition ...
ORA-31655: no data or metadata objects selected for the job
ORA-39154: Objects from foreign schemas have been removed from import

ほとんどの場合、このエラー メッセージは予期されたものです。impdpコマンドが必要です:

impdp user/password@database directory=DPUMP_DIR dumpfile=EXPORT.DMP 
      SCHEMAS=SOURCE_SCHEMA REMAP_SCHEMA=SOURCE_SCHEMA:MY_SCHEMA

しかし、それを行うには、ソース スキーマが必要です。

4

8 に答える 8

92

impdpパラメータを使用すると、バックアップのDDLがdmpファイルにエクスポートされます。たとえば、これをテキストファイルに入れますSQLFILE

impdp '/ as sysdba' dumpfile=<your .dmp file> logfile=import_log.txt sqlfile=ddl_dump.txt

次にddl_dump.txt、バックアップ内のテーブルスペース、ユーザー、およびスキーマを確認します。

ドキュメントによると、これは実際にはデータベースを変更しません。

SQLは実際には実行されず、ターゲットシステムは変更されません。

于 2011-07-15T14:31:05.423 に答える
13

大きなファイルを処理できるエディターで DMP ファイルを開くと、スキーマ名が記載されている領域を見つけることができる場合があります。何も変更しないようにしてください。元のダンプのコピーを開いた方がよいでしょう。

于 2008-09-19T06:25:02.473 に答える
11

更新 (2008-09-19 10:05) - 解決策:

私の解決策:ソーシャル エンジニアリングを徹底的に調べて、スキーマ名を知っている人を見つけました。
技術的な解決策: .dmp ファイルを検索すると、スキーマ名が得られました。
スキーマ名がわかったら、ダンプ ファイルを検索し、その場所を見つけました。

.dmp ファイルで、スキーマ名が表示された場所:

  • <OWNER_NAME>SOURCE_SCHEMA</OWNER_NAME> これは、各テーブル名/定義の前に見られました。

  • SCHEMA_LIST 'SOURCE_SCHEMA' これは、.dmp の末尾近くで見られました。

興味深いことに、SCHEMA_LIST 'SOURCE_SCHEMA'セクションの周りには、ダンプの作成に使用されたコマンド ライン、使用されたディレクトリ、使用された par ファイル、実行された Windows のバージョン、およびエクスポート セッションの設定 (言語、日付形式) も含まれていました。

だから、問題は解決しました:)

于 2008-09-19T16:27:05.747 に答える
6

最初にファイルを生成した expdp ジョブからのログ ファイルがない場合、SQLFILE パラメータを使用して impdp に DDL のファイルを生成させるのが最も簡単な方法でしょう (フル インポートに基づく)。次に、そのファイルからスキーマ名を取得できます。もちろん、impdp はダンプ ファイル全体を読み取って DDL を抽出し、次に関心のあるスキーマに到達する必要があるため、理想的ではありません。さまざまな CREATE USER ステートメントを検索するテキスト ファイルを少し実行する必要があります。 、しかしそれは実行可能なはずです。

于 2008-09-19T06:21:24.230 に答える
4

ステップ 1: これは簡単な例です。オプションを使用して、ダンプ ファイルから SQL ファイルを作成する必要がありSQLFILEます。

ステップ 2:CREATE USER生成された SQL ファイル (ここでは tables.sql) をgrep します。

例:

$ impdp directory=exp_dir dumpfile=exp_user1_all_tab.dmp  logfile=imp_exp_user1_tab sqlfile=tables.sql

インポート: リリース 11.2.0.3.0 - 2013 年 4 月 26 日金曜日 08:29:06 の本番環境

Copyright (c) 1982, 2011、Oracle および/またはその関連会社。全著作権所有。

ユーザー名: / as sysdba

オブジェクト タイプ SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA の処理ジョブ "SYS"."SYS_SQL_FILE_FULL_01" は 08:29:12 に正常に完了しました

$ grep "CREATE USER" tables.sql

値「S:270D559F9B97C05EA50F78507CD6EAC6AD63969E5E;BBE7786A5F9103」で識別されるユーザー「USER1」を作成します

ここで説明されている多くのデータポンプオプションhttp://www.acehints.com/p/site-map.html

于 2013-04-26T06:34:04.027 に答える
4

impdp コマンドを実行して sqlfile を生成するには、DATAPUMP_IMP_FULL_DATABASE ロールを持つユーザーとして実行する必要があります。

または...権限の低いユーザーとして実行し、MASTER_ONLY=YESオプションを使用してから、マスターテーブルを調べます。例えば

select value_t 
from SYS_IMPORT_TABLE_01 
where name = 'CLIENT_COMMAND' 
and process_order = -59;

col object_name for a30
col processing_status head STATUS for a6
col processing_state head STATE for a5
select distinct
  object_schema,
  object_name,
  object_type,
  object_tablespace,
  process_order,
  duplicate,
  processing_status,
  processing_state
from sys_import_table_01
where process_order > 0
and object_name is not null
order by object_schema, object_name
/

http://download.oracle.com/otndocs/products/database/enterprise_edition/utilities/pdf/oow2011_dp_mastering.pdf

于 2013-01-22T01:49:54.880 に答える