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