Bonjour,

Voilà j'ai un soucis avec DBMS_DATAPUMP sous oracle 10g

D'un coté j'au une procédure qui fonctionne parfaitement sur un export de schéma :
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
PROCEDURE SAVESCHEMA(NOMSCHEMA IN VARCHAR2) IS
 p_dph NUMBER;
 DayOfYear VARCHAR2(4);
 BEGIN 
 select TO_CHAR(SYSDATE,'DDD') INTO DayOfYear FROM DUAL;
 p_dph := DBMS_DATAPUMP.open(operation=>'EXPORT',job_mode=>'SCHEMA',job_name=>'EXEO_EXPORT_FULL_'||NOMSCHEMA);
 DBMS_DATAPUMP.add_file(handle=>p_dph,filename=>NOMSCHEMA||DayOfYear||'.dmp',directory=> 'ORACLEBACKUP',filetype=>1);
 DBMS_DATAPUMP.add_file(handle=>p_dph,filename=>NOMSCHEMA||DayOfYear||'.log',directory=> 'ORACLEBACKUP',filetype=>3);
 DBMS_DATAPUMP.metadata_filter(handle => p_dph,name=>'SCHEMA_EXPR',value =>'IN('''||NOMSCHEMA||''')'); 
 DBMS_DATAPUMP.start_job(p_dph);
 DBMS_DATAPUMP.detach(p_dph);
 dbms_output.put_line('Export terminé ');
EXCEPTION 
  WHEN OTHERS THEN
   dbms_output.put_line('erreur:'||sqlerrm||'  Job-ID:'||p_dph);
 END SAVESCHEMA;
Qui fonctionne parfaitement si le le lance avec l'utilisateur system sur un schéma.

ce script là :
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
PROCEDURE ARCHIVEGPS(NBJOURSCONSERVE IN NUMBER, NOMSCHEMA IN VARCHAR2) IS
DayPivot NUMBER(10);
DayMax NUMBER(10);
strsql VARCHAR2(200);
p_dph NUMBER;
DayOfYear VARCHAR2(4);
BEGIN
strsql := 'select MAX(DATETIME) FROM '|| NOMSCHEMA ||'.pointgps';
EXECUTE IMMEDIATE strsql INTO DayMax;
DayPivot := DayMax-NBJOURSCONSERVE;
select TO_CHAR(SYSDATE,'DDD') INTO DayOfYear FROM DUAL;
dbms_output.put_line(DayPivot);
p_dph := DBMS_DATAPUMP.open(operation=>'EXPORT',job_mode=>'TABLE',job_name=>'EXEO_PURGE_GPS_'||NOMSCHEMA);
dbms_output.put_line('jobtrace1');
DBMS_DATAPUMP.add_file(handle=>p_dph,filename=>'POINTGPS'||NOMSCHEMA||DayOfYear||'.dmp',directory=> 'ORACLEBACKUP',filetype=>1);
DBMS_DATAPUMP.add_file(handle=>p_dph,filename=>'POINTGPS'||NOMSCHEMA||DayOfYear||'.log',directory=> 'ORACLEBACKUP',filetype=>3);
DBMS_DATAPUMP.metadata_filter(handle => p_dph,name=>'INCLUDE_NAME_EXPR',value =>'IN('''||NOMSCHEMA||'.POINTGPS'')');
DBMS_DATAPUMP.data_filter(handle => p_dph,name=>'SUBQUERY',value=>'WHERE DATETIME<'||DayPivot,table_name=>'POINTGPS',schema_name=>NOMSCHEMA);
DBMS_DATAPUMP.start_job(p_dph);
DBMS_DATAPUMP.detach(p_dph);
dbms_output.put_line('Export terminé ');
EXCEPTION 
  WHEN OTHERS THEN
   dbms_output.put_line('erreur:'||sqlerrm||'  Job-ID:'||p_dph);
END ARCHIVEGPS;
exécuté sur le même schéma avec le même utilisateur (system) me retourne une erreur
erreur:ORA-31626: la tâche n'existe pas Job-ID:
qui semble se produire sur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
p_dph := DBMS_DATAPUMP.open(operation=>'EXPORT',job_mode=>'TABLE',job_name=>'EXEO_PURGE_GPS_'||NOMSCHEMA);
J'ai vraiment du mal à comprendre