L'automatisation des exports des applications Apex n'est pas franchement bien documenté chez Oracle et sur le net, et l'utilisation de l'export par l'interface est pénible dès que l'on commence à avoir des fichiers statiques, des images, plusieurs appli, etc...
Il existe une classe Java fournie dans les scripts d'install Apex (dans le répertoire utilities) avec un readme.txt qui donne quelques exemples.

Première chose : Garder le répertoire utilities (si comme moi vous supprimez les fichiers d'install)
Je copie le répertoire utilities dans mon répertoire de scripts d'export
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
cp -pr apex/utilities/ /home/oracle/export/
mv /home/oracle/export/utilities/ /home/oracle/export/ApexUtilities
Créer ensuite un script exportApex.sh
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
26
#!/bin/sh
 
REP=/home/oracle/export
EXPORTDIR=$REP/daily/
SERVEUR=monserveur
BASE=apexdev
USER=McM
PASSWORD=pwd
 
export CLASSPATH=.:${ORACLE_HOME}/jdbc/lib/ojdbc6.jar
 
# Il faut le GRANT APEX_ADMINISTRATOR_ROLE TO McM; pour exporter le workspace
 
#Oracle dit qu'il faut obligatoirement être dans le répertoire utilities, c'est faux, avec -Duser.dir on va pouvoir lancer le java d'ailleurs.
cd ${EXPORTDIR}
 
# Export des workspace
java -Duser.dir=${REP}/ApexUtilities/ oracle.apex.APEXExport -db ${SERVEUR}:1521:$BASE -user $USER -password "$PASSWORD" -expWorkspace > ${EXPORTDIR}/${BASE}Workspace.log
 
for WORKSPACEID in $( grep "^Exporting Workspace" ${BASE}Workspace.log | sed "s/ /:/g" | cut -d':' -f3 )
do
 echo "On exporte les applications du workspace $WORKSPACEID" >> ${BASE}Appli.log
 java -Duser.dir=${REP}/ApexUtilities/ oracle.apex.APEXExport -db ${SERVEUR}:1521:$BASE -user $USER -password "$PASSWORD" -workspaceid $WORKSPACEID >> ${BASE}Appli.log
 echo "On exporte les fichiers du workspace $WORKSPACEID" >> ${BASE}Appli.log
 java -Duser.dir=${REP}/ApexUtilities/ oracle.apex.APEXExport -db ${SERVEUR}:1521:$BASE -user $USER -password "$PASSWORD" -expFiles -workspaceid $WORKSPACEID >> ${BASE}Appli.log
done
A la fin du script, plusieurs fichiers sont créés dans /home/oracle/export/daily
apexdevWorkspace.log qui contient la liste des workspaces (autre qu'INTERNAL)
des fichiers wXXXX.sql : Scripts d'export/import du workspace XXXX (workspace+users)
apexAppli.log : Contient la liste des applications exportées par Workspace
des fichiers fxxx.sql : Scripts d'export/import de l'application xxx (que l'application, sans les fichiers statics et images)
des fichiers files_XXXX.sql : Scripts d'export/import des fichiers et images du workspace XXXX

ll ne reste plus qu'à les zipper pour avoir une sauvegarde.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
zip -m -j Apex_${BASE}_${JOUR}.zip *.sql ${BASE}Workspace.log ${BASE}Appli.log