Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
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 24/05/2011, 09h55   #1
Membre habitué
 
Avatar de jlm22
 
Homme Jean-Louis
Etudiant
Inscription : décembre 2010
Messages : 199
Détails du profil
Informations personnelles :
Nom : Homme Jean-Louis
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Etudiant

Informations forums :
Inscription : décembre 2010
Messages : 199
Points : 114
Points : 114
Par défaut PLSQL ORA 942 et 2063

Bonjour,

je réalise en ce moment un script sql qui copie des table d'un base vers une autre et je rencontre actuellement un problème lors de la copie de quelques tables elles ont toutes le même problème c'est à dire Ora 942 table or view does not exist et ORA-02063: precedant line de "base_source".

Mes requêtes s'exécute parfaitement dans sqldevelopper mais dès qu'elle s'execute dans le script elle me sorte ces 2 erreurs.

Les tables existent bien, le databaselink fonctionne aussi, je ne vois pas trop où chercher au final.

Merci de votre aide.
jlm22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 11h00   #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 263
Points : 3 263
Si on ne voit pas le script, ça sera difficile à dire...
__________________
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 24/05/2011, 11h10   #3
Membre habitué
 
Avatar de jlm22
 
Homme Jean-Louis
Etudiant
Inscription : décembre 2010
Messages : 199
Détails du profil
Informations personnelles :
Nom : Homme Jean-Louis
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Etudiant

Informations forums :
Inscription : décembre 2010
Messages : 199
Points : 114
Points : 114
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
 
CREATE OR REPLACE PROCEDURE BDEHISTO AS
 
v_Periodicite   number;
v_table		  	varchar2(50);
v_table_exception varchar2(50);
v_requete		varchar2(2000);
v_verif_purge   varchar2(100);
v_error_code	varchar2(50);
v_error_message	varchar2(100);
l_mailhost    VARCHAR2(64) := '*****';
l_from        VARCHAR2(64) := '****@****.fr';
l_subject     VARCHAR2(64) := '*****';
l_to          VARCHAR2(64) := '****.****@gmail.com';
l_mail_conn   UTL_SMTP.connection;
l_date_debut 	VARCHAR2(64) := To_CHAR(SYSDATE,'DD-MON-YYYY HH24:MI:SS');
v_cpt number ;
 
cursor C1 IS
	   SELECT Latable,periodicite,ladate, ladate2, jointure
	   FROM histo;
 
C1r	   C1%ROWTYPE;
 
