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

Administration Oracle Discussion :

déplacer une table vers un user d'un tablespace


Sujet :

Administration Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 109
    Points : 29
    Points
    29
    Par défaut déplacer une table vers un user d'un tablespace
    Bonjour,

    je veux déplacer les tables crées dans le tablespace SYSTEM vers un autre tablespace, en cherchant j'ai trouvé la commande suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT 'ALTER TABLE ' || OBJECT_NAME ||' MOVE TABLESPACE '||' MYTableSpace;'
    FROM ALL_OBJECTS
    WHERE OWNER = 'MyUser'
    AND OBJECT_TYPE = 'TABLE'
    mais moi je veux en plus transférer les tables vers un user bien défini du tablespace MYTableSpace, comment faire dans ce cas ?

    Merci d'avance

  2. #2
    Membre éprouvé Avatar de 13thFloor
    Homme Profil pro
    DBA Oracle freelance
    Inscrit en
    Janvier 2005
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : DBA Oracle freelance

    Informations forums :
    Inscription : Janvier 2005
    Messages : 670
    Points : 945
    Points
    945
    Par défaut
    Transférer les tables vers un user ? C'est à dire faire en sorte qu'elles lui appartiennent ?

    Si c'est bien cela :
    export/import puis suppression des tables du schéma source (exp owner=source puis imp fromuser=source touser=cible)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 109
    Points : 29
    Points
    29
    Par défaut
    Oui voilà pour qu'elles lui appartiennent,
    je ne peux pas passer par les utilitaires imp/exp car le owner dans mon cas est SYSTEM.
    par contre je pense si j'exécute le script suivant en me connectant en tant que user1 par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select 'ALTER TABLE '||table_name||' MOVE TABLESPACE MYTableSpace;'
    from dba_tables
    where owner = 'USERX'
    and tablespace_name = 'SYSTEM'
    je pense dans ce cas les objets seront bien transférés vers user1.

    Sinon pour les autres objets autre que les tables et les indexes comment les transférer ? je les recrée manuellement ? je pose la question surtout pour les séquences puisque ces derniers doivent garder les valeurs seuils ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par safisafi Voir le message
    je ne peux pas passer par les utilitaires imp/exp car le owner dans mon cas est SYSTEM.
    Ah bon ???? Où est le problème ???

    Tu es train de jouer à l’apprenti sorcier dans les tables systèmes et c’est loin d’être une solution.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 109
    Points : 29
    Points
    29
    Par défaut
    Non j'ai dis une betise, ce n'est pas l'utilisateur SYSTEM mais un utilisateur ayant le tablespace par défaut = SYSTEM.

    en exécutant la commande Alter Table ... je vois bien les tables mais elles ne sont pas associées à un utilisateur ! comment je fais pour y accéder ?

    Please Help !!!

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par safisafi Voir le message
    Non j'ai dis une betise, ce n'est pas l'utilisateur SYSTEM mais un utilisateur ayant le tablespace par défaut = SYSTEM.

    en exécutant la commande Alter Table ... je vois bien les tables mais elles ne sont pas associées à un utilisateur ! comment je fais pour y accéder ?

    Please Help !!!
    Bon tu utilises exp / imp un point c'est tout, il n'y a aucune contre-indication.
    Si tu en trouves une, explique nous là clairement.
    Si tu utilises datapump, tu peux aussi jouer directement sur le tablespace de destination mais bon, on ne connait pas ta version de bd.
    Si tu veux de l'aide, exprime clairement tes affaires au lieu d'écrire "Help"...

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 109
    Points : 29
    Points
    29
    Par défaut
    OK pour les utilitaires exp/imp.

    Par contre je veux bien comprendre le principe de Alter Table Move:
    j'ai un USER1(TABLESPACE1) et je veux déplacer ses objets dans TABLESPACE2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ALTER TABLE USER1.Table1 MOVE TABLESPACE TABLESPACE2;
    cette commande déplace les objets sur le TABLESPACE2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SQL> select table_name,tablespace_name from dba_tables
      2  where owner='USER1';
     
    TABLE_NAME                     TABLESPACE_NAME
    ------------------------------ -------------------------
    Table1                           TABLESPACE2
    Table2                        TABLESPACE2
    cela veut dire même si User1 a comme Tablespace par défaut 'TABLESPACE1' il peut bien avoir ses objets sous 'TABLESPACE2' ?
    Pour les autres objets : Procédures, triggers, séquences ... je dois les supprimer manuellement de TABLESPACE1 et les recréer dans TABLESPACE2 ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par safisafi Voir le message
    cela veut dire même si User1 a comme Tablespace par défaut 'TABLESPACE1' il peut bien avoir ses objets sous 'TABLESPACE2' ?
    Oui. Un user peut avoir des droits et des objets sur plusieurs tablespaces. Courament, on a un tablespace pour les tables et un pour les indexes - l'efficacité de ce système est source à controverse et je ne soulèverais pas...

    Citation Envoyé par safisafi Voir le message
    Pour les autres objets : Procédures, triggers, séquences ... je dois les supprimer manuellement de TABLESPACE1 et les recréer dans TABLESPACE2 ?
    Oui, c'est pour ça que imp / exp ou impdp / expdp sont pratiques pour faire ça d'un bloc.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 109
    Points : 29
    Points
    29
    Par défaut
    Merci pour ton aide Jerome_Mtl,
    une dernière question : Comment créer une sequence, procedure, function sur un tablespace bien précis ?

  10. #10

  11. #11
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    sequence, procedure, function ne sont pas associés à une tablespace. Un tablespace, c'est un espace pour les objects qui stockent des données (des segments, composés d'extents, eux même composés de blocs contigus) dans des datafiles.
    - Tablesace = espace de stockage des données
    - User/Schéma = espace de nommage (schéma) et de droits (user)
    C'est très différent.

    A noter qu'un alter table move va rendre les indexes unusable, il faudra les rebuilder (éventuellement en les changeant de tablespace aussi)

    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  12. #12
    Membre éclairé

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2003
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 701
    Points : 741
    Points
    741
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    une petite précision sur exp/imp
    imp remettra l'objet dans son tablespace d'origine
    même si ce n'est pas celui par défaut de l'utilisateur .
    dans ton cas , apres export, suppression des tables, il faut donner un quota à 0 pour le TBS SYSTEM a l'utilisateur cible sinon oracle les replacera dans
    system .

    cdlt

Discussions similaires

  1. [MySQL] Déplacer un enregistrement d'une table vers une autre
    Par rastatom dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 20/12/2012, 10h22
  2. Déplacer une entrée vers une autre table
    Par student_php dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/10/2010, 14h20
  3. Réponses: 2
    Dernier message: 08/02/2008, 11h03
  4. Copier d'une table vers une autre
    Par ph4prod dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/09/2004, 12h42
  5. [MYSQL] Copier contenue d'une table vers...
    Par naseeb18 dans le forum Requêtes
    Réponses: 9
    Dernier message: 04/04/2004, 13h40

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