|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
![]() ![]() |
Bonjour et bonne année à tous les oracliens.
Cadeau de début d'année, je me retrouve ce matin avec une jolie erreur ORA-01653 sur le tablespace SYSTEM ! ![]() J'ai pu augmenter la taille du data_file à 900 000 000 mais y aurait-il des choses à nettoyer dans les tables de SYSTEM, SYS ou autres qui utilisent ce tablespace. Est-ce que cette taille vous semble normale ou trop grande ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|
00
|
|
|
#2 |
|
Membre éprouvé
![]() |
Hello,
Peu-etre aud$? jko
__________________
OCP 11g, RAC and Performance & Tuning Expert 11g RMAN Backup & Recovery, Data Guard and Grid Control |
|
10
|
|
|
#3 |
|
Futur Membre du Club
![]() Administrateur de base de données Inscription : juillet 2012 Messages : 12 ![]() |
Une petite requête rapidement écrite pour voir éventuellement les objets qui n'auraient pas du être créés dans ce tablespace :
Code :
SELECT OWNER||'.'||SEGMENT_NAME FROM dba_segments WHERE TABLESPACE_NAME='SYSTEM' AND OWNER NOT IN ('SYSTEM', 'SYS'); Sinon, en tout rigueur ... il est difficile de dire si la taille de system est correcte sans connaitre la volumétrie de ta base. Si tu n'as que deux schémas et trois tables ... c'est inquiétant ... si tu répertories (à leur insu bien sur) les informations confidentielles de tous les braves utilisateurs du réseaux social le plus en vogue ... ça se discute. Je t'inviterais d'abord à regarder quels sont tes objects les plus volumineux : Code :
SELECT owner, segment_name, segment_type, bytes/1024/1024 FROM dba_segments WHERE tablespace_name = 'SYSTEM' ORDER BY 4; |
|
|
00
|
|
|
#4 | |
![]() ![]() |
Pas bête en effet !
Grâce au premier résultat affiché ici, et après avoir jeté un œil à la structure et au contenu de la table, je comprends qu'il s'agit de la table qui stocke l'audit de la BDD. Y figurent plus de 1 400 000 lignes, les premières datant de 2010 ! Autrement dit, elle n'a jamais été purgée depuis l'installation d'Oracle. Je lis aussi sur le lien donné plus haut : Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|
|
00
|
|
|
#5 |
|
Membre éprouvé
![]() |
Hello,
pour la période de rétention, cela dépend des besoins du business... Avant cela n'était pas supporté de déplacer cette table vers un autre tablespace. C'était possible, mais NON supporté. Depuis la 11g il existe une procédure pour déplacer cette table AUD$ vers un tablespace dédié. Package: DBMS_AUDIT_MGMT Procédure SET_AUDIT_TRAIL_LOCATION Bonne soirée. jko
__________________
OCP 11g, RAC and Performance & Tuning Expert 11g RMAN Backup & Recovery, Data Guard and Grid Control |
|
00
|
|
|
#6 | ||
![]() ![]() |
Un problème en entraîne un autre...
La base de prod sur laquelle j'ai rencontré le problème objet de cette de discussion est dupliquée 3 fois sur un serveur de test. Du coup, la partition qui héberge les fichiers des bases de test est pleine. Comme j'étais connecté via SQL Developer sur l'une des bases de test quand on m'a signalé que la connexion au serveur de test était impossible, j'ai voulu purger un peu la fameuse table sys;aud$ de tout ce qui est plus ancien que 2012, grâce à cette requête : Code SQL :
Un COUNT(*) préalable avec le même WHERE donnait quand même plus de 600 000 lignes à supprimer. Dans SQL Developer, la requête tourne depuis au moins un quart d'heure. À votre avis, elle est plantée ? EDIT : La requête a terminé son exécution.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
||
|
00
|
|
|
#7 | |||||
|
Membre éprouvé
![]() |
Citation:
Tu peux spider un peux avec du paralèlisme si tu es en enterprise edition: Code SQL :
Tu peux allez faire un tour dans v$session et suivre les waits associés à ta session... jko
__________________
OCP 11g, RAC and Performance & Tuning Expert 11g RMAN Backup & Recovery, Data Guard and Grid Control |
|||||
|
00
|
|
|
#8 | ||
![]() ![]() |
Faudrait regarder le plan d'exécution de la requête pour voir s'il y a utilisation d'un index ou non.
Il faut aussi regarder sur la table combien elle possède d'index et combien elle possède de lignes. En plus les données sont mal typées, j'imagine que ntimestamp# est de type date ou timestamp. Mais comme elle est comparée à du varchar, Oracle va convertir toute la colonne avant de faire son filtre. Il faut vérifier pour le format de conversion implicite soit correct. Et dans ce cas l'index - s'il existe - n'est pas utilisé. Donc si l'index n'est pas utilisé, Oracle va lire toute la table, effacer une ligne, et recommencer cette opération 600.000 fois. Ça va prendre du temps ! Il vaut mieux tuer la transaction, vérifier la présence de l'index afin de le créer s'il n'existe pas, vérifier le type de la colonne ntimestamp# et passer avec un des deux where : Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#9 | |
|
Membre éprouvé
![]() |
Citation:
Il ne vas pas scanner la table 600 000 fois mais une seule fois. Concernant l'index, la modification d'objects appartenant à sys n'est pas supportée par Oracle... Jko
__________________
OCP 11g, RAC and Performance & Tuning Expert 11g RMAN Backup & Recovery, Data Guard and Grid Control |
|
|
20
|
|
|
#10 |
![]() ![]() |
Je me suis emballé !
L'index peut être mis ailleurs que dans sys, comme ça pas de modification sur ce schéma.
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#11 |
|
Expert Confirmé Sénior
![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 4 115 ![]() |
|
|
|
11
|
|
|
#12 | |
![]() ![]() |
Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|
|
11
|
|
|
#13 |
![]() ![]() |
C'est dangereux Oracle en fait !
__________________
Email : http://scr.im/waldar |
|
11
|
|
|
#14 |
![]() ![]() |
Ben je suppose qu'un oracle peut donner une bonne nouvelle comme prédire une catastrophe !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|
11
|
|
|
#15 |
|
Expert Confirmé Sénior
![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 4 115 ![]() |
Aucun souci pour ça! J'ai parlai juste de la création des indexes sur des objets appartenant à sys dans des autres schémas que sys.
[Edit] Quoi que ça sera mieux pour la sauvergarde de nos amês d'utiliser si possible les outils d'Oracle : Auditing Enhancements (DBMS_AUDIT_MGMT) in Oracle Database 11g Release 2 |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com