Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Administration
Administration Forum d'entraide sur l'administration du serveur Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/09/2011, 15h34   #1
Membre habitué
 
Avatar de olivanto
 
Responsable d'exploitation informatique
Inscription : mars 2005
Messages : 435
Détails du profil
Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Finance

Informations forums :
Inscription : mars 2005
Messages : 435
Points : 147
Points : 147
Par défaut ORA-24247 sur Oracle 11g

bonjour,

J'avais l'habitude de faire un envoi de mail de ma base (9i) qui listait pas mal d'infos.

J'ai porté tout çà sur une 11g, qui me renvoit cette erreur ;

ORA - 24247 network access denied by access control list (ACL).

Je ne trouve rien de pertinent pour m'aider ; les forums anglophones en parlent, mais la solution m'échappe. Un problème de provilèges sur des packages, semble t'il ....

Si quelqu'un a une idée.. ??

merci

ci dessous, la procédure d'envoi, qui recoit en paramètres le message à envoyer.

Code :
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
 
CREATE OR REPLACE procedure send_mail(
p_exp IN OUT varchar2,
p_dest IN OUT varchar2,
p_obj IN OUT varchar2,
p_msg IN OUT varchar2)
IS
v_cnx utl_smtp.connection;
v_smtp_srv varchar2(200):= 'smtp.xxx.com';
v_port pls_integer:=25;
v_msg varchar2(32000);
BEGIN
v_cnx:=utl_smtp.open_connection(v_smtp_srv,v_port);
utl_smtp.HELO(v_cnx,v_smtp_srv);
utl_smtp.MAIL(v_cnx,p_exp);
utl_smtp.RCPT(v_cnx,p_dest);
v_msg:= 'MIME-Version: 1.0' || utl_tcp.CRLF 
|| 'Content-type: text/html;charset="iso-8859-15";'
|| 'Content-Transfer-Enconding: 8bit' || utl_tcp.CRLF 
|| 'date:'||TO_CHAR(sysdate,'dd mon yyyy hh24:mi:ss')||utl_tcp.CRLF
|| 'from:'||p_exp||utl_tcp.CRLF
|| 'subject:'||p_obj||utl_tcp.CRLF
|| 'to:'||p_dest||utl_tcp.CRLF
|| ''||utl_tcp.CRLF
|| p_msg||utl_tcp.CRLF||'';
 
utl_smtp.DATA(v_cnx,v_msg);
utl_smtp.quit(v_cnx);
 
EXCEPTION
WHEN utl_smtp.transient_error OR utl_smtp.permanent_error THEN
  utl_smtp.quit(v_cnx);
  raise_application_error(-20000,'Erreur send_mail:'||sqlerrm);
 END;
/
__________________
apprenti sorcier Oracle & boulet intérimaire...
http://www.courtois.cc/murphy/murphy_informatique.html
olivanto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 15h53   #2
Membre du Club
 
Inscription : octobre 2009
Messages : 62
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 62
Points : 57
Points : 57
Bonjour,

Jamais utilisé le package UTL_SMTP, mais apparemment, sur la 11g, les ports utilisés par ce package sont bloqués par défaut.

As-tu accès à Metalink ?
marsup077 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 15h56   #3
Membre habitué
 
Avatar de olivanto
 
Responsable d'exploitation informatique
Inscription : mars 2005
Messages : 435
Détails du profil
Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Finance

