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 :

Purge d'une Base de Données ORACLE 8i


Sujet :

Administration Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 10
    Points
    10
    Par défaut Purge d'une Base de Données ORACLE 8i
    Bonjour tout le monde,

    j'utilise deux instances d'une BDD oracle 8i ,on a neglige leur gestion et il est recommande dans mon cas de les purger
    quelqu'un pourrait m'aider a le faire!
    merci d'avance!

  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 : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    une purge ? C'est à dire ?

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Pour vider toutes les tables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    BEGIN
    FOR i IN (SELECT * FROM all_tables WHERE owner NOT LIKE 'SYS%')
    LOOP
    EXECUTE IMMEDIATE('TRUNCATE TABLE '||i.table_owner||'.'||i.table_name);
    END LOOP;
    END;
    Il faut aussi désactivé les FK si il y en a

  4. #4
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    Attention Orafrance...

    cet ordre ne fonctionnera pas non plus sur les tables en cluster... là il faudra faire un truncate du cluster...

  5. #5
    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
    Points : 8 080
    Points
    8 080
    Par défaut
    Mouais, mais si le demandeur daignait préciser son besoin, ça éviterait aux bonnes volontés de se décarcasser dans le vide...

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Citation Envoyé par Yorglaa
    Attention Orafrance...

    cet ordre ne fonctionnera pas non plus sur les tables en cluster... là il faudra faire un truncate du cluster...
    Effectivement, on pourrait prèvoir des DELETE après les TRUNCATE pour les cas particuliers

  7. #7
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Pardon , je ne voie pas qu'est ce que des tables en cluster;
    c'est bette comme question mais sacher que je suis novice en ORACLE
    en plus Quelle est la differance entre un DELATE et TRUNCATE ,si je ne me trompe pas c'est question de memoire ,
    TRUNCATE : vide les tables mais ne libere pas la memoire
    par contre DELATE libere te les tables et la memoire :

  8. #8
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Merci tout le monde!

    là c'est mon script , je ne sais si ca fontionne correctement pour purger MES tables :

    DECLARE
    CURSOR C1 is select table_name from user_tables;
    V_C1 C1%ROWTYPE
    BEGIN
    OPEN C1;
    LOOP
    FETCH C1 INTO V_C1
    EXECUTE IMMEDIATE(' TRUNCATE TABLE'||C1.TABLE_NAME);
    ENDLOOP;
    END;

    Biensur je me suis inspire de celui de "ORAFRANCE"

    Merci "Orafrance"
    Merci "Yorglaa"

  9. #9
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Ca marche pas et voila ce que j'ai comme erreur!

    ----------------------------------------------------------------------------------
    BEGIN
    *
    ERREUR à la ligne 4 :
    ORA-06550: line 4, column 1:
    PLS-00103: Encountered the symbol "BEGIN" when expecting one of the following:
    := ( ; not null range default character
    The symbol ";" was substituted for "BEGIN" to continue.
    ORA-06550: line 8, column 1:
    PLS-00103: Encountered the symbol "EXECUTE" when expecting one of the
    following:
    . ( , % ; limit


    ----------------------------------------------------------------------------------



    Quoi faire?


    Merci!

  10. #10
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    il manque un point-virgule après

  11. #11
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Il manque également un point virgule après le fetch.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DECLARE 
    CURSOR C1 is select table_name from user_tables; 
       V_C1 C1%ROWTYPE;
    BEGIN 
      OPEN C1; 
      LOOP 
         FETCH C1 INTO V_C1;
         EXECUTE IMMEDIATE(' TRUNCATE TABLE'||C1.TABLE_NAME); 
      END LOOP; 
    END;
    C'est plus joli avec les balises codes !

  12. #12
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    Citation Envoyé par PlaineR
    C'est plus joli avec les balises codes !

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Citation Envoyé par manar
    Pardon , je ne voie pas qu'est ce que des tables en cluster;
    c'est bette comme question mais sacher que je suis novice en ORACLE
    en plus Quelle est la differance entre un DELATE et TRUNCATE ,si je ne me trompe pas c'est question de memoire ,
    TRUNCATE : vide les tables mais ne libere pas la memoire
    par contre DELATE libere te les tables et la memoire :

    1°) C'est DELETE et non DELATE

    2°) en gros, le DELETE passe par les rollback segments (donc TRES long si la table est grosse) contrairement à TRUCATE qui purge instantanément la table

  14. #14
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    Attention, autre différence MAJEURE (mais relative à la remarque de orafrance) :

    - avec un DELETE tu peux faire ensuite un Rollback en cas d'erreur...
    - Avec le TRUNCATE la suppression est immédiatement définitive

    différence à ne pas négliger !

  15. #15
    CD
    CD est déconnecté
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 127
    Points : 151
    Points
    151
    Par défaut
    Citation Envoyé par Manar
    TRUNCATE : vide les tables mais ne libere pas la memoire
    Pour forcer le truncate à désallouer les blocks de la table, il faut lui rajouter la clause DROP STORAGE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DECLARE 
    CURSOR C1 is select table_name from user_tables; 
       V_C1 C1%ROWTYPE; 
    BEGIN 
      OPEN C1; 
      LOOP 
         FETCH C1 INTO V_C1; 
         EXECUTE IMMEDIATE(' TRUNCATE TABLE '||C1.TABLE_NAME||' DROP STORAGE'); 
      END LOOP; 
    END;

  16. #16
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Merci vous etes super!

    Mais "ORAFRANCE" :-------------------------------------------------------------
    2°) en gros, le DELETE passe par les rollback segments (donc TRES long si la table est grosse) contrairement à TRUCATE qui purge instantanément la table
    -------------------------------------------------------------------------------------

    attention c'est TRUNCATE et non TRUCATE


  17. #17
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Points : 605
    Points
    605
    Par défaut
    pourquoi ne pas tout simplement faire un DROP USER CASCADE ???

  18. #18
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    Suivant les grants que ce user peut déjà avoir sur des objets d'autres schéma, il peut être assez long de le recréer au complet...

    du moins j'ai déjà vécu ce problème...alors j'ai utilisé la console OEM pour fair un "create like..." du user en question pour en faire un "shell" vide, avec juste les grants nécéssaires. Puis "drop user... cascade" du user principal et à nouveau "create like..." basé sur mon user "shell vide"...

    je me sens assez lamentable de ne pas y avoir pensé plus tôt... désolé !

    PS Attention, pour que ça fonctionne, les grants sur les objets d'autres schémas (SYS, autre user, etc...) et autres joyeusetés du genre doivent être "with admin option" pour pouvoir les propager sur le "shell vide" et retour...

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Citation Envoyé par manar
    attention c'est TRUNCATE et non TRUCATE

    c'est bien... tu apprends vite

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

Discussions similaires

  1. Sauvegarder une Base de données Oracle 8
    Par benjamin50 dans le forum Administration
    Réponses: 7
    Dernier message: 16/06/2009, 12h36
  2. Connexion de Delphi avec une base de données Oracle 9i
    Par Price dans le forum Bases de données
    Réponses: 1
    Dernier message: 19/12/2005, 13h38
  3. Réponses: 4
    Dernier message: 25/11/2005, 20h58
  4. Réponses: 5
    Dernier message: 08/07/2005, 14h10
  5. volume d'une base de donnée oracle 9i
    Par tarik75 dans le forum Oracle
    Réponses: 8
    Dernier message: 27/06/2005, 12h50

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