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

Oracle Discussion :

Tablespace index avec export/import


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 35
    Points : 26
    Points
    26
    Par défaut Tablespace index avec export/import
    Bonjour à tou(te)s,
    Je dois faire une migration d'une base Oracle 7.3.4 sur un Digtal-Unix vers une version Oracle 9i sur un serveur Windows 2003, et pour ce faire, j'ai opté pour la solution export/import :
    • Sur le serveur Unix : exp user/mot_de_passe FULL=Y FILE=...

    • Sur le serveur Windows : imp user/mot_de_passe@nom_base FULL=N FROMUSER=User_Old TOUSER=User_New FILE= ...

    Au préalable, j'ai créé deux TABLESPACE DATA et INDEX dans la nouvelle base et un utilisateur User_New à qui j'ai affecté le TABLESPACE DATA nouvellement créé comme TABLESPACE par défaut.
    L'import se passe bien mais tous les objets de type INDEX sont créés dans le TABLESPACE par défaut de l'utilisateur.
    J'ai lu une discussion avec l'import exécuté en deux phases :
    • La première qui consiste à utiliser l'option INDEXFILE de l'import, de modifier et d'exécuter le fichier SQL pour créer tous les objets de l'utilisateur User_Old,

    • la seconde qui consiste à importer avec l'option IGNORE=Y.

    Y a-t'il un autre moyen de créer directement les objets de type INDEX dans un TABLESPACE particulier pendant l'import ou est-ce la seule solution pour ne pas avoir à déplacer les objets INDEX après un import ?

    Merci de vos réponses.

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    ne serait pas plus simple de faire un rebuild pour les déplacer après coup ?

  3. #3
    Membre confirmé Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Points : 603
    Points
    603
    Par défaut
    Citation Envoyé par Fred_D
    ne serait pas plus simple de faire un rebuild pour les déplacer après coup ?
    Le problème de cette méthode est une occupation du double de place au moins durant la manip.

    Nicolas.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 35
    Points : 26
    Points
    26
    Par défaut
    ne serait pas plus simple de faire un rebuild pour les déplacer après coup ?
    Pour toi, c'est une meilleure solution que de créer la structure des tables et index puis d'insérer les lignes ?

    Pour utiliser la notion de REBUILD, j'ai pensé au code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SQL> SPOOL C:\ORACLE\ORADATA\KRYST\ADMIN\SQL\INDEX_LOVE.sql    
    SQL> select owner,index_name,tablespace_name from dba_indexes where OWNER = 'User_New';
    Après remaniement du SPOOL
    SQL>ALTER INDEX NOM_INDEX REBUILD TABLESPACE TS_INDEX;
    Penses-tu que cette façon, je déplacerai tous les objets INDEX dans le bon TABLESPACE (sachant que je n'aurai pas de problème d'espace disque sur le destinationet que je pourrai réduire la taille des TABLESPACE après opération) ?

  5. #5
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    à mon avis c'est mieux en effet.

    Tu peux faire un code PL/SQL du genre :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    BEGIN
       FOR i IN (SELECT    'alter index '
                        || owner
                        || '.'
                        || index_name
                        || ' REBUILD TABLESPACE TS_INDEX' stmt,
                        owner, index_name
                   FROM dba_indexes
                  WHERE owner='User_New')
       LOOP
          BEGIN
             EXECUTE IMMEDIATE i.stmt;
          EXCEPTION
             WHEN OTHERS
             THEN
                DBMS_OUTPUT.put_line (   i.owner
                                      || '|'
                                      || i.index_name
                                      || '  =>  '
                                      || SQLERRM
                                     );
          END;
       END LOOP;
    END;
    /

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 35
    Points : 26
    Points
    26
    Par défaut
    Bonjour,
    Tu peux faire un code PL/SQL du genre : ...
    Merci Fred pour la procédure que j'ai appliquée et qui a fonctionné sans aucun problème.
    Mon seul souci est que Oracle ne veut pas que je récupère la place laissée par les INDEX dans le tablespace DATA.
    Je fais des recherches mais si tu as une idée ?

  7. #7
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    il doit rester des objets recherche les lignes de dba_segments sur le tablespace.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 35
    Points : 26
    Points
    26
    Par défaut
    il doit rester des objets recherche les lignes de dba_segments sur le tablespace.
    C'est tout à fait cela.
    J'ai déplacé mes données dans un TABLESPACE temporaire, retailler mon TABLESPACE de données et fait la manipulation dans le sens inverse. Et pour finir, j'ai dû remettre dans l'état VALID tous les index qui étaient devenus UNUSABLE au cours de la manipulation.
    Merci à tou(te)s de m'avoir aidé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exporter/importer du texte avec flash
    Par Kahlyv dans le forum ActionScript 1 & ActionScript 2
    Réponses: 6
    Dernier message: 17/06/2008, 12h10
  2. partitionnement d'index avec choix du tablespace
    Par ghostlord79 dans le forum Administration
    Réponses: 7
    Dernier message: 27/03/2008, 15h21
  3. Export import avec changement de Schéma
    Par fati1978 dans le forum Oracle
    Réponses: 5
    Dernier message: 16/11/2007, 13h45
  4. export & import avec mise a jours
    Par meskOra dans le forum Administration
    Réponses: 1
    Dernier message: 04/04/2007, 19h00
  5. export/import avec oracle
    Par lamyae_84 dans le forum Oracle
    Réponses: 1
    Dernier message: 03/02/2007, 08h54

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