background success stories

Oracle : export anormalement lent

Si votre export est anormalement lent il est probable que vous soyez dans le cas de figure ci-dessous :

Action(s) : Identifier le goulot d’étranglement (dans notre cas c’est le paramètre aq_tm_processes). On commence par identifier dans v$session le SID correspondant à la session Data Pump. On identifie les attentes sur la session concernée :

SQL> SELECT se.event,se.total_waits,se.time_waited,se.average_wait,se.max_wait
FROM v$session_event se
WHERE se.sid=135
ORDER BY se.average_wait;

 

EVENT TOTAL_WAITS TIME_WAITED AVERAGE_WAIT MAX_WAIT
KSV master waits 1 0 0 0
Buffer busy waits 2 0 0 0
Class slave wait 335 0 0 0
Datapump dump file I/O 6 0 0,01 0
Control file sequential read 28 1 0,02 0
Direct path write 2 0 0,03 0
Library cache: mutex X 3 0 0,03 0
Utl_file I/O 534 16 0,03 0
Disk file operations I/O 11 1 0,05 0
Db file sequential read 18 3 0,16 1
Direct path read 172 33 0,19 5
Events in waitclass Other 3 1 0,28 1
Enq: UL – contention 1 0 0,31 0
Os thread startup 1 1 1,16 1
Library cache lock 1 6 6,47 6
Wait for unread message on broadcast channel 6.834 679.993 99,5 102
Streams AQ: enqueue blocked on low memory 204 1.224.206 6.001,01 6.002

 

 

On peut clairement remarquer ci-dessus en gras une forte attente au niveau AQ (Advanced Queuing).

AQ_TM_PROCESSES controls time monitoring on queue messages and controls processing of messages with delay and expiration properties specified. You do not need to specify a value for this parameter because Oracle Database automatically determines the number of processes and autotunes them, as necessary. Therefore, Oracle highly recommends that you leave the AQ_TM_PROCESSES parameter unspecified and let the system autotune.

 

On vérifie donc la valeur du paramètre aq_tm_processes de notre instance :

show parameter aq_tm_processes

NAME TYPE VALUE
aq_tm_processes integer 0

 

Oracle recommande de ne pas positionner cette valeur à 0.

Pour vérifier rapidement et simplement que la modification de la valeur de ce paramètre impacte réellement la vitesse de l’export : Lancer un export et durant cet export modifier le paramètre aq_tm_processes à 1.

SQL> alter system set aq_tm_processes=1 scope=both;

La vitesse de l’export doit être fortement améliorée.