Das neue Oracle APEX 20.1 hat uns ja wieder mit vielen neuen Funktionen überrascht. Eines davon ist die autoamtische Backup-Funktionalität.
Nur leider ist diese sehr wenig konfigurierbar.
Sie können einstellen, wieviele Backups pro APP behalten werden sollen.
Der Default sind 25 Backups pro App
SELECT apex_200100.WWV_FLOW_PLATFORM.GET_PREFERENCE('MAX_APPLICATION_BACKUPS')
FROM dual;
--oder für die neuere Version APEX 20.2
SELECT apex_200200.WWV_FLOW_PLATFORM.GET_PREFERENCE('MAX_APPLICATION_BACKUPS')
FROM dual;
=>25
Ändern können Sie die Anzahl mittels:
BEGIN
apex_instance_admin.set_parameter('MAX_APPLICATION_BACKUPS','5');
END;
Eine Übersicht der bereits existierenden Backups erhalten Sie durch:
SELECT flow_id,name,apex_util.filesize_mask(doc_size) as doc_size,created_on
FROM flows_files.wwv_flow_file_objects$ f
WHERE file_type='FLOW_BACKUP'
ORDER BY created_on ;
Für die nächtlichen Backup verantwortlich, ist der Job mit Namen wwv_flow_backup.main:
SELECT job_name,job_action,repeat_interval,run_count
FROM dba_scheduler_jobs
WHERE owner='APEX_200200';
Dieser läuft jede Nacht um 02:00 Uhr
Sie können jedich auch manuell ein Backup erstellen durch:
BEGIN wwv_flow_backup.application (
p_batch_id =>1,
p_application_id =>100,
p_application_name =>'MyApp',
p_security_group_id =>1234567890,
p_last_updated_on =>sysdate,
p_description =>'Mein Montags Backup ');
COMMIT;
END;
Auch können Backup manuell gelöscht werden (Hier die Appliaktionen 11000 und 11020:
BEGIN
FOR c In (select b.id,f.security_group_id,f.flow_id,f.created_on
FROM flows_files.wwv_flow_file_objects$ f, apex_200200.WWV_FLOW_BACKUPS$ b
WHERE f.id=b.object_id
AND file_type='FLOW_BACKUP'
AND flow_id IN (11000,11020)) LOOP
dbms_output.put_line('Remove :'||c.flow_id);
wwv_flow_api.set_security_group_id(c.security_group_id);
apex_200100.wwv_flow_backup.remove(
p_application_id=>c.flow_id,
p_security_group_id=>c.security_group_id,
p_backup_id=>c.id);
END LOOP;
COMMIT;
END;
Oder alternativ löschen wir alle APEX Backups, die älter als 100 Tage sind:
DECLARE
v_tage IN:=100;
BEGIN
FOR c In (select b.id,f.security_group_id,f.flow_id,f.created_on
FROM flows_files.wwv_flow_file_objects$ f, apex_200200.WWV_FLOW_BACKUPS$ b
WHERE f.id=b.object_id
AND file_type='FLOW_BACKUP'
AND b.created_on<sysdate-v_tage) LOOP
dbms_output.put_line('Remove :'||c.flow_id);
wwv_flow_api.set_security_group_id(c.security_group_id);
apex_200200.wwv_flow_backup.remove(
p_application_id=>c.flow_id,
p_security_group_id=>c.security_group_id,
p_backup_id=>c.id);
END LOOP;
COMMIT;
END;
Weitere Tipps und Tricks zu APEX 20.1 und APEX 20.2 erhalten Sie natürlich in einen unserer 6 verschiedenen APEX-Kurse... Online oder bei uns Vorort