|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mai 2008 Messages : 12 ![]() |
Une base de données 9i (9.2.0.7) de 15go avec un tbs SYSTEM de 7Go !! Puis-je réduire la taille de ce tbs et comment ?
Merci pour toutes réponses ... annemar |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Inscription : juin 2007 Messages : 1 497 ![]() |
7 Go ? Es-tu sûr que tu n'as pas d'objets appartenant à des schémas applicatifs ?
Que donne la requête suivante : Code :
__________________
La théorie, c'est quand on sait tout mais que rien ne fonctionne. La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi ! Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/ |
||
|
|
00
|
|
|
#3 |
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 523 ![]() |
ouais, il y a surement des choses dans system qui ne sont pas au bon endroit !
|
|
|
00
|
|
|
#4 | |
|
Membre chevronné
![]() DBA Oracle freelance Inscription : janvier 2005 Messages : 558 ![]() |
Citation:
A moins qu'un tablespace temporaire défini en tant que system ait écrit dedans. La réduction d'un datafile se fait avec la commande alter database datafile '/..../fichier.xxx' resize nnnM; Si toutefois le high water mark du datafile le permet. |
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : mai 2008 Messages : 12 ![]() |
Bon, il n'y a pas que du SYSTEM ou SYS, mais ce ne sont pas des schémas de nos applicatifs. De plus, la taille cumulée de ces octets ne semble pas faire les 7go de la tbs.
SQL> SELECT owner,sum(bytes) FROM dba_segments WHERE tablespace_name = 'SYSTEM' GROUP BY owner; 2 OWNER SUM(BYTES) ------------------------------ ---------- DBSNMP 720896 ORDSYS 458752 OUTLN 393216 SYS 640942080 SYSTEM 21757952 WMSYS 3866624 6 rows selected. Que puis-je faire ? |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 1 497 ![]() |
Comme dit 13thFloor, le tablespace SYSTEM ne serait-il pas utilisé à tort comme tablespace temporaire ? As-tu bien créé un autre tablespace temporaire (souvent il s'appelle TEMP) utilisé par défaut ?
__________________
La théorie, c'est quand on sait tout mais que rien ne fonctionne. La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi ! Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/ |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : mai 2008 Messages : 12 ![]() |
Correction de ce que je viens de répondre :
SQL> SELECT owner,sum(bytes) FROM dba_segments 2 WHERE tablespace_name = 'SYSTEM' GROUP BY owner; OWNER SUM(BYTES) ------------------------------ ---------- DBSNMP 720896 ORDSYS 458752 OUTLN 393216 SYS 6959857664 SYSTEM 21626880 WMSYS 3866624 6 rows selected. On a bien les 6 schémas mais la taille n'est pas la même ; ici, on retrouve bien les 7 go !! (je m'étais trompée de db, bien sûr !!) |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : mai 2008 Messages : 12 ![]() |
Complément d'info
Via OEM Grid, je trouve : table SYS.SOURCE$ --> 4 711 424 KB index SYS.I_SOURCE1 --> 1 246 208 KB Comment les "réduire" ? |
|
|
00
|
|
|
#9 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
c'est probablement le code stockée en base, tu as beaucoup de packages ou vues ?
|
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : mai 2008 Messages : 12 ![]() |
Je ne pense pas qu'il y ait bp de packages, vues etc ... En fait, cette base de données est la copie de la base de production qui a un tablespace SYSTEM de 600Mo (ce qui est très bien chez nous)
La spécificité de cette base qui pose problème est que chaque nuit, un batch tourne pour la réalimenter : 1) drop dans le schéma de l'application de tout (table, procédure, type, view, package, sequence, function), soit 1300 objets environ 2) import du schéma "fraichement" exporté de la base de prod. Cette base copie est alimentée ainsi depuis mars 2006. Peut-être est-ce cela qui a fait grossir la table SOURCE$. Que faire de cette table SOURCE$ et de cet index I_SOURCE1 ? Merci de vos réponses rapides. Ca fait avancer la réflexion ! |
|
|
00
|
|
|
#11 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
A mon avis tu as un paramétrage différent des tablespaces sur les 2 bases. Vérifie au moins que les clauses storages ne sont pas extravagantes notamment le PCTINCREASE et NEXT_EXTENT.
|
|
|
00
|
|
|
#12 | ||||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
quels sont ces gros objets dans sys?
Code :
Code :
|
||||
|
00
|
|
|
#13 | |||
|
Membre chevronné
![]() DBA Oracle freelance Inscription : janvier 2005 Messages : 558 ![]() |
Citation:
C'est un des objets du dictionnaire qui parfois est le plus gros, notamment quand un base comporte de très nombreux codes source (cas des ERP ou des spécifiques ou tout le code applicatif est stocké en base). Un alter table source$ move; devrait compacter cette table. Ne pas oublier un alter index I_SOURCE1 rebuild; A faire pendant aucune activité (mode restricted conseillé). C'est néanmoins curieux qu'un clone avec 600 Mo pour le tablespace system passe à plus d'1 Go : de nouveaux schémas ont dû être créés. A vérifier : le nombre d'objets par schémas. Code :
|
|||
|
|
00
|
|
|
#14 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
Citation:
pour mémoire : http://download.oracle.com/docs/cd/B....htm#sthref854 Caution: Altering or manipulating the data in data dictionary tables can permanently and detrimentally affect the operation of a database. |
|
|
00
|
|
|
#15 | |
|
Membre chevronné
![]() DBA Oracle freelance Inscription : janvier 2005 Messages : 558 ![]() |
Citation:
De toute façon, avant une telle manipulation, il vaut mieux faire un backup. A part recréer sa base, je ne vois pas comment abaisser drastiquement la table SOURCE$. |
|
|
|
00
|
|
|
#16 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
recréer la base me parait une bonne solution. CREATE DATABASE, EXP, IMP.
Si tu fais un "ALTER" sur une table système, tu risques gros. Même si tu penses que ça marche, peut-être qu'une perversité du système provoquera une corruption dans le dictionnaire, et cette corruption, tu la remarqueras peut-être dans plusieurs années ![]() Lorsque tu as une corruption dans le dictionnaire, c'est très difficile d'en connaitre la cause, c'est pourquoi je recommende la plus grande prudence ! |
|
00
|
|
|
#17 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
surtout que tu risques d'invalider des vues ou packages du dictionnaire ce qui n'est pas très joyeux
|
|
|
00
|
|
|
#18 | ||
|
Membre chevronné
![]() Inscription : septembre 2007 Messages : 519 ![]() |
Tout à fait d'accord avec vous, on ne touche pas aux objets du tablespace SYSTEM impunément.
Si la base n'est pas H24, un bon petit EXPORT/NOUVELLE BASE/IMPORT reste la meilleure chose à faire. Par mesure de sécurité, si il y a de la place, rien n'empêche de faire cela dans une deuxième base qui peut cohabiter avec la première... Mais avant tout il faudrait être sûr de la volumétrie des sources. Peux-tu poster le résultat de la requête suivante s.v.p : Code :
|
||
|
|
00
|
|
|
#19 |
|
Invité de passage
![]() Inscription : mai 2008 Messages : 12 ![]() |
Mes réponses dans l'ordre :
pour orafrance -------> pas de pct_increase et next_extent sur cette tbs SYSTEM (ni sur la tbs SYSTEM de la base de prod). Est-ce parce que la tbs est locally managed, créée a priori sans spécifier ces paramètres ? pour laurent schneider -------> les objets de SYS les plus gros sont comme je le disais plus haut SOURCE$ et index: SEGMENT_TYPE SEGMENT_NAME BYTES ------------------ ------------- ---------- TABLE SOURCE$ 4824498176 INDEX I_SOURCE1 1276116992 TABLE IDL_UB1$ 430964736 TABLE IDL_UB2$ 200278016 TYPE2 UNDO _SYSSMU6$ 159506432 TYPE2 UNDO _SYSSMU1$ 109174784 TYPE2 UNDO _SYSSMU9$ 109174784 TYPE2 UNDO _SYSSMU2$ 109174784 TYPE2 UNDO _SYSSMU5$ 109174784 Pour le nombre de packages et autres, j'ai les mêmes tailles ou presque entre les 2 bd. Dans la base de données qui pose problème : OWNER SUM(LENGTH(TEXT)) ------------------------------ ----------------- OUTLN 582 WEBUTIL 5983 WMSYS 6371 SYSTEM 61391 PERFSTAT 100105 DBSNMP 101107 ORDPLUGINS 235618 PLTOOLKIT 298880 HST65 785114 ORDSYS 929413 XDB 1061610 WKSYS 2233285 CTXSYS 3519014 SYS 35017045 GENOBJ 45080673 89436191 pour "13th floor" et laurent schneider -----> Je vais effectivement attendre avant de compacter SOURCE$ (et index). Si je n'ai vraiment pas d'autre solution, je ferai cela pour voir, avant de reconstruire entièrement la base copie (ça c'était mon idée première, mais si une solution moins bourrin existe ...). J'ai à peu de chose près le même nombre de schémas et autres entre la base de prod (SYSTEM : 600Mo) et la base copie (SYSTEM : 7Go). Ce qui peut faire la "différence" c'est peut-être la suppression de chaque objet du schéma GENOBJ et le réimport, de façon quotidienne. D'autres idées pour les 2 questions qui finalement se posent : comment réduire SOURCE$ et index ? pourquoi SOURCE$ et index sont-ils devenus aussi gros ? Merci d'avance |
|
|
00
|
|
|
#20 | ||
|
Invité de passage
![]() Inscription : mai 2008 Messages : 12 ![]() |
Mes réponses suite
Pour laurent schneider, orafrance c'est une base copie, je peux la recréer "à la demande" par une copie de la base de production et create des control files. Donc si je fais la manip d'alter sur la table SOURCE$, ce sera pour un essai, à un moment ou j'aurai l'opportunité de recréer la base copie, si nécessaire. En attendant, elle fonctionne très bien avec son SYSTEM à 7 Go pour philcero : Ce n'est pas une grosse base. Voici le résultat de ta requête : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com