Bonjour à tous.

Problème qui me semble insoluble au moment présent.

Un utilisateur <USER> héberge une procédure stockée qui permet d'envoyer des mels à différentes adresses mels. Cette procédure fonctionne depuis des mois, or depuis deux jours pas de réponse lorsque l'on sollicite la procédure.

Après quelques essais, j'ai isolé la cause du problème, il se situe au niveau de la création de la connexion ; utl_smtp.open_connection.

J'ai donc écris un morceau de code pour simplifier sa résolution.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
set serveroutput on ;
declare 
l_connection utl_smtp.connection;
begin
DBMS_OUTPUT.PUT_LINE('demande ouverture smtp');
  l_connection := utl_smtp.open_connection('smtp.<domaine>', '25');
 
    DBMS_OUTPUT.PUT_LINE('ouverture smtp OK');
    --Cloture de la SMTP
		UTL_SMTP.QUIT(l_connection);
    DBMS_OUTPUT.PUT_LINE('fermeture  smtp OK');
end ;
Quand je l'exécute, même résultat, cela boucle sans retourner la moindre erreur, même après 30 mn.
J'ai pensé aux ACL qui aurait pu expliquer ce comportement.
Résultats :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
  select * from dba_network_acls;
qui retourne 
smtp.<domaine>	25	25	/sys/acls/mail_acces.xml	0000000080002896	SYS
-- --------------------------------------------------
  SELECT acl,
          principal,
           privilege,
        is_grant,
        TO_CHAR(start_date, 'DD-MON-YYYY') AS start_date,
           TO_CHAR(end_date, 'DD-MON-YYYY') AS end_date
   FROM   dba_network_acl_privileges
 
/sys/acls/mail_acces.xml	<USER> connect	true
Cela semblant OK, j'ai testé mon bout de code en SYS, C'est Ok pour la connexion SMTP !!

Donc, problème de droits pour moi.

En desespoir de cause j'ai donc détruit l'ACL pour le recréer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
 
BEGIN 
 
	-- MISE EN PLACE DES ACL des serveurs MAIL
	DBMS_OUTPUT.PUT_LINE('Création ACL pour le SMTP DEBUT - ' || TO_CHAR(SYSDATE,'HH24:MI:SS') );
 
	SELECT CASE WHEN EXISTS
		(
			SELECT DISTINCT ACL FROM DBA_NETWORK_ACLS
			WHERE ACL LIKE '%mail_acces.xml' 
		) THEN 1 ELSE 0 END
	INTO ACLEXIST FROM DUAL;
	IF (ACLEXIST = 1) THEN
		DBMS_OUTPUT.PUT_LINE('Suppression de l''ACL - mail_acces.xml -');	
 
		--Suppression du fichier ACL FTP 
		DBMS_NETWORK_ACL_ADMIN.DROP_ACL( acl => 'mail_acces.xml');	   
	END IF;
 
 
	-- ATTRIBUTION DES DROITS ACL à <USER> pour envoi de mel sur le SMTP
	DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
										acl          => 'mail_acces.xml'
										, description  => 'Permissions pour accéder au serveur SMTP.'
										, principal    => 'SYS'
										, is_grant     => TRUE
										, privilege    => 'connect'
									);
 
	DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
										acl          => 'mail_acces.xml'
										, host         => 'smtp.<domaine>'
										, lower_port   => 25
										, upper_port   => 25
									);
 
	DBMS_NETWORK_ACL_ADMIN.add_privilege (
											acl          => 'mail_acces.xml'
											, principal    => <USER>
											, is_grant     => TRUE
											, privilege    => 'connect'
										);
 
	DBMS_OUTPUT.PUT_LINE('Création ACL pour le SMTP FIN - ' || TO_CHAR(SYSDATE,'HH24:MI:SS') );
 
END ;
Malgré cette réécriture, le problème persiste, si quelqu'un a une piste je suis preneur.

Bonne soirée à tous.