Voir le flux RSS

Fabien Celaia

Oracle - réduire la taille de TEMP

Noter ce billet
par , 26/04/2018 à 09h17 (1059 Affichages)
Introduction

Mon DBA est un peu flemmard... Il ne fait pas de provisionnement d'espace et passe systématiquement nos tablespaces en mode illimité, avec auto-extension...
Résultat des courses : les tablespaces temporaires prennent l’ascenseur (32 Go si ce n'est pas du big file.... sinon... 32 To) et saturent les volumes sous-jacents... bloquant toute la base...

Le problème

On ne peut réorganiser le tablespace temporaire... et généralement, les blocs les plus hauts ne sont pas libérés... Impossible donc de le réduire, si ce n'est en le recréant.

La démarche
Dans mon cas de figure, j'ai la chance de travailler avec une base Oracle en custer (RAC). Je vais donc pouvoir minimiser l'interruption de service.... encore faut-il le faire proprement.

Renommage de l'ancien tablespace
C'est une tâche optionnelle, mais comme tout DBA psycho-rigide, j'aime bien retrouver, à la fin de l'intervention, les mêmes noms qu'au début...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ALTER TABLESPACE TEMP TO TEMP_A_SUPPRIMER
Création d'un nouveau tablespace temporaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
CREATE TEMPORARY TABLESPACE TEMP TEMPFILE 
  '+ORA_DVP_DAT' SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE 15G;
Passage du nouveau en temporaire par défaut
Lors du renommage du tablespace, oracle a précédé à la modification du nom dans tous les paramètres...
  1. le default temporary tablespace est aussi renommé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT PROPERTY_VALUE
    FROM DATABASE_PROPERTIES
    WHERE PROPERTY_NAME like 'DEFAULT_TEMP_TABLESPACE';
  2. il a aussi été renommé dans les tables sous-jacentes à dba_users
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT USERNAME, TEMPORARY_TABLESPACE
    FROM DBA_USERS


Il faut donc marquer le nouveau tablespace par défaut

Code : Sélectionner tout - Visualiser dans une fenêtre à part
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP ;
Déplacement des services sur le noeud 1

Malheureusement, les instances ont toujours des pointeurs dans la zone temporaire initiale : il faut passer par un nettoyage de ces pointeurs... et le plus simple est de rebooter les instances.... mais en douceur... Nous sommes pleine journée et en production...

Attention : compte tenu que nous allons déplacer nos services, il est important que vous ayez bien documenté

Code : Sélectionner tout - Visualiser dans une fenêtre à part
srvctl relocate service -db DVP -service MONSRVDVP -oldinst DVP2 -newinst DVP1
C'est la syntaxe de la version 12 d'Oracle. Pour les versions ultérieures, corrigez en conséquence
Code : Sélectionner tout - Visualiser dans une fenêtre à part
srvctl relocate service -d DVPOLD -s MONSRVDVPOLD -i DVPOLD2 -t DVPOLD1 -f

Arrêt/redémarrage du noeud 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
srvctl stop instance -d DVP -i DVP2 
srvctl stop instance -d DVP -i DVP2
Déplacement des services sur le noeud 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
srvctl relocate service -db DVP -service MONSRVDVP -oldinst DVP1 -newinst DVP2
Arrêt/redémarrage du noeud 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
srvctl stop instance -d DVP -i DVP1 
srvctl stop instance -d DVP -i DVP1
Déplacement des services initialements sur 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
srvctl relocate service -db DVP -service MONSRVDVP -oldinst DVP2 -newinst DVP1
Suppression du tablespace
Code : Sélectionner tout - Visualiser dans une fenêtre à part
DROP TABLESPACE TEMP_A_SUPPRIMER INCLUDING CONTENTS AND DATAFILES;
C.Q.F.D.

Envoyer le billet « Oracle - réduire la taille de TEMP » dans le blog Viadeo Envoyer le billet « Oracle - réduire la taille de TEMP » dans le blog Twitter Envoyer le billet « Oracle - réduire la taille de TEMP » dans le blog Google Envoyer le billet « Oracle - réduire la taille de TEMP » dans le blog Facebook Envoyer le billet « Oracle - réduire la taille de TEMP » dans le blog Digg Envoyer le billet « Oracle - réduire la taille de TEMP » dans le blog Delicious Envoyer le billet « Oracle - réduire la taille de TEMP » dans le blog MySpace Envoyer le billet « Oracle - réduire la taille de TEMP » dans le blog Yahoo

Mis à jour 26/04/2018 à 11h27 par Fabien Celaia

Catégories
SGBD , Oracle

Commentaires