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 :

Aide pour export puis import base Oracle


Sujet :

Import/Export Oracle

  1. #1
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2021
    Messages : 15
    Points : 3
    Points
    3
    Par défaut Aide pour export puis import base Oracle
    Bonjour,

    J'ai besoin d'aide sur un sujet assez technique pour moi : je dois récupérer l'extract d'une BD sous Oracle pour explorer quelques tables et valider la structure globale. Problème : je ne connais pas bien Oracle, mon interlocuteur est loin et je galère avec le dmp qu'il m'a fourni (par contre je peux lui en redemander un...mais il n'y connais pas grand chose non plus).

    Pour le moment je lui ai demandé de me transmettre un dmp, via la commande exp, ce qu'il a fait. La base fait 28 Go (sympa à transférer...).

    Après quelques recherches j'ai installé Oracle XE 18c et j'ai essayé de réimporter la base via imp dans la base XE créée.

    J'ai lancé la commande suivante (anonymisée avec des XXXX pour garder un peu de confidentialité) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imp userid='sys/XXXXXX@XE as sysdba' log=C:\dump_folder\XXXXXX.log file=C:\dump_folder\XXXXXX.dmp fromuser=sys touser=sys
    Ca fonctionne en partie, mais j'ai pas mal d'erreurs...et surtout les tables que je cherche ne sont pas créées.
    PS : je peux redemander un dmp à mon interlocuteur ou lui demander plus d'infos s'il faut.

    Merci !

    Je peux lister les erreurs que je rencontre si vous voulez ou poster en privé la log anonymisée.

    Si quelqu'un pourrait me donner des pistes svp ?

    Merci beaucoup !

  2. #2
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Quelle est la version de ta base Oracle? C'est bien une 18c sur les deux bases, tu es sur?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from v$version;
    Si c'est une 10, 11, 12 ou plus, ce n'est pas exp ni imp que tu dois utiliser comme commandes mais expdp et impdp : c'est l'utilitaire Datapump qui, depuis Oracle 10, remplace les anciens utilitaires exp et imp.
    Ah, pour info, 28 Go c'est rien de rien comme taille, tous les DBA Oracle voudraient bien des dump de cette taille

    Sauf erreur de ma part, fromuser et touser n'existent pas avec datapump. Quand on veut remapper un schéma (ou user) A vers un schéma B, on utilise l'option remap_schema.
    MAIS, et c'est pas simple tu me diras, si tu utilises datapump (expdp), l'export ne concerne JAMAIS les objets du schéma SYS (sauf quelques très rares tables).

    Donc, si tu veux exporter des objets du schéma SYS de ta base, déjà il y a un problème : on ne doit JAMAIS mettre dans le schéma SYS des objets applicatifs. Si c'est le cas, alors peut-être qu'il faut faire du exp et imp, même si ces utilitaires sont trop vieux mais là... plein de DBA n'utilisent plus ces outils donc on aura du mal à t'aider.

    On peut avoir un exemple des erreurs que tu observes?
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  3. #3
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2021
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Merci de ta réponse rapide!

    Je ne connais pas la version de la base dont est issu le dmp que j'ai reçu, mais je vais demander. J'ai passé la commande que tu envoies sur la base cible est c'est bien une 18c.
    Par contre quand je lance la commande type XXXX.dmp | more suivante sur mon dmp, j'ai notamment le message ☺EXPORT:V11.02.00. Est-ce que cela veut dire que la base initiale est en version 11.02.00 ?
    A noter que quand je déroule (longtemps) le contenu du de ce qui m'est retourné, je tombe sur ce genre d'info :
    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ♥
    ┬♦►☼
    oracle.xml.xsql
    9.2.0.4.0
    Est-ce que cela veut dire que la base est en fait en 9.2.0 ?

    Plutôt que de vous envoyer les erreurs, je peux redemander un export dmp avec la ligne de commande qui va bien...si vous pouviez m'en proposer une ? Que préférez-vous ?
    Surtout que le dmp reçu est peut-être non conforme, car il ne fait "que" 28 Go....

    Merci beaucoup de votre aide en tout cas.

  4. #4
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Aïe, si la base source est une 9.2 alors impossible de faire du datapump, il faut donc faire exp et imp.
    Demande quand même à la personne de faire le SELECT sur v$version, c'est important.

    Je ne connais pas ces utilitaires donc ça va être dur de te donner des commandes en partant de zéro.
    L'idéal serait que tu me communiques la commande exp lancée pour me faciliter la tâche car tu as déjà mis la commande imp.

    Pour info, la partie
    imp ... fromuser=sys touser=sys
    devrait être réécrite en
    imp fromuser=sys touser=USER_APPLICATIF
    avec USER_APPLICATIF un user de ta base 18 qui est soit un user existant soit un user à créer MAIS il ne faut pas que tu fasses l'import dans le schéma SYS, c'est une mauvaise pratique.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  5. #5
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2021
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup pour ces précisions.

    Je viens de recevoir les informations de mon interlocuteur concernant son export :

    • Version : Oracle Database 11g version 11.2.0.2.0 - Production 64 bits
    • Ligne de cmd : exp userid=XXXX file=/oracle/XXXX.dmp log=/oracle/XXXX.log full=y rows=n


    Du coup comme vous l'avez précisé précédemment, il faudrait plutôt utiliser les commandes expdp et impd, et donc que je redemande un export avec la commande expdp ?

    Concernant l'option remap_schema, si je reste sur le même schéma (ou user) lors de mon futur import (impdp), avec le USER qui contient les tables qui m'intéresse, je n'est pas besoin de m'en servir, c'est bien ça ?

    Merci par avance.

  6. #6
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    "Du coup comme vous l'avez précisé précédemment, il faudrait plutôt utiliser les commandes expdp et impd, et donc que je redemande un export avec la commande expdp ?"
    Eh non, si les données à exporter et à importer sont dans le schéma SYS de la base de départ, on ne peut pas utiliser datapump (expdp et impdp) car il n'exportera pas les objets du schéma SYS (sauf une petite vingtaine, liés à l'audit...).
    Dans ce cas là, peut importe ta version de la base, tu dois utiliser exp et imp.

    Donc la question la plus importante à poser, à qui de droit, est : est-ce que les données à exporter/importer sont dans le schéma SYS ou non? Si c'est oui, tu DOIS utiliser exp et imp, si c'est non, tu DOIS utiliser datapump.


    Ta commande d'export signifie :
    - full=y : exporter TOUT le contenu de la base, y compris le schéma SYS
    - rows=n : les données des tables ne sont pas exportées, juste les métadatas, donc seuls les objets seront créés. Du coup, je m'étonne que tu ais un export de 28Go en exportant seulement les métadatas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exp userid=XXXX file=/oracle/XXXX.dmp log=/oracle/XXXX.log full=y rows=n

    La commande d'import devrait ressembler à ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imp userid/xxx FULL=Y FILE=XXX.DMP fromuser=SYS touser=USER2
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  7. #7
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2021
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Bonjour Ikebukuro et merci encore de ton aide.

    Je vais demander si les données sont dans le schéma SYS, on saura si l'on peut utiliser la Data Pump ou pas.
    En parallèle, je voudrais m'assurer que l'export qui m'a été fourni sans la Data Pump est bon ou pas. Pour cela j'ai quelques questions :
    - J'ai lu qu'il fallait être connecté en DBA pour utiliser . Tu peux me confirmer que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     imp system/[Password] as sysdba
    permet bien d'être connecté avec les privilèges DBA pour l'import ?
    - Pour utiliser j'ai lu qu'il fallait créer un user dans la base cible avec les bons privilèges. J'ai bien créé le user, tu connaitrais la commande à passer pour accorder le bon niveau de privilèges ?

    Merci de tes réponses!

  8. #8
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2021
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    En complément j'ai créé un user usrTOTO dans la base cible, que j'ai granté des droits DBA avec la commande .

    Quand je lance l'import avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imp 'sys/XXXXXX*@XE as sysdba' log=C:\dump_folder\XXXXX.log FILE=C:\dump_folder\XXXXXX.dmp fromuser=LIMS_ADMIN touser=usrTOTO
    Ca tourne un long moment, je n'ai pas d'erreur, à part 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IMP-00009: fin anormale de fichier d'export
    Au final j'ai un message disant que l'import est réussi avec avertissement. Seulement j'ai beau chercher, je ne retrouve pas les tables que je souhaite dans usrTOTO. Est-ce que l'erreur signifie bien que le dmp est corrompu ?
    Si oui, je vais en redemander un, mais avec la Data pump cette fois !
    Merci d'avance !

  9. #9
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Alors, je lis "fromuser=LIMS_ADMIN touser=usrTOTO" donc dans ta base source les objets ne sont pas dans le schéma SYS : génial, on va pouvoir faire du datapump au lieu des vieux utilitaires exp et imp.

    Ensuite : "IMP-00009: fin anormale de fichier d'export" signifie que l'export s'est mal passé donc forcément l'import va planter; je ne comprends donc pas ta phrase "Au final j'ai un message disant que l'import est réussi avec avertissement". Le message IMP-00009 dit que l'import a échoué. La personne qui a fait l'export aurait dû avoir un message d'erreur et donc refaire l'export avant de de dire de faire l'import.

    Donc il faut que tu fasses maintenant un expdp puis un impdp.
    Question : est-ce que tu veux récupérer les objets, donc les tables, avec leurs données ou seulement leur structure, donc vides?
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  10. #10
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2021
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup pour ta réponse, je voulais être sûre que l'export était ko avant de le redemander.

    En fait j'ai eu les 2 messages : import réussi avec avertissement + IMP-00009 dit que l'import a échoué, mais aucune table n'a été importée donc il y a bien un souci .

    Il me faudrait la structure + les données (peut-être avec la suppression des données de certaines tables si cela est trop lourd pour être importées sur mon ordi).

  11. #11
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    OK, donc il faut faire un datapump.
    Voici un excellent lien : https://oracle-base.com/articles/10g...-data-pump-10g

    Pour exporter toute la base : va à la partie "Database Exports/Imports"
    Pour exporter des tables sans données, regarde la partie "CONTENT and QUERY" : peut-être qu'il faudra créer une requête bidon pour ne pas prendre les données, genre "where 1=2".
    Attention à la partie "INCLUDE and EXCLUDE" : cela permet de filtrer l'export ou l'import en éliminant des objets, donc cela ne correspond pas à ton besoin.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  12. #12
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2021
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Merci, je vais regarder cela

  13. #13
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2021
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    J'attends qu'on me transmette l'export réalisé à partir de la Data Pump.
    En attendant de le recevoir, j'ai essayé d'autres commandes sur le dmp que j'ai déjà :
    - J'ai créé le user "Ximport" pour faire l'import, que j'ai granté des droits DBA.

    - J'ai passé ensuite la commande suivante pour adapter les Tablespace (je l'ai trouvée sur un forum) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLESPACE NEW_TBS_XXX_DATA
    DATAFILE
    'C:\oraclexe\app\oracle\oradata\XE\NEW_TBS_XXX_DATA01.dbf' SIZE 4G AUTOEXTEND ON NEXT 200M MAXSIZE UNLIMITED,
    'C:\oraclexe\app\oracle\oradata\XE\NEW_TBS_XXX_DATA02.dbf' SIZE 4G AUTOEXTEND ON NEXT 200M MAXSIZE UNLIMITED
    LOGGING
    ONLINE
    EXTENT MANAGEMENT LOCAL AUTOALLOCATE
    BLOCKSIZE 8K
    SEGMENT SPACE MANAGEMENT AUTO
    FLASHBACK ON;
    Je n'ai pas d'erreurs.

    - Je lance ensuite l'import avec la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     imp 'system/manager@XE as sysdba' log=C:\dump_folder\imp_XXX_2807.log FILE=C:\dump_folder\exp_XXX.dmp fromuser=XXX touser=Ximport ignore=Y
    L'import se passe bien, mais s'arrête aux tables qui commencent par "I"

    Ca m'affiche la log avec les erreurs suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    importing XXX's objects into XIMPORT
     
    IMP-00003: ORACLE error 1658 encountered
    ORA-01658: unable to create INITIAL extent for segment in tablespace SYSTEM
    IMP-00017: following statement failed with ORACLE error 1658:
    Est-ce que tu saurais comment avancer sur ces erreurs ?

    Merci beaucoup !

  14. #14
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Dans mon message du 26/07 je te dis qu'il faut faire du datapump, pourquoi utilises-tu imp? c'est impdp pour datapump.

    Je ne vois pas pourquoi tu fais "system/manager@XE as sysdba". Pourquoi tu n'utilises pas le user Ximport qui a les droits DBA pour l'import?
    Dans le pire des cas tu peux faire "system/manager@XE" si Ximport ne marche pas mais évite le "as sysdba".

    C'est bizarre ton message d'erreur :
    "ORA-01658: unable to create INITIAL extent for segment in tablespace SYSTEM"
    Je ne vois pas pourquoi un extent devrait être créé dans le tablespace SYSTEM car tu utilises la clause touser:Ximport.
    Oh oh, si ça se trouve le tablespace par défaut du user Ximport est SYSTEM : pas bon.
    Tu as créé le tablespace NEW_TBS_XXX_DATA mais il faut l'associer au user Ximport.
    Que donne le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select dbms_metadata.get_ddl('USER','Ximport') from dual;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT PROPERTY_VALUE
    FROM DATABASE_PROPERTIES
    WHERE PROPERTY_NAME = 'DEFAULT_PERMANENT_TABLESPACE';

    "IMP-00017: following statement failed with ORACLE error 1658:"
    Merci de nous donner le "following statement", donc l'ordre SQL qui a échoué; c'est la suite du message d'erreur.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  15. #15
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2021
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Merci encore pour toutes ces informations.

    J'aimerais bien utiliser le datapump mais j'attends l'export de la part de mon interlocuteur, qui tarde à me faire un expdp... (je ne fais que l'import de mon côté d'un dump que l'on m'envoie)

    Voici les résultats des requêtes que tu m'as transmises :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select dbms_metadata.get_ddl('USER','XIMPORT') from dual;
     
    => CREATE USER "XIMPORT" IDENTIFIED BY VALUES 'S:DF5FC3E......'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT PROPERTY_VALUE
    FROM DATABASE_PROPERTIES
    WHERE PROPERTY_NAME = 'DEFAULT_PERMANENT_TABLESPACE';
     
    => SYSTEM
    Ainsi que le "following statement" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    IMP-00017: following statement failed with ORACLE error 1658:
     "CREATE TABLE "XXXX_XXXX" ("USER_NAME" VARCHAR2(20) NOT NULL ENABLE, "FUN"
     "CTION_ID" VARCHAR2(30) NOT NULL ENABLE)  PCTFREE 10 PCTUSED 0 INITRANS 1 MA"
     "XTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 FREELISTS 1 FREE"
     "LIST GROUPS 1 BUFFER_POOL DEFAULT)                        LOGGING NOCOMPRES"
     "S"
    IMP-00003: ORACLE error 1658 encountered
    ORA-01658: unable to create INITIAL extent for segment in tablespace SYSTEM
    J'ai également essayé avec le user que j'ai créé et granté en DBA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imp XIMPORT/XXXX@XE log=C:\dump_folder\imp_XXXX.log FILE=C:\dump_folder\exp_XXXX.dmp fromuser=XXX touser=XIMPORT ignore=Y
    J'ai les mêmes erreurs et following statement. Juste à la fin au lieu d'avoir l'erreur 'ORA-01658' j'ai 'ORA-00959' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    IMP-00017: following statement failed with ORACLE error 959:
     "CREATE TABLE "XXXXX " ("COUNTER" XXX(10, 0),…,"XXX" VARCHAR2(1)"
     ")  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 8388608 NE"
     "XT 1048576 MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) "
     "TABLESPACE "XXX" LOGGING NOCOMPRESS LOB ("TRANS_STRING") STORE AS BAS"
     "ICFILE  (TABLESPACE "XXX_LOBS" DISABLE STORAGE IN ROW CHUNK 2048 PCTVERSIO"
     "N 10 NOCACHE LOGGING  STORAGE(INITIAL 24576 NEXT 1048576 MINEXTENTS 1 FREEL"
     "ISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT))"
    IMP-00003: ORACLE error 959 encountered
    ORA-00959: tablespace 'XXX' does not exist

  16. #16
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    OK, on avance mais c'est long...

    La requête à lancer est en vrai : la partie set long 1000000 permet de voir le retour COMPLET de dbms_metadata.get_ddl car là il manque toute une partie du CREATE USER.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set long 1000000
    select dbms_metadata.get_ddl('USER','XIMPORT') from dual;
    Ton tablespace (je vais l'appeler tbs) par défaut est SYSTEM, ce n'est pas bon car tous les users que tu vas créer aurons ce tbs par défaut et il ne faut rien créer dans SYSTEM, sauf si le user est SYS. Attention, si en créant un user tu précises A CHAQUE FOIS quel est son tbs par défaut, différent de SYSTEM, alors tu peux garder SYSTEM comme tbs par défaut mais ça me gène, il y a un risque d'erreur.

    L'erreur IMP-00003: ORACLE error 1658 encountered" et "ORA-01658: unable to create INITIAL extent for segment in tablespace SYSTEM" devrait être résolue si tu donnes à Ximport un tbs par défaut différent de SYSTEM.
    Un exemple ici https://smarttechways.com/2018/07/27...ser-in-oracle/

    L'erreur suivante vient du fait que, dans ta base source, la table XXXXX est dans le tbs XXX (rassures-moi, ce sont des noms codés juste pour ces messages, on est d'accord?). MAIS, dans ta base cible, le tbs XXX n'existe pas.
    Quand tu feras du datapump, il faudra remapper le tbs XXX avec ton tbs de données NEW_TBS_XXX_DATA via la commande REMAP_TABLESPACE=source_tablespace:target_tablespace; un exemple ici https://docs.oracle.com/database/121...1.htm#SUTIL929
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    IMP-00017: following statement failed with ORACLE error 959:
     "CREATE TABLE "XXXXX " ("COUNTER" XXX(10, 0),…,"XXX" VARCHAR2(1)"
     ")  ... "TABLESPACE "XXX" 
    IMP-00003: ORACLE error 959 encountered
    ORA-00959: tablespace 'XXX' does not exist
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  17. #17
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2021
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Bonjour et désolé de répondre tard, mais je viens de recevoir l'intégralité de la base Oracle (export fait avec la datapump cette fois). Elle fait 40 Go, m'a été déposée zippée par 7zip sur un Sharepoint (700 Mo zippé) et je l'ai dezippée sur mon PC.

    J'essaie de l'importer à partir des indications que vous m'avez données, mais mes différentes tentatives mènentà la même erreur.

    Voici quelques éléments qui pourraient vous permettre de m'aider un peu (merci d'avance ).

    - Voici la commande d'export que j'ai trouvée dans les logs de l'emetteur, je pense que c'est celle-ci qui a été utilisée par la personne qui a exporté la base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Starting "OPER_MIS"."SYS_EXPORT_FULL_01":  directory=EXPORT dumpfile=expdp_TOT002M.dmp logfile=expdp_TOT002M.log content=all full=y userid=iter_mis/********
    - Pour réaliser l'import, j'ai effectué les actions suivantes :
    1- Dans l'invit de commandes :
    A) J'ai créé mon user TOTO (les tables de la bdd qui m'interèssent sont dans le schéma TOTO),
    B) J'ai granté TOTO avec les rôles DBA et IMP_FULL_DATABASE,
    C) J'ai attribué au user TOTO un nouveau tablespace car celui qu'il avait de base était SYSTEM.

    Voici le code utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    SQL> Create user TOTO identified by 1234;
     
    SQL> GRANT DBA TO TOTO ;
     
    SQL> GRANT IMP_FULL_DATABASE TO TOTO ;
     
    SQL> alter user TOTO default tablespace NEW_TBS_TOTO_DATA;
     
    SQL> alter user TOTO identified by 1234 ACCOUNT UNLOCK;
     
    SQL> CREATE OR REPLACE DIRECTORY test_dir AS  'C:/oraclexe/app/oracle/oradata';
     
    SQL> GRANT READ, WRITE ON DIRECTORY test_dir TO TOTO;
     
    SQL> CREATE OR REPLACE DIRECTORY test_dir AS  'C:/oraclexe/app/oracle/oradata';
     
    SQL> GRANT READ, WRITE ON DIRECTORY test_dir TO TOTO;
    2- Ensuite j'ai essayé de lancer l'import de 3 façons différents avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    impdp TOTO/1234@XE full=Y directory=TEST_DIR dumpfile=expdp_TOT002M.dmp logfile=expdp_TOT002M.log
     
    	impdp system/manager@XE full=Y directory=TEST_DIR dumpfile=expdp_TOT002M.dmp logfile=expdp_TOT002M.log
     
    	impdp TOTO/1234@XE schemas=TOTO directory=TEST_DIR dumpfile=expdp_TOT002M.dmp logfile=expdp_TOT002M.log
    3- A chaque fois j'obtiens la même erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Connected to: Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
    ORA-31626: job does not exist
    ORA-31637: cannot create job SYS_IMPORT_FULL_01 for user TOTO
    ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
    ORA-06512: at "SYS.KUPV$FT_INT", line 798
    ORA-39244: Event to disable dropping null bit image header during relational select
    ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86
    ORA-06512: at "SYS.KUPC$QUE_INT", line 1825
    ORA-02320: failure in creating storage table for nested table column TREAT("USER_DATA" AS "KUPC$_FILE_LIST")."FILELIST"
    ORA-01658: unable to create INITIAL extent for segment in tablespace SYSTEM
    Il y a visiblement un problème de lancement de job. J'ai beau chercher sur le net, je ne trouve pas trop comment résoudre. Est-ce que vous pourriez m'aider svp ?

    Merci d'avance !!

  18. #18
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2021
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Bon, j'ai lancé cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter database 'datafile '/somepath/somename.dbf' autoextend on maxsize unlimited
    qui résout en partie mes erreurs.

    Je n'ai plus que les erreurs suivantes, qui sont, je pense, un problème d'espace au niveau des Tablespace.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ORA-39083: Object type TABLESPACE failed to create with error:
    ORA-12953: The request exceeds the maximum allowed database size of 11 GB
     
    ORA-39083: Object type TABLESPACE failed to create with error:
    ORA-29339: tablespace block size 2048 does not match configured block sizes
    Après vu que la base fait 40 Go au départ, je me demande si Oracle XE peut encore gérer ou s'il me faut une version complète d'Oracle.

    Est-ce que vous pourriez m'aider à résoudre ces erreurs svp ?

    On y est presque, merci !

  19. #19
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Aïe, c'est mauvais
    La version XE ne peut pas gérer plus de 11Go de données.
    https://docs.oracle.com/cd/E11882_01...s.htm#DBLIC109

    "Oracle Database Express Edition
    Oracle Database Express Edition (Oracle Database XE) is an entry-level edition of Oracle Database that is quick to download, simple to install and manage, and is free to develop, deploy, and distribute. Oracle Database XE makes it easy to upgrade to the other editions of Oracle without costly and complex migrations. Oracle Database XE can be installed on any size machine with any number of CPUs, stores up to 11 GB of user data, using up to 1 GB of memory, and using only one CPU on the host machine. Support is provided by an online forum."
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  20. #20
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2021
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2021
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Merci de ta réponse. Effectivement ça pose un souci!

    Du coup j'ai téléchargé la version entreprise 19.3 qui ne nécessite pas de licence et j'ai réessayé. La version 11g étant soumise à licence. Je rappelle que la base que je veux importer est en 11g.

    J'ai dû recréer mon TNSNAME dans le répertoire ..\ADMIN.

    - Quand je fais un import full, j'ai le message que le user SYSMAN n'existe pas, pourtant j'ai bien créé les TABLESPACE qui correspondent à SYSMAN.
    - Quand je fais un import uniquement du schéma il ne veut pas créer des users et les tables correspondantes en mettant l'erreur '"ORA-65096 : nom d'utilisateur ou de rôle commun non valide"

    Au final ça ne fonctionne pas. Est-ce dû au fait qu'on ne puisse pas importer de 11g vers 19.3 à cause de restrictions en 19.3 tu penses ? Auquel cas il me faudrait forcément la version entreprise 11g ?

    Merci de ton aide.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Aide pour trier puis exporter en boucle
    Par PinkPanthere dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/10/2014, 21h54
  2. Export / Import Base Oracle Express Edition 10 g ?
    Par Pikatch dans le forum Administration
    Réponses: 3
    Dernier message: 06/06/2008, 11h59
  3. Import/export d'une Base Oracle
    Par obiyann22 dans le forum Bibliothèques
    Réponses: 8
    Dernier message: 17/01/2007, 12h43
  4. procédure pour exporter et importer bases de données
    Par mariogarcia dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 24/03/2006, 17h33
  5. aide pour exporter une base de donnée
    Par matt55 dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 06/04/2004, 14h28

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