web-dev-qa-db-fra.com

Comment importer une base de données Oracle à partir d'un fichier dmp et d'un fichier journal?

Comment pourrais-je créer une base de données à partir d'un fichier dmp? Je n'ai pas de base de données existante avec la même structure sur mon système, elle doit donc être complète avec des travaux, des événements, des tables, etc. 

J'ai placé dmp et le fichier journal dans le lecteur E:

J'ai essayé l'utilitaire d'importation 

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

Mais je reçois une erreur comme

invalid argument value
bad dump file specification
unable to open dump file "E:\app\Vensi\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.

Et quand je vois dans l'Explorateur Windows, le fichier dmp (provenant du serveur Linux) s'affiche en tant que fichier de vidage sur incident

Je ne comprends pas comment je peux résoudre ce problème. S'il vous plaît aidez-moi à résoudre ce problème.

Je suis un débutant sur Oracle ... 

59
praveenb

Comment la base de données a-t-elle été exportée?

  • S'il a été exporté à l'aide de exp et qu'un schéma complet a été exporté,

    1. Créez l'utilisateur:

      create user <username> identified by <password> default tablespace <tablespacename> quota unlimited on <tablespacename>;
      
    2. Accorder les droits:

      grant connect, create session, imp_full_database to <username>;
      
    3. Commencez l'importation avec imp:

      imp <username>/<password>@<hostname> file=<filename>.dmp log=<filename>.log full=y;
      
  • S'il a été exporté avec expdp, lancez l'importation avec impdp:

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

En regardant le journal des erreurs, il semble que vous n’ayez pas spécifié le répertoire. Oracle essaie donc de trouver le fichier dmp dans le répertoire par défaut (c.-à-d. E:\app\Vensi\admin\oratest\dpdump\).

Déplacez le fichier d'exportation vers le chemin ci-dessus ou créez un objet de répertoire pointant vers le chemin où se trouve le fichier dmp et transmettez le nom de l'objet à la commande impdp ci-dessus.

92
Sathyajith Bhat

Toute cette paix de code mise dans un fichier * .bat et exécutée en une fois:

Mon code pour créer un utilisateur dans Oracle. fichier 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";

créez le fichier import.bat et mettez-y ces lignes:

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

Attention si vous importez d'un utilisateur à un autre. Par exemple, si vous avez un utilisateur nommé utilisateur1 et que vous importerez dans utilisateur2, vous risquez de perdre toutes les attributions.

Bonne chance, Ivan

4

Si vous utilisez impdp} exemple de commande de la réponse @ sathyajith-bhat:

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

vous devrez utiliser le paramètre obligatoire répertoire et le créer et l’accorder comme suit:

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

ou utilisez l'un des définis:

select * from DBA_DIRECTORIES;

Mon Oracle Express 11g R2 a par défaut le nom DATA_PUMP_DIR (situé à l'adresse {rép_install}\app\Oracle/admin/xe/dpdump /) que vous devez encore accorder à votre utilisateur.

0
Marek-A-