77

ダンプファイルからデータベースを作成するにはどうすればよいですか?システムに同じ構造の既存のデータベースがないため、ジョブ、イベント、テーブルなどを備えている必要があります。

ダンプとログファイルをE:ドライブに配置しました

インポートユーティリティを試しました

E:/>impdp system/tiger@oratest FILE=WB_PROD_FULL_20MAY11.dmp

しかし、私は次のようにエラーが発生しています

invalid argument value
bad dump file specification
unable to open dump file "E:\app\admin\oratest\dpdump\WB_PROD_F
ULL_20MAY11.dmp" for read
unable to open file
unable to open file
(OS 2) The system cannot find the file specified.

そして、Windowsエクスプローラーで見ると、DMPファイル(Linuxサーバーから取得)がクラッシュダンプファイルとして表示されています

この問題を解決する方法がわかりません。この問題を解決するのを手伝ってください。

私はOracleの完全な初心者です...

4

3 に答える 3

119

データベースはどのようにエクスポートされましたか?

  • を使用expしてエクスポートされ、完全なスキーマがエクスポートされた場合は、

    1. ユーザーを作成します。

      create user <username> identified by <password> default tablespace <tablespacename> quota unlimited on <tablespacename>;
      
    2. 権利を付与します。

      grant connect, create session, imp_full_database to <username>;
      
    3. インポートを開始しimpます:

      imp <username>/<password>@<hostname> file=<filename>.dmp log=<filename>.log full=y;
      
  • を使用してエクスポートされた場合はexpdp、次のコマンドでインポートを開始しimpdpます。

    impdp <username>/<password> directory=<directoryname> dumpfile=<filename>.dmp logfile=<filename>.log full=y;
    

dmpエラーログを見ると、ディレクトリが指定されていないように見えるため、Oracleはデフォルトのディレクトリ(つまり、)でファイルを見つけようとしますE:\app\Vensi\admin\oratest\dpdump\

エクスポートファイルを上記のパスに移動するか、ファイルが存在するパスを指すディレクトリオブジェクトを作成しdmp、オブジェクト名をimpdp上記のコマンドに渡します。

于 2011-06-24T05:40:15.900 に答える
7

このすべてのコードの平和は*.batファイルに入れられ、一度に実行されます。

Oracleでユーザーを作成するための私のコード。crate_drop_user.sqlファイル

drop user "USER" cascade;
DROP TABLESPACE "USER";

CREATE TABLESPACE USER DATAFILE 'D:\ORA_DATA\ORA10\USER.ORA' SIZE 10M REUSE 
    AUTOEXTEND 
    ON NEXT  5M  EXTENT MANAGEMENT LOCAL 
    SEGMENT SPACE MANAGEMENT  AUTO
/ 

CREATE  TEMPORARY TABLESPACE "USER_TEMP" TEMPFILE 
    'D:\ORA_DATA\ORA10\USER_TEMP.ORA' SIZE 10M REUSE AUTOEXTEND
    ON NEXT  5M  EXTENT MANAGEMENT LOCAL 
    UNIFORM SIZE 1M    
/

CREATE USER "USER"  PROFILE "DEFAULT" 
    IDENTIFIED BY "user_password" DEFAULT TABLESPACE "USER" 
    TEMPORARY TABLESPACE "USER_TEMP" 
/    

alter user USER quota unlimited on "USER";

GRANT CREATE PROCEDURE TO "USER";
GRANT CREATE PUBLIC SYNONYM TO "USER";
GRANT CREATE SEQUENCE TO "USER";
GRANT CREATE SNAPSHOT TO "USER";
GRANT CREATE SYNONYM TO "USER";
GRANT CREATE TABLE TO "USER";
GRANT CREATE TRIGGER TO "USER";
GRANT CREATE VIEW TO "USER";
GRANT "CONNECT" TO "USER";
GRANT SELECT ANY DICTIONARY to "USER";
GRANT CREATE TYPE TO "USER";

import.batファイルを作成し、次の行をその中に入れます。

SQLPLUS SYSTEM/systempassword@ORA_alias @"crate_drop_user.SQL"
IMP SYSTEM/systempassword@ORA_alias FILE=user.DMP FROMUSER=user TOUSER=user GRANTS=Y log =user.log

あるユーザーから別のユーザーにインポートする場合は注意してください。たとえば、user1という名前のユーザーがいて、user2にインポートする場合、すべての付与が失われる可能性があるため、再作成する必要があります。

頑張って、イワン

于 2016-06-23T12:44:28.807 に答える
2

@ sathyajith-bhat応答のimpdpコマンドの例を使用している場合:

impdp <username>/<password> directory=<directoryname> dumpfile=<filename>.dmp logfile=<filename>.log full=y;

必須のパラメータディレクトリを使用して、次のように作成して付与する必要があります。

CREATE OR REPLACE DIRECTORY DMP_DIR AS 'c:\Users\USER\Downloads';
GRANT READ, WRITE ON DIRECTORY DMP_DIR TO {USER};

または、次のいずれかを使用します。

select * from DBA_DIRECTORIES;

私のORACLEExpress11g R2のデフォルトの名前はDATA_PUMP_DIR({inst_dir} \ app \ oracle / admin / xe / dpdump /にあります)であり、ユーザーに付与する必要があります。

于 2019-01-02T10:04:57.683 に答える