Informations forums :
Inscription : mars 2005
Messages : 435
Points : 147
Points : 147
non, (c'est peut être un tort) mais mon niveau d'anglais est trop faible pour suivre de toute façon...

je pensais que placer les droits sur le package suffirait, mais il doit y avoir autre chose en effet...

ex ;
Code :
GRANT execute ON utl_smtp TO moi
__________________
apprenti sorcier Oracle & boulet intérimaire...
http://www.courtois.cc/murphy/murphy_informatique.html
olivanto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 22h17   #4
Membre éprouvé
 
Femme
Administrateur de base de données
Inscription : novembre 2007
Messages : 341
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données

Informations forums :
Inscription : novembre 2007
Messages : 341
Points : 478
Points : 478
Bonsoir,
peux-tu essayer d'exécuter ça as sys :
Code :
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
begin
dbms_network_acl_admin.create_acl (
acl => 'utl_mail.xml',
description => 'Allow mail to be send',
principal => 'MOI',
is_grant => TRUE,
privilege => 'connect'
);
commit;
end;
 
begin
dbms_network_acl_admin.add_privilege (
acl => 'utl_mail.xml',
principal => 'MOI',
is_grant => TRUE,
privilege => 'resolve'
);
commit;
end;
/
 
begin
dbms_network_acl_admin.assign_acl(
acl => 'utl_mail.xml',
host => 'xxx.xxx.xxx'
);
commit;
end;
Heaven93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 11h03   #5
Membre habitué
 
Avatar de olivanto
 
Responsable d'exploitation informatique
Inscription : mars 2005
Messages : 435
Détails du profil
Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Finance

Informations forums :
Inscription : mars 2005
Messages : 435
Points : 147
Points : 147
ahaa.. une belle réponse que voilà.

que dois je mettre là dedans ??

l'adresse IP de mon serveur Oracle ?

et qu'est ce que le champ 'principal', stp ?


Quoi qu'il en soit, j'ai pris ta procédure, où pour l'host, j'ai mis l'adresse IP de mon serveur Oracle, le résultat est le même.
__________________
apprenti sorcier Oracle & boulet intérimaire...
http://www.courtois.cc/murphy/murphy_informatique.html
olivanto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 14h43   #6
Membre éprouvé
 
Femme
Administrateur de base de données
Inscription : novembre 2007
Messages : 341
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données

Informations forums :
Inscription : novembre 2007
Messages : 341
Points : 478
Points : 478
principal, c'est le user ou le role à qui tu grantes les privileges.
pour le paramètre host, si tu as un domain à mettre c'est tout aussi bien. par exemple www.us.oracle.com
là tu as toute la doc (je la trouve assez claire). http://download.oracle.com/docs/cd/B...tm#insertedID0
Heaven93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 15h22   #7
Membre habitué
 
Avatar de olivanto
 
Responsable d'exploitation informatique
Inscription : mars 2005
Messages : 435
Détails du profil
Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Finance

Informations forums :
Inscription : mars 2005
Messages : 435
Points : 147
Points : 147
bon, j'ai dû rater qq étapes, rien ne change ! J'ai pourtant bien remplacé le 'principal' par mon utilisateur, et le host par le nom de domaine...

pour l'instant, la requete suivante :

Code :
1
2
3
4
5
6
7
8
9
10
11
 
SELECT host, acl,
     DECODE(
          DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE_ACLID(aclid, 'mon_utilisateur', 'resolve'),
            1, 'GRANTED', 0, 'DENIED', NULL) privilege
     FROM dba_network_acls
    WHERE host IN
      (SELECT * FROM
         TABLE(DBMS_NETWORK_ACL_UTILITY.DOMAINS('mondomaine.fr'))) AND
      lower_port IS NULL AND upper_port IS NULL
   ORDER BY DBMS_NETWORK_ACL_UTILITY.DOMAIN_LEVEL(host) DESC;
me donne

Code :
1
2
3
 
HOST	ACL	PRIVILEGE
modomaine.fr	/sys/acls/utl_mail.xml	GRANTED
mais la doc. est plutôt claire, en effet ; je vais me pencher dessus.

merci beaucoup, je vais désormais ramer un peu moins !
__________________
apprenti sorcier Oracle & boulet intérimaire...
http://www.courtois.cc/murphy/murphy_informatique.html
olivanto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 14h43   #8
Membre habitué
 
Avatar de olivanto
 
Responsable d'exploitation informatique
Inscription : mars 2005
Messages : 435
Détails du profil
Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Finance

Informations forums :
Inscription : mars 2005
Messages : 435
Points : 147
Points : 147
au final, on peut tout simplement "ouvrir" l'ACL comme ceci.
C'est moins "classe", mais très efficace. Evidemment il y a moins de granularité dans la sécurité, mais bon...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
BEGIN
  DBMS_NETWORK_ACL_ADMIN.create_acl (  
   acl => 'open_acl_file.xml', 
   description => 'ACL sur base',
    principal => 'utilisateur',
    is_grant => TRUE,
    privilege => 'connect',
    start_date => SYSTIMESTAMP,
    end_date => NULL);
 
  DBMS_NETWORK_ACL_ADMIN.assign_acl (
    acl => 'open_acl_file.xml', 
    host => '*',
    lower_port => 1,
    upper_port => 9999); 
 
  COMMIT;
END;
Là, ça marche.
__________________
apprenti sorcier Oracle & boulet intérimaire...
http://www.courtois.cc/murphy/murphy_informatique.html
olivanto est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h06.


 
 
 
 
Partenaires

Hébergement Web