Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels 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 31/01/2011, 10h26   #1
Invité de passage
 
Inscription : octobre 2002
Messages : 16
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 16
Points : 1
Points : 1
Par défaut parametrage PRAGMA RESTRICT_REFERENCES

bonjour,
je souhaiterais savoir s'il est possible de desactiver, avec des parametres syteme ou autre, des PRAGMA RESTRICT_REFERENCES.
il me gene pour tracer les erreurs en base via une procedure de trace qui utilise un PRAGMA AUTONOMOUS_TRANSACTION.
avez vous des idees pour contourner le probleme ?
je precise que je ne peux pas ecrire dans un fichier avec utl_file (interdiction par les DBA)
vttvolant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 10h49   #2
Rédacteur
 
Inscription : décembre 2002
Messages : 2 385
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 385
Points : 3 261
Points : 3 261
Bonjour

Un petit exemple concret serait bienvenu.
Et n'oubliez pas de préciser votre version d'Oracle.
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 15h19   #3
Invité de passage
 
Inscription : octobre 2002
Messages : 16
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 16
Points : 1
Points : 1
voici un exemple dans le fichier joint:
le probleme se situe dans l'appel de P_TRACE_ALL qui ne compile meme pas a cause du pragma RESTRICT_REFERENCES qui interdit l'alteration des data

base 10G
Fichiers attachés
Type de fichier : sql exemple_pragma.sql (2,7 Ko, 8 affichages)
vttvolant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 16h21   #4
Rédacteur
 
Inscription : décembre 2002
Messages : 2 385
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 385
Points : 3 261
Points : 3 261
Pour moi, vous n'avez pas besoin du PRAGMA RESTRICT_REFERENCES, c'est une vieillerie qui est devenue inutile en 8i.

Si vous tenez à l'utiliser, vous pouvez profiter de l'option TRUST, qui indique au compilateur de vous croire sur parole quand vous dites que la fonction ne modifie pas la base, et de ne pas examiner le corps de votre fonction pour vérifier vos dires.

Comme vous pouvez voir, j'ai même mis en commentaire le PRAGMA car il n'est pas nécessaire, mais vous pouvez aussi l'activer et tester avec ou sans le TRUST.

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
36
37
38
39
40
41
42
43
44
45
46
47
48
drop table trace purge;
create table trace(date_erreur date, code varchar2(10), libelle varchar2(100));

create or replace package pkgdemo
is
	function recup_sal(p_empno number) return number;
	procedure trace(p_code number);
	
--	pragma restrict_references (recup_sal, WNPS, WNDS, TRUST);
	
end pkgdemo;
/

create or replace package body pkgdemo 
is
	function recup_sal(p_empno number) return number
	is
		
		v_sal	int;
	begin
		select sal into v_sal from scott.emp where empno=p_empno;
		return v_sal;
	exception
		when no_data_found then
			trace(sqlcode);
			return null;
	end recup_sal;
	
	procedure trace(p_code number)
	is
		pragma autonomous_transaction;
		v_libelle varchar2(200);
	begin
		v_libelle:=sqlerrm(p_code);
		insert into trace values(sysdate, p_code, v_libelle);
		commit;
	end trace;
	
end pkgdemo;
/

-- celui-ci provoquera une erreur
select pkgdemo.recup_sal(10) from dual;
select pkgdemo.recup_sal(7369) from dual;
select empno, pkgdemo.recup_sal(empno) from scott.emp;

select * from trace;
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/02/2011, 11h06   #5
Invité de passage
 
Inscription : octobre 2002
Messages : 16
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 16
Points : 1
Points : 1
merci d'avoir repondu

je me demande alors si le PRAGMA RESTRICT_REFERENCES avec l'option TRUST a encore une raison d'exister ? à quel moment peut il encore jouer un role ?
vttvolant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 11h48   #6
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Using the Keyword TRUST
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h35.


 
 
 
 
Partenaires

Hébergement Web