IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Import/Export Oracle Discussion :

Création/restauration de dump avec TOUT.


Sujet :

Import/Export Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut Création/restauration de dump avec TOUT.
    Bonjour,

    Je dois créer et restaurer un dump Oracle pour la première fois (je roule ma bosse sur Sql Server mais je n'ai encore jamais touché à Oracle).

    Le souci est que personne chez nous ne sait vraiment comment faire. Alors y a bien quelqu'un (qui ne travaille plus ici entre temps) qui à force de test à réussi à établir une procédure qui fonctionne plus ou moins mais bien sûr quand je la suis, ça merde lors de l'import du dump avec l'erreur "Schema xxxx; was not found."

    Le truc qui me semble bizarre c'est qu'avant de réimporter le dump, y a tout un tas de create user et de grant à faire. Et aussi la création de tablespace mais ça, même si je ne vois pas exactement ce que c'est, je peux comprendre que ce soit nécessaire à faire la première fois (j'imagine que ça sert à créer l'espace disque où il va pouvoir restaurer le dump).

    Ce que je me dis, c'est qu'on utilise très mal le machin et qu'il y doit y avoir moyen de produire un dump qui contient TOUT. Mais vraiment tout. Les users, les grants, etc. Et de pouvoir restaurer ce dump sans avoir à faire 3 millions de choses préalablement.

    Du coup, je viens chercher les lumières de la communauté car dans la doc d'oracle, j'vois plein de paramètre (notamment le full=y) mais rien n'y fait.

    J'ai réussi à créer un dump avec full=y qui est effectivement bien plus volumineux que celui de la procédure que j'ai suivie qui, si j'ai bien compris, n'exporte qu'un schéma (vu qu'il y a le paramètre schéma=xxx lors de l'exécution de expdp). Mais quand j'ai voulu réimporter le dump créé avec full=y, ça a merdé. Pour info, voici les quelques premières lignes du fichier log de ma tentative de restauration du dump full.
    ;;; Import: Release 18.0.0.0.0 - Production on Fri Aug 9 10:46:11 2019
    Version 18.3.0.0.0


    Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.
    ;;;
    Connected to: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
    Master table "SYS"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
    Starting "SYS"."SYS_IMPORT_FULL_01": sys/********@oracle18pluggable AS SYSDBA directory=DATA_PUMP_DIR dumpfile=AGITO_FULL_20190808.DMP logfile=AGITO_FULL_IMPORT.log
    Processing object type DATABASE_EXPORT/TABLESPACE
    ORA-31684: Object type TABLESPACE:"SYSAUX" already exists
    ORA-31684: Object type TABLESPACE:"UNDOTBS1" already exists
    ORA-31684: Object type TABLESPACE:"TEMP" already exists
    ORA-31684: Object type TABLESPACE:"USERS" already exists
    ORA-39083: Object type TABLESPACE:"GINIUS" failed to create with error:
    ORA-01119: error in creating database file 'C:\ORACLE\ORADATA\AGITODEV\GINIUS.DBF'
    ORA-27040: file create error, unable to create file
    OSD-04002: unable to open file
    O/S-Error: (OS 3) The system cannot find the path specified.


    Failing sql is:
    CREATE TABLESPACE "GINIUS" DATAFILE 'C:\ORACLE\ORADATA\AGITODEV\GINIUS.DBF' SIZE 4294967296 AUTOEXTEND ON NEXT 268435456 MAXSIZE 16384M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO
    ORA-39083: Object type TABLESPACE:"INDX" failed to create with error:
    ORA-01119: error in creating database file 'C:\ORACLE\ORADATA\AGITODEV\INDX.DBF'
    ORA-27040: file create error, unable to create file
    OSD-04002: unable to open file
    O/S-Error: (OS 3) The system cannot find the path specified.


    Failing sql is:
    CREATE TABLESPACE "INDX" DATAFILE 'C:\ORACLE\ORADATA\AGITODEV\INDX.DBF' SIZE 536870912 AUTOEXTEND ON NEXT 134217728 MAXSIZE 4096M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO

    ORA-39083: Object type TABLESPACE:"COBBT1010" failed to create with error:
    ORA-01119: error in creating database file 'C:\ORACLE\ORADATA\AGITODEV\COBBT1010.DBF'
    ORA-27040: file create error, unable to create file
    OSD-04002: unable to open file
    O/S-Error: (OS 3) The system cannot find the path specified.


    Failing sql is:
    CREATE TABLESPACE "COBBT1010" DATAFILE 'C:\ORACLE\ORADATA\AGITODEV\COBBT1010.DBF' SIZE 33554432 AUTOEXTEND ON NEXT 33554432 MAXSIZE 2048M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO

    ORA-39083: Object type TABLESPACE:"SPTL_INDX" failed to create with error:
    ORA-01119: error in creating database file 'C:\ORACLE\ORADATA\AGITODEV\SPTL_INDX.DBF'
    ORA-27040: file create error, unable to create file
    OSD-04002: unable to open file
    O/S-Error: (OS 3) The system cannot find the path specified.
    Y a beaucoup plus de log bien sûr (malgré que je l'ai killé dès que j'ai vu que ça merdait, il a eu le temps de tenter de faire un paquet de trucs).

    Voilà je m'arrête là. Sorry pour ce message qui est probablement un peu décousu et merci d'avance à ceux qui prendront la peine d'y répondre.

    EDIT : J'ai oublié de préciser que c'est pour migrer une db depuis une instance 11G vers une instance 18C.

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Alors en très bref :

    Si vous faites un export FULL, et un import FULL également, l'opération se charge notamment de recréer les tablespaces à l'identique de la source.
    Mais il faut pour ça que les chemins existent préalablement.
    Une chose qu'on voit dans votre log, c'est que le chemin "C:\ORACLE\ORADATA\AGITODEV" n'existe pas.

    Par ailleurs, il faut vous méfier quand vous parlez de killer l'import.
    Avec Datapump, les opérations se poursuivent en tâche de fond sur le serveur, peu importe que vous ayez tué la session (fenêtre DOS) dans laquelle vous avez lancé impdp.

  3. #3
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Déjà, merci pour la réponse.

    Maintenant, comment obtenir la liste des chemins à créer ?

    Entre temps, j'ai relancer l'import du dump de la procédure que j'ai suivi et qui n'exporte qu'un schéma. J'ai juste eu à retirer le paramètre SCHEMA de la comme de l'import.

    Pourrai-je encore tenter de faire un import du dump full une fois celui-ci terminer ou bien cela va-t-il gêner oracle car des trucs existeront déjà ?

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Pour les chemins à créer, vous pouvez lancer la requête suivante sur la base initiale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    col name format A100
    SELECT NAME FROM V$TEMPFILE
    UNION
    SELECT NAME FROM V$DATAFILE
    UNION
    SELECT MEMBER FROM V$LOGFILE
    UNION
    SELECT NAME FROM V$CONTROLFILE
    ORDER BY 1;
    Et pour une nouvelle tentative d'import, effectivement il faudra faire du ménage préalablement.

  5. #5
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Ok ça donne bien un résultat mais je suis dubitatif.

    Lorsque je suis connecté avec ce que je pense être le user ayant le plus de droit (équivalent de sysadmin en sql server), j'ai ceci :
    Nom : sysdba.png
Affichages : 4460
Taille : 12,7 Ko
    Je m'attendais à voir TOUT mais manifestement pas vu qu'il n'y a pas les chemins concernés par mon dump.

    Du coup, je me suis connecté avec l'utilisateur GINIUS et j'ai ceci :
    Nom : ginius.png
Affichages : 4473
Taille : 16,5 Ko

    Je me suis un moment demandé si le tns AGITODEV ne pointait pas sur un autre serveur mais non, c'est le même. Du coup, je ne comprends pas.

    Auriez-vous des ressources claires concernant l'organisation d'oracle pour que je comprenne comment il gère ses users, ses db, etc ?

  6. #6
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Vous n'êtes manifestement pas dans la même base d'un côté et de l'autre !

    Pour savoir où vous êtes, vous pouvez faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT HOST_NAME, INSTANCE_NAME FROM V$INSTANCE;

  7. #7
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Citation Envoyé par Pomalaix Voir le message
    Et pour une nouvelle tentative d'import, effectivement il faudra faire du ménage préalablement.
    Je n'ai pas encore cherché mais n'existe-t-il pas une option pour lui dire qu'il peut écraser si jamais il tombe sur un truc qui existe déjà ?
    Histoire de ne pas à voir faire du ménage.

    Car lorsqu'on refresh un db d'acceptance/dev avec la db de production histoire de pouvoir des tests sur des données un peu à jour (parfois c'est important), s'il faut à chaque fois démarrer d'un truc clean avant de faire l'import du dump, cela me semble super contraignant...

  8. #8
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Il existe par exemple l'option d'import TABLE_EXISTS_ACTION=REPLACE, mais ça ne joue pas sur les procédures, qui ne seront alors pas rafraîchies.
    C'est pour ça que la seule façon propre de pratiquer, c'est de faire le ménage auparavant.

Discussions similaires

  1. Création d'un dump avec PowerShell
    Par babagreen dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 29/05/2015, 10h54
  2. [MySQL] Restaurer un dump MySQL avec PHP facilement
    Par arnaudperfect dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/03/2008, 10h00
  3. Création d'une base avec IbConsole
    Par Lucien dans le forum Outils
    Réponses: 3
    Dernier message: 02/03/2004, 18h34
  4. Dump avec interbase
    Par randimby dans le forum InterBase
    Réponses: 2
    Dernier message: 26/12/2003, 06h17
  5. Dump avec interbase
    Par randimby dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/12/2003, 06h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo