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 :

Pb de truncate sur table partitionnée


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Pb de truncate sur table partitionnée
    Bonjour ,
    Je suis débutant, désolé si la quetion vous parait évidente.
    J'utilise un service sous Oracle 8i dans lequel se trouvent différentes tables par exemple une table compte.
    Quand je me connecte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sqlplus sys/change_on_install
    j'accede à ma table compte en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from monservice.compte;
    je vois ma table, mais si je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    truncate table monservice.compte;
    et que je retourne sur mon service (je ne suis alors plus logué en sys) je vois toujours mes tuples! et inversement si je fais le truncate du service, en me connectant en sys mes tuples sont toujours là.
    Est-ce que quelqu'un peut m'expliquer?
    Merci

  2. #2
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Vous êtes sûr que vous faites bien un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    truncate table monservice.compte;
    et non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM MonService.Compte;
    ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    oui oui certain

  4. #4
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    et que donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Owner, Object_Name, Object_Type
      FROM DBA_Objects
     WHERE Object_Name = 'COMPTE';
    et quand vous dites
    je retourne sur mon service (je ne suis alors plus logué en sys) je vois toujours mes tuples! et inversement si je fais le truncate du service, en me connectant en sys mes tuples sont toujours là
    vous voulez dire que vous vous reconnectez ou que vous avez 2 sessions ouvertes à la fois ?

    Et juste comme ça, au cas où, histoire d'être tranquille, si vous faites un commit après le truncate, ça donne quoi ?

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Owner, Object_Name, Object_Type 
      FROM DBA_Objects 
     WHERE Object_Name = 'COMPTE';
    il me met : no rows selected
    Sinon, je me déconnecte bien entre les 2 connexions.
    Et en faisant le commit ça ne change rien, idem si je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    insert into .... ;
    commit;
    je ne vois rien de l'autre coté

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    et si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT Owner, Object_Name, Object_Type 
      FROM DBA_Objects ;
    je vois mon service dans les "owner", et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Owner, Object_Name, Object_Type 
      FROM DBA_Objects 
    WHERE owner = 'monservice' ;
    il met "no row selected"

  7. #7
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Il faut respecter les majuscules !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Owner, Object_Name, Object_Type
      FROM DBA_Objects
    WHERE owner = 'MONSERVICE' ;

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    OK ça marche mieux comme ça
    Je vois ma table compte 2 fois : une fois Object_type = TABLE et l'autre TABLE PARTITION.
    Est-ce que c'est normal? à quoi ça sert et comment savoir ce que contient TABLE PARTITION ?
    Merci

  9. #9
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Ah d'accord.... il s'agit d'une table partitionnée !!!!

    Il vous faut donc faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select Partition_Name, SubPartition_Count, High_Value 
     from dba_tab_partitions
     where Table_Name = 'COMPTE';
    pour connaitre l'ensemble des partitions de la table.

    Ensuite, pour effacer toute une partition, il faut faire :
    ALTER TABLE <table_name>
    TRUNCATE PARTITION <partition_name>;

  10. #10
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Ok mais en faisant le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select Partition_Name, SubPartition_Count, High_Value 
     from dba_tab_partitions 
     where Table_Name = 'COMPTE';
    J'obtiens le 2 même Partition_Name, les 2 mêmes SubPartition_Count, et les 2 même High_Value
    Comment faire pour les reconnaitre et savoir laquelle je peux truncate? est-ce normal?

  11. #11
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Euh... vous pouvez rajouter "Table_Owner" dans la liste des colonnes du select, mais normalement, non, vous devriez avoir plusieurs partition_name différents !

  12. #12
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Ok j'ai trouvé, j'ai un autre service avec la table compte.
    Ce que je ne comprends pas c'est pourquoi l'un est de type table et l'autre table partition?
    Et cela ne me dit pas pourquoi le truncate ne fonctionne pas car je précise bien le nom du service

  13. #13
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Le truncate ne fonctionne pas car vous êtes sur une table partitionnée; or, le principe même de l'instruction truncate ne peut s'appliquer tel quel aux tables partitionnées !

    Et il y a plusieurs lignes dans DBA_Objects, une ligne pour table et x ligne(s) pour TABLE PARTITION car, une table partitionnée est une table (!) donc, il y a une ligne pour la table.
    De plus, vous pouvez créer plusieurs partitions pour une même table partitionnée (c'est même un peu le but ...) et donc, il est normal qu'il figure une ligne par partition dans la vue DBA_Objects.

    PS : pensez svp à modifier le titre de votre message. Il s'agit d'un pbe de truncate sur tables partitionnées, précisez-le !

  14. #14
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Très bien,
    merci pour tout

  15. #15
    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
    depuis quand une table partitionnée ne peut pas être tronquée ?

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

Discussions similaires

  1. Mauvaise performance sur table partitionnée
    Par Bilna dans le forum Oracle
    Réponses: 3
    Dernier message: 14/02/2011, 17h25
  2. export avec query sur table partitionnée
    Par pat29 dans le forum Import/Export
    Réponses: 2
    Dernier message: 19/01/2009, 18h07
  3. Création index + stat sur table partitionnée
    Par ouinih dans le forum Administration
    Réponses: 4
    Dernier message: 13/08/2008, 08h53
  4. TRUNCATE sur plusieurs tables
    Par TwAzO dans le forum Requêtes
    Réponses: 9
    Dernier message: 23/06/2008, 18h33
  5. [9i] Count sur table partitionnées
    Par saysay dans le forum Oracle
    Réponses: 4
    Dernier message: 26/12/2005, 14h33

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