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 :

Erreur Ora-1652 et saturation du disque C


Sujet :

Administration Oracle

  1. #1
    Invité de passage
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Par défaut Erreur Ora-1652 et saturation du disque C
    Bonjour,
    J'avais un plutôt bon niveau requêteur sql, voire pl/sql, sur des grosse BDD complexes et à la retraite je voudrais continuer pour le fun. J'ai donc, pour retrouver mon terminal SQl Plus, installé une database oracle free sur mon PC Windows 11, 16 GO de RAM, un SSS des 250 GO et un disque dur de 1 TO.
    Puis j'ai recréé une base d'environ 2 GO, avec pour la table principale environ 12 millions d'enregistrements.
    Pour l'installation j'ai respecté les valeurs par défaut et l'ai faite sur C:.
    Mais 250 GO c'est vite rempli, et l'installation faite je n'avais plus qu'une vingtaine de GO de libres. A ma première requête, avec croisement de 3 tables, agrégation sur une colonne et tri sur la même colonne, j'obtiens l'erreur Ora-1652 (unable to extent temp-segment), et mon disque C n'a plus que 270 MO de libres. A deux ou trois reprises je fais le le ménage dans mon ordi (transfert d'applis sur D et suppression de fichiers), et retente l'exécution en filtrant certaines données, et à chaque fois mon disque C est à nouveau saturé. Et je n'ai plus rien à supprimer...
    En résumé, Oracle occupe plus de 30 GO de plus, et je ne sais pas pourquoi. Ma base occupe toujours 2 GO, et la table V$SORT_USAGE est vide.
    Bon requêteur, oui, mais je suis nul côté administration.
    Alors j'ai une question générale : Que faire ?
    Et deux questions plus particulières :
    - Comment récupérer mes 30 ou 40 GO perdus ?
    - Comment étendre la mémoire temporaire ? Peut-on utiliser pour cela le disque D ? Et comment ?
    D'avance merci pour vos réponses.
    Cordialement,
    François

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 176
    Par défaut
    Bonjour,

    Alors déjà ce que je te conseille c'est d'utiliser une VM, parce qu'installer Oracle directement sur son poste Windows je trouve ça galère, ça installe plein de trucs partout (registre, services, variable d'environnement, etc.), et c'est toujours la merde à désinstaller.
    Donc moi ce que je fais c'est que j'utilise VirtualBox pour créer une machine virtuelle sous Oracle Linux pour y installer mes produits Oracle. VirtualBox, Oracle Linux et Oracle Database Free sont tous gratuits.
    Je pense que tu peux même télécharger une VM toute prête.
    Concernant ton problème, il doit y avoir un problème avec la requête, ce n'est pas normal d'exploser le temp comme ça, et c'est peut-être ça la raison des 30Go utilisés. Quelle est la taille actuelle du fichier temp?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select file_name, tabelspace_name, bytes, autoextensible, maxbytes from dba_temp_files;

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    il y a de fortes chances que ce soit la création implicite de tables temporaires vu que votre PC dispose de peu de RAM... Déplacez le stockage des tables teporaires :
    https://docs.oracle.com/cd/E11882_01...s.htm#i1009563

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Invité de passage
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Par défaut
    Merci pour vos réponses, vanagreg est SQLpro,
    Le problème immédiat c'est que je peux plus rien faire tant que n'ai pas récupéré plus de mémoire sur C, je n'ai plus que 5 Go de libres. J'avais d'ailleurs essayé dans un premier temps d'installer Oracle sur D, mais sans parvenir à configurer correctement les paramètres "administrateur"...
    Je ne pense pas que ma requête pose problème, j'en ai fait des centaines similaires. Elle aurait dû créer une table provisoire de quelques 3 millions de lignes, soit environ 300 MO. Mais il est possible que le tri pose problème dans la configuration actuelle, et si j'avais pu exécuter à nouveau la requête, j'aurai supprimé le tri pour voir...
    Pour la mémoire :
    FILE_NAME                                                                       !TABLESPACE_NAME !         BYTES!AUTOEXTENSIBLE!   MAXBYTES
    --------------------------------------------------------------------!----------------------!--------------!--------------------!---------
    C:\APP\FRANC\PRODUCT\23AI\ORADATA\FREE\TEMP01.DBF !TEMP                     !  3,436E+10!YES                    !  3,436E+10
    Effectivement, après trois exécution, il a atteint 32 GO (3,436E+10 bytes).
    Puis-je vider ce fichier ? Et par quelle commande SQL ? Ou simplement le supprimer ? Si c'est le cas, je pourrais tester ma requête sans tri, et éventuellement tenter le déplacement du stockage des tables temporaires.
    Dans ce cas, SQLpro, Quelle syntaxe utiliser pour modifier le stockage. La syntaxe suivante serait-elle correcte ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         ALTER DATABASE FREE TEMPORARY TABLESPACE 'D:\ORA_temp\TEMP01.DBF';   --  (après création du dossier D:\ORA_temp);
    Cette table sera-t-elle automatiquement extensible ? Et peut-on attribuer un volume limite à cet espace de stockage ?
    Sinon, je vais désinstaller Oracle, en espérant récupérer de la mémoire sur C et ainsi un système Windows stable, puis je créerai une VM sous Oracle Linux, après, peut-être, avoir tenté une nouvelle installation d'Oracle sur D.
    Et voir aussi si je peux remplacer mon SSD par un 512 GO.
    Encore merci.
    F.

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 176
    Par défaut
    Oui tu peux installer Oracle sur ton D:.
    Sinon pour réduire la taille du tablespace temp:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLESPACE temp SHRINK SPACE;
    Par défaut Oracle ne désalloue pas l'espace pris par le temp, car il considère que si tu as atteint cette taille, c'est que tu en auras certainement encore besoin dans le futur, donc plutôt que de désallouer/allouer inutilement successivement, il conserve la taille.

  6. #6
    Invité de passage
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Par défaut
    Merci beaucoup vanagreg.

    Et pour le déplacement de l'espace temporaire de stockage sur D, la syntaxe ci-dessous est-elle correcte ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER DATABASE FREE TEMPORARY TABLESPACE 'D:\ORA_temp\TEMP01.DBF'; -- (après création du dossier D:\ORA_temp).
    Cette table sera-t-elle automatiquement extensible ? Et peut-on attribuer un volume limite à cet espace de stockage ?

  7. #7
    Membre Expert
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 176
    Par défaut
    Tu peux faire ça pour changer d'emplacement (Oui tu peux préciser une taille max, 10 Go par exemple ici) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    alter database tempfile 'C:\APP\FRANC\PRODUCT\23AI\ORADATA\FREE\TEMP01.DBF' drop including datafiles;
    ALTER TABLESPACE temp add TEMPFILE 'D:\ORA_temp\TEMP01.DBF' size 2G AUTOEXTEND ON NEXT 1G MAXSIZE 10G;

  8. #8
    Invité de passage
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Par défaut
    Super !
    Merci encore.
    F.

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