Auswahl  

Export von allen APEX Komponenten 

APEX
06.02.18 (MP)
16.04.20(MP)
APEX, EXPORT

Passende Schulungen zum Thema

Zu einem guten APEX-Projekt gehört auch ein gutes Backup-Konzept. Sie möchten ja keine wichtigen Projektänderungen verlieren oder?

Schön wäre es, wenn dies auch noch automatisch erfolgen würde, also legen wir los:

Voraussetzungen:

1. Sie haben ein Oracle Directory angelegt (wir nehmen hier mal das Directory DATA_PUMP_DIR, das ist meistens schon vorhanden)
Sonst legen Sie ein neues Directory an mittels:

CREATE DIRECTORY apex_backup_dir AS 'C:\oracle\apex'; -- Windows
CREATE DIRECTORY apex_backup_dir AS '/u01/oracle/apex'; -- UNIX


2. Der Benutzer, der den Export durchführt, hat mindestens Schreibrechte an dem Directory. Sonst vergeben Sie ihm die Rechte durch:

GRANT WRITE ON DIRECTORY data_pump_dir TO SCOTT;


Nun zu einigen Beispielen von APEX Applikationsbackups.

Beispiel 1: Apps mit ID<3000, die sich in den letzten 24 Stunden geändert haben

DECLARE
-- In welches Directory sollen die Exports erfolgen?
v_dir VARCHAR2(255):=upper('DATA_PUMP_DIR');
-- Wenn eine Applikation in den letzten 24 Stunden geändert worden ist
-- wird ein neues Backup erzeugt
v_stunden NUMBER:=24;
BEGIN
FOR r IN (select application_id,last_updated_on
          from apex_applications
          WHERE APPLICATION_ID<3000) LOOP
          IF r.last_updated_on>sysdate-(v_stunden/24) THEN
          -- Apex App in Clob wandeln und als Datei in Directory legen
            DBMS_XSLPROCESSOR.CLOB2FILE (
            wwv_flow_utilities.export_application_to_clob(p_application_id=>r.application_id), v_dir,
            'APEX_'||r.application_id||'_'||to_char(sysdate,'DDMMYYYY_HH24MISS')||'.sql');
          END IF;
END LOOP;
END;
/

Weitere interessante Parameter des Packages wwv_flow_utilities.export_application_to_clob:       

p_export_ir_public_reports  default 'N'
p_export_ir_private_reports default 'N'
p_export_ir_notifications   default 'N'
p_export_translations       default 'N'
p_export_pkg_app_mapping    default 'N'
p_with_original_ids         default false
p_exclude_subscriptions     default false


Beispiel 2: Einzelne APEX Seite exportieren:

DECLARE
v_page_id INT:=1; -- Seite 1
v_app_id INT:=100; -- Applikation ID 100
BEGIN
DBMS_XSLPROCESSOR.CLOB2FILE (
wwv_flow_utilities.export_page_to_clob(v_app_id,v_page_id), 'DATA_PUMP_DIR', 'apex_f'||v_app_id||'_p'||v_page_id||'.sql');
END;
/


Beispiel 3: Alle Seiten exportieren, die sich in den letzten 24 Stunden geändert haben:

DECLARE
v_dir VARCHAR2(255):=upper('DATA_PUMP_DIR');
BEGIN
FOR r IN (SELECT a.application_id,ap.page_id
            FROM apex_application_pages ap,apex_applications a
            WHERE ap.application_id=a.application_id
            AND ap.last_updated_on>sysdate-interval '24' hour
            AND a.application_id<3000
            AND a.owner=user) LOOP
                DBMS_XSLPROCESSOR.CLOB2FILE (
                cl=>wwv_flow_utilities.export_page_to_clob(
                r.application_id,r.page_id),
                FLOCATION=>v_dir,
                FNAME=>'APEX_'||r.application_id||'_'||r.page_id||'_'||
                to_char(sysdate,'DDMMYYYY_HH24MISS')||'.sql');      
END LOOP;
END;
/

 

Beispiel 4: Workspace Export (Achtung, der exportiert keine APEX Apps)

BEGIN
    FOR r IN (SELECT distinct workspace_id w_id FROM apex_applications) LOOP
      wwv_flow_api.set_security_group_id(r.w_id);
      -- set the apex_application.g_user global variable...
      -- the username you use as argument needs admin privileges in the workspace
      -- apex_custom_auth.set_user('admin');
    DBMS_XSLPROCESSOR.CLOB2FILE (
       cl                         => wwv_flow_utilities.export_workspace_to_clob(
       p_workspace_id             => r.w_id,                     
       p_include_team_development => TRUE),
       FLOCATION                  =>upper('DATA_PUMP_DIR'),                               
       FNAME  => 'APEX_WORKSPACE_'||to_char(sysdate,'DDMMYYYY_HH24MISS')||'.sql');
    END LOOP;
END;
/


Beispiel 5: Workspace Dateien exportieren:

BEGIN
  FOR r IN (
    SELECT distinct workspace_id w_id
    FROM apex_applications
    where application_id=100) LOOP
    DBMS_XSLPROCESSOR.CLOB2FILE (
    cl=>wwv_flow_utilities.export_files_to_clob (r.w_id),
    FLOCATION=>upper('DATA_PUMP_DIR'),
    FNAME=>'APEX_WORKSPACE_'||to_char(sysdate,'DDMMYYYY_HH24MISS')||'.sql');
  END LOOP;
END;
/

Für weitere Tipps & Tricks besuchen Sie doch einen unserer APEX Kurse (APEX I, APEX II, APEX Security, APEX für Admins oder Neuerungen in 19.x/20x)

 

APEX Export von Applikation incl. Workspace Export, Bilder Export, Applikationsexport und Seitenexport