Bonjour à tout le monde,

Je suis en train d'essayer d'optimiser ma base de données et je me pose des questions sur le nombre de process DBW à utiliser.

Voici l'état de mon environnement :
48 CPU actifs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
select *  from v$osstat where upper(comments) like('%NUMBER%CPU%');
STAT_NAME	VALUE	OSSTAT_ID	COMMENTS	CUMULATIVE
NUM_CPUS	48	0	Number of active CPUs	NO
NUM_CPU_CORES	24	16	Number of CPU cores	NO
NUM_CPU_SOCKETS	6	17	Number of physical CPU sockets	NO
6 process DBW, ce qui correspond aux préconisations d'Oracle, à savoir un process DBW pour 8 CPU.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
show parameters writer
	db_writer_processes                  integer  6
 
select PNAME  from v$process where pname like 'DBW%';
PNAME
-----
DBW0 
DBW1 
DBW2 
DBW3 
DBW4 
DBW5
En faisant des recherches sur le net, je suis tombé sur des articles parlant d'écritures directes et asynchrones.
https://oracle-base.com/articles/mis...synchronous-io

Actuellement on permet les deux sur ma base.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
select name, display_value, description from v$parameter where upper(name) like '%FILESYSTEMIO_OPTIONS%';
NAME	DISPLAY_VALUE	DESCRIPTION
filesystemio_options	SETALL	IO operations on filesystem files
Est-ce qu'avec ce système d'I/O direct et asynchrone je peux (si jamais c'était nécessaire) réduire le nombre de process DBW? J'ai l'impression que le fait d'utiliser le système asynchrone réduit le bénéfice d'avoir plusieurs process DBW mais peut-être que je fais fausse route.