BEGIN
DBMS_OUTPUT.PUT_LINE ('DEBUT');
OPEN C1;
    FETCH C1 INTO C1r;
 
    -- on parcours la table Histo
    while C1%FOUND loop
      v_requete:='SELECT COUNT(*) FROM '||C1r.Latable||'@bdepkg';
      EXECUTE IMMEDIATE v_requete INTO v_cpt ;
      DBMS_OUTPUT.PUT_LINE( To_char( v_cpt ) || ' enregistrements') ;
      DBMS_OUTPUT.PUT_LINE(C1r.Latable);
      v_table_exception:=C1r.latable;
 
    -- si =0 alors il vient d'avoir une purge donc on ne met rien a jour
		IF v_cpt>0 then
			IF C1r.jointure='VBL' then
        v_table_exception:=v_table_exception || ' VBL';
        v_requete := 'delete from '||C1r.latable||' where chronocd in ( select chronocd from vbl@bdepkg where to_date(dpre,''DD/MM/YY'') > TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''DD/MM/YY''),''DD/MM/YY''))';
				EXECUTE IMMEDIATE v_requete;
				commit;
 
				v_requete := 'insert into '||C1r.latable||' select * from '||C1r.latable||'@bdepkg where chronocd in ( select chronocd from vbl@bdepkg where to_date(dpre,''DD/MM/YY'') > TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''DD/MM/YY''),''DD/MM/YY''))';
				EXECUTE IMMEDIATE v_requete;
				commit;
 
			-- jointure par rapport à cart
			elsif C1r.jointure='CCART' then
        v_table_exception:=v_table_exception || ' CCART';
				v_requete := 'delete from '||C1r.latable||' where cart in ( select cart from ccart@bdepkg where to_date(dcart,''YYYY/MM/DD'') > TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''YYYY/MM/DD''),''YYYY/MM/DD''))';
				EXECUTE IMMEDIATE v_requete;
				commit;
 
				v_requete := '	insert into '||C1r.latable||' 
								select * from '||C1r.latable||'@bdepkg 
								where cart in ( 
									select cart 
									from ccart@bdepkg 
									where to_date(dcart,''YYYY/MM/DD'') > TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''YYYY/MM/DD''),''YYYY/MM/DD''))';
				EXECUTE IMMEDIATE v_requete;
				commit;
 
			-- jointure par rapport au lot
			elsif C1r.jointure='VLOTS' then
        v_table_exception:=v_table_exception || ' VLOTS';
				v_requete := '	delete from '||C1r.latable||'
								where lot in ( 
									select lot 
									from vlots@bdepkg 
									where to_date(dat,''DD/MM/YY'') > TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''DD/MM/YY''),''DD/MM/YY''))';
				EXECUTE IMMEDIATE v_requete;
				commit;
 
				v_requete := '	insert into '||C1r.latable||' 
								select * from '||C1r.latable||'@bdepkg 
								where lot in ( 
									select lot 
									from vlots@bdepkg 
									where to_date(dat,''DD/MM/YY'') > TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''DD/MM/YY''),''DD/MM/YY''))';
				EXECUTE IMMEDIATE v_requete;
				commit;
			end IF;
 
			IF C1r.ladate IS NOT NULL then
        v_table_exception:=v_table_exception || ' date1';
				-- on supprime les anciennes saisies
				v_requete := 'delete from '|| C1r.Latable ||' 
              where to_date('|| C1r.ladate ||',''YYYY/MM/DD'') > TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''YYYY/MM/DD''),''YYYY/MM/DD'')';
				EXECUTE IMMEDIATE v_requete;
				commit;
 
				-- on met à jour BDE Histo
				v_requete := 'insert into '|| C1r.Latable ||' 
              select * from '|| C1r.Latable ||'@bdepkg 
              where to_date('|| C1r.ladate ||',''YYYY/MM/DD'') > TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''YYYY/MM/DD''),''YYYY/MM/DD'')'; 
				EXECUTE IMMEDIATE v_requete;
				commit;
 
			elsif C1r.ladate2 IS NOT NULL then
        v_table_exception:=v_table_exception || ' date2';
				-- on supprime les anciennes saisies
				v_requete := 'delete from '|| C1r.Latable ||' 
              where to_date('|| C1r.ladate2 ||',''DD/MM/YY'') < TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''DD/MM/YY''),''DD/MM/YY'')';
				EXECUTE IMMEDIATE v_requete;
				commit;
 
				-- on met à jour BDE Histo
				v_requete := 'insert into '|| C1r.Latable ||' 
              select * from '|| C1r.Latable ||'@bdepkg 
              where to_date('|| C1r.ladate2 ||',''DD/MM/YY'') < TO_DATE(TO_CHAR(SYSDATE-'|| C1r.periodicite||',''DD/MM/YY''),''DD/MM/YY'')';
				EXECUTE IMMEDIATE v_requete;
				commit;
 
      elsif c1r.ladate IS NULL AND c1r.ladate2 IS NULL AND c1r.jointure IS NULL then
 
        -- on supprime les anciennes saisies
        v_table_exception:=v_table_exception || ' NULL';
				v_requete := 'TRUNCATE TABLE '||c1r.latable;
				EXECUTE IMMEDIATE v_requete;
				commit;
 
				-- on met à jour BDE Histo
				v_requete := 'insert into '|| C1r.Latable ||' select * from '|| C1r.Latable ||'@bdepkg';
				EXECUTE IMMEDIATE v_requete;
				commit;
 
			end IF;
		end IF;
    FETCH C1 INTO C1r;
    end loop;
	-- envoie du mail
    l_mail_conn := UTL_SMTP.open_connection(l_mailhost, 25);
	UTL_SMTP.helo(l_mail_conn, l_mailhost);
	UTL_SMTP.mail(l_mail_conn, l_from);
	UTL_SMTP.rcpt(l_mail_conn, l_to);
 
	UTL_SMTP.open_data(l_mail_conn);
 
	UTL_SMTP.write_data(l_mail_conn, 'Date: ' || TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS') || CHR(13));
	UTL_SMTP.write_data(l_mail_conn, 'From: ' || l_from || CHR(13));
	UTL_SMTP.write_data(l_mail_conn, 'Subject: ' || l_subject || CHR(13));
	UTL_SMTP.write_data(l_mail_conn, 'To: ' || l_to || CHR(13));
	UTL_SMTP.write_data(l_mail_conn, '' || CHR(13));
 
	-- Multi-line message simulated with a loop calling WRITE_DATA multiple times.
	UTL_SMTP.write_data(l_mail_conn, '***********************************************************************************'|| CHR(13));
	UTL_SMTP.write_data(l_mail_conn, 'Lancement de la procédure BDE Histo le ' || l_date_debut||' et fini le '||TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS')||CHR(13));
	UTL_SMTP.write_data(l_mail_conn, '***********************************************************************************'|| CHR(13));
 
	UTL_SMTP.write_data(l_mail_conn, '' || CHR(13));
	UTL_SMTP.close_data(l_mail_conn);
 
	UTL_SMTP.quit(l_mail_conn);
CLOSE C1;
EXCEPTION
   WHEN OTHERS THEN
	v_error_code := SQLCODE;
	v_error_message := SQLERRM;
	l_mail_conn := UTL_SMTP.open_connection(l_mailhost, 25);
	UTL_SMTP.helo(l_mail_conn, l_mailhost);
	UTL_SMTP.mail(l_mail_conn, l_from);
	UTL_SMTP.rcpt(l_mail_conn, l_to);
 
	UTL_SMTP.open_data(l_mail_conn);
 
	UTL_SMTP.write_data(l_mail_conn, 'Date: ' || TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS') || CHR(13));
	UTL_SMTP.write_data(l_mail_conn, 'From: ' || l_from || CHR(13));
	UTL_SMTP.write_data(l_mail_conn, 'Subject: ' || l_subject || CHR(13));
	UTL_SMTP.write_data(l_mail_conn, 'To: ' || l_to || CHR(13));
	UTL_SMTP.write_data(l_mail_conn, '' || CHR(13));
 
	-- Multi-line message simulated with a loop calling WRITE_DATA multiple times.
 
	UTL_SMTP.write_data(l_mail_conn, 'Lancement de la procédure BDE Histo le ' || l_date_debut|| ' et fini le '||TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS')|| CHR(13));
	UTL_SMTP.write_data(l_mail_conn,'ERREUR pendant la procédure : '|| v_error_message ||' au niveau de la table '|| v_table_exception);
 
 
	UTL_SMTP.write_data(l_mail_conn, '' || CHR(13));
	UTL_SMTP.close_data(l_mail_conn);
	UTL_SMTP.quit(l_mail_conn);
END;
J'ai mis des variable pour voir ou il en est au moment de l'erreur et il n'execute aucune requete il ne rentre pas dans mes boucles, et j'ai de plus en plus de tables toucher par cette erreur même des table qui n'était pas toucher avant.
jlm22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 11h20   #4
Membre habitué
 
Avatar de jlm22
 
Homme Jean-Louis
Etudiant
Inscription : décembre 2010
Messages : 199
Détails du profil
Informations personnelles :
Nom : Homme Jean-Louis
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Etudiant

Informations forums :
Inscription : décembre 2010
Messages : 199
Points : 114
Points : 114
Après avoir enlever toute les tables qui posait problème le script plante dès le départ, je précise que sa compile.
jlm22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 11h54   #5
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 263
Points : 3 263
Vous êtes en PL/SQL, ce qui change pas mal de choses...

Je suppose que le compte utilisé par le DBLINK, on va l'appeler Nestor, accède aux tables grâce à un rôle (au hasard : DBA). En PL/SQL, les privilèges obtenus à travers un rôle sont ignorés. Il faut donc donner les privilèges table par table à Nestor.
Oui, on est tous d'accord, c'est pénible !

PS : je passe les subtilités AUTHID CURRENT_USER.
__________________
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 24/05/2011, 12h12   #6
Membre habitué
 
Avatar de jlm22
 
Homme Jean-Louis
Etudiant
Inscription : décembre 2010
Messages : 199
Détails du profil
Informations personnelles :
Nom : Homme Jean-Louis
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Etudiant

Informations forums :
Inscription : décembre 2010
Messages : 199
Points : 114
Points : 114
Sa n'explique pas pourquoi mon script plante dès le démarrage.

En attendant j'ai fait un drop table de ma table histo (celle que je parcours avec le curseur dans le script) et je l'ai reconstruite et va savoir pourquoi sa marche ! Mais bon je suis pas à l'abris que le problème revienne.
jlm22 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 14h05.


 
 
 
 
Partenaires

Hébergement Web