|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre à l'essai
![]() Inscription : septembre 2007 Messages : 109 ![]() |
Bonjour,
j'ai une base oracle (8i) "A" qui 'surveille' mes autres bases oracle (ex:"B"). Cette base doit notement remonter les informations disques (un df sur "B" redirigé vers un fichier que la base "A" lit). Pour cela, la procédure RapatrierInfosDisques de "A" doit éxécuter la procédure LINUXGetDiskInfo de "B". Hors, je ne sais pas comment faire exécuter une procédure distante depuis une autre procédure. Pouvez vous m'aider? voici les codes en question: sur "A": Code :
Code :
|
||||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
|
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Inscription : septembre 2007 Messages : 109 ![]() |
en fait, je suis complétement perdu:
j'essaye de faire comme dans l'exemple: Code :
SELECT mafonction(monparam)@mondblink FROM... Code :
SELECT utl_surge.LINUXGetDiskInfo(dsk, siz, fre)@dblinkname FROM... désolé, je ne suis vraiment pas fort en pl/sql... je ne vois pas les tables que l'ont peux attaquer. sinon si je comprends le lien donné, dans la procédure RapatrierInfosDisques au lieu de: LINUXGetDiskInfo (dsk, siz, fre); pour l'éxecuetr à distance, je remplace la ligne par: r:=LINUXGetDiskInfo (dsk, siz, fre) || dblinkname; mais ça ne marche pas non plus. suis paumé la... |
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
c'est le @dblink qu'il faut retenir, pour le reste ça fonctionne exactement comme une procédure locale
|
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : septembre 2007 Messages : 109 ![]() |
ok, merci!
je viens de comprendre mon probleme...qui en a soulevé un autre: je veux executer ma procédure LINUXGetDiskInfo(dsk, siz, fre) à distance. Le principe est donc de mettre LINUXGetDiskInfo@dblinkname(dsk, siz, fre); sauf que dblinkname doit être un parametre (car j'ai plusieurs bases à surveiller) j'ai donc essayé LINUXGetDiskInfo@dblinkname(dsk, siz, fre); et je me retrouve lors de la compilation avec: ORA-04054: lien base de données DBLINKNAME inexistant j'ai essayé aussi : LINUXGetDiskInfo||@dblinkname(dsk, siz, fre); mais ne fais pas mieux. Comment le mettre en parametre? merci de vos aides |
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
regarde du coté de EXECUTE IMMEDIATE
|
|
|
00
|
|
|
#7 |
|
Membre à l'essai
![]() Inscription : septembre 2007 Messages : 109 ![]() |
Merci pour l'info,
mais je me retrouve avec une erreur ora-00900 avec la commande: Code :
execute immediate 'LINUXGetDiskInfo'||dblinkname||'(dsk, siz, fre)'; Je suppose que c'est un problème d'interprétation? |
|
|
00
|
|
|
#8 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
manque EXEC.
si tu colles : Code :
LINUXGetDiskInfo@base.world(dsk, siz, fre) Code :
EXEC LINUXGetDiskInfo@base.world(dsk, siz, fre) |
|
|
00
|
|
|
#9 | ||
|
Membre à l'essai
![]() Inscription : septembre 2007 Messages : 109 ![]() |
en fait, je ne l'éxecute pas à travers SQl plus mais toad:
cette procédure est appelé à l'intérieur d'une autre procédure: Code :
j'ai essayé de tourné ça dans tous les sens mais j'ai toujours des erreurs de compil' Code :
exec 'LINUXGetDiskInfo'||dblinkname||'(dsk, siz, fre)'; Code :
execute immediate 'LINUXGetDiskInfo'||dblinkname||'(dsk, siz, fre)'; |
||
|
|
00
|
|
|
#10 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Code :
execute immediate 'exec LINUXGetDiskInfo'||dblinkname||'(dsk, siz, fre)'; |
|
|
00
|
|
|
#11 |
|
Membre à l'essai
![]() Inscription : septembre 2007 Messages : 109 ![]() |
merci, je n'avais pas du tout compris ça comme ça.
Mais toujours pareil, erreur ora-00900 |
|
|
00
|
|
|
#12 | ||
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
essaye :
Code :
Essaye plutôt : Code :
EXECUTE IMMEDIATE 'EXEC LINUXGetDiskInfo'||dblinkname||'(:1, :2, :3)' USING dsk, siz, fre; |
||
|
|
00
|
|
|
#13 |
|
Membre à l'essai
![]() Inscription : septembre 2007 Messages : 109 ![]() |
...non plus.
en local (donc sans ajouter le dblinkname) la procédure s'execute sans souci . mais dès que je veux rajouter un lien dblink... |
|
|
00
|
|
|
#14 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
les variables sont probablement mal renseignées... merci de faire une recherche sur EXECUTE IMMEDIATE et faire les modifs en conséquence.
|
|
|
00
|
|
|
#15 | ||
|
Membre à l'essai
![]() Inscription : septembre 2007 Messages : 109 ![]() |
Bonjour, ça fait 5 jours que je suis dessus et je ne trouve toujours pas de solution:
j'essaye donc de passer par du sql dynamique sans résultat: Code :
et ora-06512 à la ligne 13. Pourtant toutes les variables sont bien déclarées. j'ai l'impression qu'il me refuse le execute immediate Quelqu'un peu t il m'aider? je suis à cours de solution... Merci d'avance |
||
|
|
00
|
|
|
#16 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
il manque le BEGIN et END dans la chaine du SQL dynamique
|
|
|
00
|
|
|
#17 | ||
|
Membre à l'essai
![]() Inscription : septembre 2007 Messages : 109 ![]() |
Enfin!
je viens de trouver la solution: Code :
M |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com