Ahoi @all
folgendes "Problem":
Ich habe mir ein Tool zusammen gedengelt, welches per PL/SQL einmal täglich einen Dump aus löst.
PL/SQL für das Schema "TEST":
declare
h1 NUMBER;
begin
begin
h1 := dbms_datapump.open (operation => 'EXPORT', job_mode => 'SCHEMA', job_name => 'BEISPIELEXPORTJOBNAME', version => 'COMPATIBLE');
end;
begin
dbms_datapump.set_parallel(handle => h1, degree => 1);
end;
begin
dbms_datapump.set_parameter(handle => h1, name => 'KEEP_MASTER', value => 0);
end;
begin
dbms_datapump.metadata_filter(handle => h1, name => 'SCHEMA_EXPR', value => 'IN(''TEST'')');
end;
begin
dbms_datapump.add_file(handle => h1, filename => 'BeispielExportDatei.DMP', directory => 'Transfer', filetype => 1);
end;
begin
dbms_datapump.set_parameter(handle => h1, name => 'INCLUDE_METADATA', value => 1);
end;
begin
dbms_datapump.set_parameter(handle => h1, name => 'DATA_ACCESS_METHOD', value => 'AUTOMATIC');
end;
begin
dbms_datapump.set_parameter(handle => h1, name => 'ESTIMATE', value => 'BLOCKS');
end;
begin
dbms_datapump.start_job(handle => h1, skip_current => 0, abort_step => 0);
end;
begin
dbms_datapump.detach(handle => h1);
end;
end;
/
Aufgabe:
In der Datenbank sind drei Tabellen, welche reine Changelogs sind, die den Dump nur unnötig aufblasen (560 statt 160 MB) und im Verlustfall verschmerzbar sind.
Also soll der Dump die Tabellen NICHT enthalten. Mein erster Gedanke wäre hier anzusetzen:
(...)
begin
dbms_datapump.metadata_filter(handle => h1, name => 'SCHEMA_EXPR', value => 'IN(''TEST'')');
end;
(...)
nach dem Motto: ... IN("TEST") AND NOT LIKE ... oder irgendwas in der Richtung. Aber was?
Edit: Jemand ne Idee? Oder besser Link auf Doku/Beispiel?
thx
folgendes "Problem":
Ich habe mir ein Tool zusammen gedengelt, welches per PL/SQL einmal täglich einen Dump aus löst.
PL/SQL für das Schema "TEST":
declare
h1 NUMBER;
begin
begin
h1 := dbms_datapump.open (operation => 'EXPORT', job_mode => 'SCHEMA', job_name => 'BEISPIELEXPORTJOBNAME', version => 'COMPATIBLE');
end;
begin
dbms_datapump.set_parallel(handle => h1, degree => 1);
end;
begin
dbms_datapump.set_parameter(handle => h1, name => 'KEEP_MASTER', value => 0);
end;
begin
dbms_datapump.metadata_filter(handle => h1, name => 'SCHEMA_EXPR', value => 'IN(''TEST'')');
end;
begin
dbms_datapump.add_file(handle => h1, filename => 'BeispielExportDatei.DMP', directory => 'Transfer', filetype => 1);
end;
begin
dbms_datapump.set_parameter(handle => h1, name => 'INCLUDE_METADATA', value => 1);
end;
begin
dbms_datapump.set_parameter(handle => h1, name => 'DATA_ACCESS_METHOD', value => 'AUTOMATIC');
end;
begin
dbms_datapump.set_parameter(handle => h1, name => 'ESTIMATE', value => 'BLOCKS');
end;
begin
dbms_datapump.start_job(handle => h1, skip_current => 0, abort_step => 0);
end;
begin
dbms_datapump.detach(handle => h1);
end;
end;
/
Aufgabe:
In der Datenbank sind drei Tabellen, welche reine Changelogs sind, die den Dump nur unnötig aufblasen (560 statt 160 MB) und im Verlustfall verschmerzbar sind.
Also soll der Dump die Tabellen NICHT enthalten. Mein erster Gedanke wäre hier anzusetzen:
(...)
begin
dbms_datapump.metadata_filter(handle => h1, name => 'SCHEMA_EXPR', value => 'IN(''TEST'')');
end;
(...)
nach dem Motto: ... IN("TEST") AND NOT LIKE ... oder irgendwas in der Richtung. Aber was?
Edit: Jemand ne Idee? Oder besser Link auf Doku/Beispiel?
thx
Comment