Problème DBMS_DATAPUMP.open jobmode=>'Table'
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:
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:
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
Citation:
erreur:ORA-31626: la tâche n'existe pas Job-ID:
qui semble se produire sur
Code:
p_dph := DBMS_DATAPUMP.open(operation=>'EXPORT',job_mode=>'TABLE',job_name=>'EXEO_PURGE_GPS_'||NOMSCHEMA);
J'ai vraiment du mal à comprendre :koi: