Auswahl  

 

Oracle
APEX
18.1:5.x
06.02.18 (MP)
11.12.18 (MM)
APEX, EXPORT

Body

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(r.application_id), v_dir,
            'APEX_'||r.application_id||'_'||to_char(sysdate,'DDMMYYYY_HH24MISS')||'.sql');
          END IF;
END LOOP;
END;
/


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 APEX 5.x und 18.x)

 

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

Besuchen Sie uns doch bei einer unsere über 40 Oracle Schulungen in München - Unterhaching.