Redimensionner votre Undo Tablespace

7 fév

Chér(e)s ami(e)  en Oracle

Votre « Undo Tablespace » peux grossir rapidement lorsque vous charger beaucoup de donnée dans votre base de donnée.

En tant que DBA, vous avez le devoir de réduire les « tablespaces » qui utilisent un espace logique faible pour un espace logique important.

Pour ma part lors d’un chargement de table avec plus de 125 Millions de lignes mon TS UNDO a explosé

 

SQL> SELECT name, VALUE, description
     FROM V$PARAMETER
     WHERE name LIKE ‘%undo%’;
 NAME                VALUE       DESCRIPTION
 ——————–   ————-  —————————————————–
 undo_management AUTO       instance runs IN SMU MODE IF TRUE, ELSE IN RBU MODE
 undo_tablespace UNDOTBS1       USE/switch undo TABLESPACE
 undo_retention        900       undo retention IN seconds
                                                   Size            MaxSize                Used          Free
Tablespace                             (Mb)          (Mb)                   (Mb)          (Mb)             Used %     Free %
—————————— ————- ————- ————- ————- ——– ——–
APPDATA                            21,112.00     43,007.98     19,108.00      2,001.00   90,51%   9,48%
EXAMPLE                               345.63     32,767.98        308.88         35.75        89,37%   10,34%
PERFSTAT                              500.00      2,048.00        189.75        309.25     37,95%   61,85%
SYSAUX                                860.00     32,767.98        817.56         41.44      95,07%   4,82%
SYSTEM                                850.00     32,767.98        829.06         19.94    97,54%   2,35%
TEMP                                   64.00     32,767.98         63.00           1.00           98,44%   1,56%
UNDOTBS1                8,995.00     32,767.98       40.56      8,953.44    ,45%     99,54%
USERS                                   5.00     32,767.98          3.06           .94 61,2%    18,8%
                               ————-               ————- ————-
Totals:                            32,731.63                   21,359.87     11,362.76
On peut voir ici que la taille du fichier undo est de 8G et 40M sont réellement utilisé
si nous essayons de réduire la taille du fichier :

SQL> alter database datafile ‘/oracle/oradata/ORA11G/undotbs01.dbf’ resize 3G;
alter database datafile ‘/oracle/oradata/ORA11G/undotbs01.dbf’ resize 3G
*
ERREUR a la ligne 1 :
ORA-03297: le fichier contient des donnees utilisees au-dela de la valeur RESIZE requise

 

Niveau OS on a un fichier de 8G
[ora11g@nsbd47 ~]$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
/dev/mapper/centos_nsbd47-root   27G   21G  5.7G  79% /
devtmpfs                        1.9G     0  1.9G   0% /dev
tmpfs                           1.9G  599M  1.3G  32% /dev/shm
tmpfs                           1.9G  199M  1.7G  11% /run
tmpfs                           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1                       497M  194M  304M  39% /boot
tmpfs                           380M     0  380M   0% /run/user/0
/dev/sdb1                        40G   38G   96M 100% /oracle
Une petite recherche des fichiers
find /oracle  -type f -size +100000k -exec ls -lh {} \; | awk ‘{ print $9 « :  » $5 }’

/oracle/oradata/PDB1/example01.dbf: 151M
/oracle/oradata/PDB1/user01.dbf: 1001M
/oracle/oradata/PDB1/example02.dbf: 181M
/oracle/oradata/PDB1/sysaux01.dbf: 541M
/oracle/oradata/ORA11G/appdata01.dbf: 6.1G
/oracle/oradata/ORA11G/system01.dbf: 851M
/oracle/oradata/ORA11G/undotbs01.dbf: 8.8G
/oracle/oradata/ORA11G/appdata02.dbf: 11G
/oracle/oradata/ORA11G/example01.dbf: 346M
/oracle/oradata/ORA11G/perfstat01.dbf: 501M
/oracle/oradata/ORA11G/sysaux01.dbf: 861M
/oracle/oradata/ORA11G/appdata.dbf: 4.1G

Pour résoudre on doit  :

1) créer un TS temporaire
create undo tablespace UNDOTBSTEMP datafile
‘/u02/oradata/ORA11G/undotbs02.dbf’ size 100M;

2) forcer l’utilisation de ce TS

alter system set undo_tablespace = UNDOTBSTEMP;

3) Supprimer l’ancien TS undo

drop tablespace UNDOTBS1 including contents and datafiles;
4) Recréer votre “undo_tablespace” comme il vous convient.

create undo tablespace UNDOTBS1 datafile
‘/u02/oradata/ORA11G/undotbs.dbf’ size 100M autoextend on next 5M
maxsize 2G;

5) Placer votre «undo_tablespace en tant que defaut “undo_tablespace”
alter system set undo_tablespace = UNDOTBS;

6)Effacer votre “undo_tablespace” temporaire

 drop tablespace UNDOTBSTEMP including contents and datafiles;

Résultat :

 

                               Size          MaxSize                Used          Free
Tablespace                     (Mb)          (Mb)                  (Mb)          (Mb)  Used %   Free %
—————————— ————- ————- ————- ————- ——– ——–
APPDATA                            21,112.00     43,007.98     19,108.00      2,001.00 90,51%   9,48%
EXAMPLE                               345.63     32,767.98        308.88         35.75 89,37%   10,34%
PERFSTAT                              500.00      2,048.00        193.75        305.25 38,75%   61,05%
SYSAUX                                870.00     32,767.98        818.69         50.31 94,1%    5,78%
SYSTEM                                850.00     32,767.98        829.06         19.94 97,54%   2,35%
TEMP                                   64.00     32,767.98         63.00          1.00 98,44%   1,56%
UNDOTBS1                              100.00      2,048.00          1.25         97.75 1,25%    97,75%
USERS                                   5.00     32,767.98          3.06           .94 61,2%    18,8%
                               ————-               ————- ————-
Totals:                            23,846.63                   21,325.69      2,511.94
SQL>
Niveau OS on gagne 8G après reboot de la base
[ora11g@nsbd47 ~]$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
/dev/mapper/centos_nsbd47-root   27G   21G  5.6G  79% /
devtmpfs                        1.9G     0  1.9G   0% /dev
tmpfs                           1.9G  573M  1.3G  31% /dev/shm
tmpfs                           1.9G  207M  1.7G  11% /run
tmpfs                           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1                       497M  194M  304M  39% /boot
tmpfs                           380M     0  380M   0% /run/user/0
h/dev/sdb1                        40G   29G  8.9G  77% /oracle
OraclementVotre

Pas encore de commentaire

Laisser une réponse

Unblog.fr | Créer un blog | Annuaire | Signaler un abus