OracleAPEXScrip/ng–
dieKommandozeileistDeinFreund
DietmarAust
Opal-Consul/ng,Köln
www.opal-consul/ng.de
DietmarAust
► Dipl.-Inform.DietmarAust,FreelanceConsultant
▪ Master'sDegreeinComputerScience(MSCS)
► BuildingOraclebasedWebApplica/onssince1997
▪ Portal,Forms,Reports,OWAToolkit,nowAPEX!
► 1997-2000:ConsultantatOracleGermany
► Since09/2000:FreelanceConsultant,Since2006–APEX
only!
► Blog:h[p://daust.blogspot.com/
► RegularpresenteratOracleconferences(ODTUG,DOAG,
OOW)
► AuthoroftheJasperReportsIntegra/ontoolkit
▪ h[p://www.opal-consul/ng.de/tools
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 2
DietmarAust
► 2015DatabaseDeveloperoftheyearintheORDScategory
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 3
Agenda
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 4
Agenda
► ExporteundBackups
▪ AnatomiedesExportFiles
▪ APEXExport,APEXExportSpli[er
► Deployment
▪
▪
▪
▪
APEX_APPLICATION_INSTALL
APEX_INSTANCE_ADMIN
BUILD_OPTIONS
APEX_LANG
► sqlcl
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 5
WarumScrip/ng?
Wozuautoma/sieren?
Qualität
•
•
ManuelleEingriffe=>an
allesgedacht?
Zeitdruck=>lieberruhig
schlafen
Geschwindigkeit
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 6
WarumScrip/ng?
► Grundprinzipien
▪ 80/20
▪ KISS
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 7
ExporteundBackups
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 8
ExporteundBackups
AnatomieeinesExportFiles
► ReinesSQLTextFile,kodiertinUTF-8
► DieBestandteilesindunterteiltdurchKommentare
► selbstBLOBSwerdenhex-codiert
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 9
ExporteundBackups
AnatomieeinesExportFiles
► AllesgeschiehtinnerhalbeinerDatenbank-Transak/on
▪ Zuerstlöschen,dannneuinstallieren
► WenneinSQLFehleraumri[,wirdautoma/schzurückgerollt
► APEXistmetadatengetrieben,daherhatjedes“Objekt”inAPEX(template,
bu[on,region,etc.)eineeigeneID
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 10
ExporteundBackups
AnatomieeinesExportFiles
► UmKonflikteimMetadatenRepositorydurchImport/Exportzuvermeiden,
wurdenWertebereichedefiniert,diedurchOFFSETsgekennzeichnetsind.
► EinOffsetwirdabgeleitetausderApplika/ons-ID
► DieApplika/ons-IDisteindeu/ginnerhalbderAPEX-Instanz
► DerApplika/ons-ALIASmusseindeu/gseininnerhalbdesWorkspaces
(idealerweiseinnerhalbdergesamtenInstanz,kanntechnischaufgrund
MandantenfähigkeitjedochnurinnerhalbeinesWorkspacesgeprümwerden.)
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 11
ExporteundBackups
ExportausdemApplica/onBuilder
► WorkspaceExporthatzweiOp/onen(abAPEX5.0)
► Minimal:
▪ Workspace-Defini/on
▪ Gruppen,Benutzer
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 12
ExporteundBackups
ExportausdemApplica/onBuilder
► TheFULLworkspaceexportnowcontainsEVERYTHING(withtheexcep/onof
applica/ons,websheetsandworkspacesta/cfiles)
▪
▪
▪
▪
▪
▪
--WORKSPACE
--GROUPS
--USERS
--Applica/onBuilderPreferences
--ClickCountLogs
--csvdataloading
► Why?UsedfortheOracleCloudto
moveworkspacesdoadifferent
instancetransparenttotheuser.
▪
▪
▪
▪
▪
▪
▪
▪
▪
--mail
--maillog
--appmodels
--passwordhistory
--preferences
--querybuilder
--sqlscripts
--sqlworkshophistory
Reswulservicedefini/ons,...
► Exportoftheworkspacesta/cfilesusingAPEXExportcommandlineu/lityin
theapex/u/li/esdirectory(seetheReadme.txtfilethere):
javaoracle.apex.APEXExport-dblocalhost:1521:xe-usertest
-password<pwdTest>-workspaceid2614526486790575-expFiles
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 13
ExporteundBackups
ExportausdemApplica/onBuilder
► Applika/ons-Export
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 14
ExporteundBackups
ExportausdemApplica/onBuilder
► Applika/ons-Export
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 15
ExporteundBackups
APEXExport
APEXExportClass–dieKommandozeilen-Variante
► EnthaltenimAPEX–Download:
► VoraussetzungfürdieNutzung
▪ JDK1.5
▪ OracleJDBCBibliothekimClasspath,mind.ojdbc5.jar
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 16
ExporteundBackups
APEXExport
► TypischeUseCases
► Backup
▪ dergesamtenInstanz
▪ einesWorkspaces
▪ einerodermehrererApplika/onen
► Applika/onenpropagieren
▪ Applika/onenexpor/eren,sodasssieaufdenanderenSystemenimpor/ert
werdenkönnen
Demo
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 17
ExporteundBackups
► Wirkönnenallesmanuellmachen…oder?
▪ h[p://iychaicham.com/wiki/
Oracle_APEX_applica/on_and_workspace_backup_script
▪ h[p://sve.to/2012/03/12/automa/cally-backup-oracle-apex-applica/ons-tosubversion/
► OraOpenSource/APEXBackup
▪ h[p://www.talkapex.com/2015/04/apex-backup-script.html
▪ h[ps://github.com/OraOpenSource/apexbackup
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 18
ExporteundBackups
APEXSpli[er
APEXSpli[erClass
► EnthaltenimAPEX–Download:
► VoraussetzungfürdieNutzung
▪ JDK1.5
▪ OracleJDBCBibliothekimClasspath,mind.ojdbc5.jar
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 19
ExporteundBackups
APEXSpli[er
► ExporthierarchischmitUnterverzeichnissenoderFLATmöglich
► ZusammenmitVersionsmanagementkannmandirektdieUnterschiede
erkennen.
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 20
Deployment
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 21
Deployment
Sosollteessein…
APEX Development
APEX Test
Environment
APEX Production
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 22
Deployment
...sosiehtesmeistensaus...
APEX Development /
Test and Integration
Environment
APEX Production
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 23
Deployment
...undsoleiderauchnichtselten...
SchemaA
APEXDevelopment/
TestandIntegra7on
Environment
SchemaB
APEXProduc7on
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 24
Deployment
VorbereitungenfürdeneinfachstenFall
► Workspacesüberalliden/schanlegen=>dieselbeWorkspaceID
▪ Workspacesüberalliden/schanlegen(workspace-id),dannmüssendieIDsnicht
angepasstwerden.
▪ DuplikatederInstanzenmachen
► Vorteile
▪ SQLSkriptekönnenunverändertaufallenUmgebungenlaufen
− PARSING_SCHEMA
− Applica/onID
− WorkspaceID
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 25
Deployment
WiekönnensolcheSkripte
jetztaussehen?
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 26
Deployment
BeispielInstalla/ons-Skript
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 27
Deployment
APEX_APPLICATION_INSTALLATION
Installa/ons-Varia/onenmitapex_applica/on_install
► DieBasisliefertdasExport–File,manchehardcodiertenEinstellungen
könnenbeiderInstalla/onüberschriebenwerden:
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 28
Deployment
APEX_APPLICATION_INSTALLATION
Installa/on:andererWorkspacemitneuerApplika/ons-ID
DECLARE
l_workspace_idNUMBER;
BEGIN
l_workspace_id:=APEX_UTIL.FIND_SECURITY_GROUP_ID('WORKSPACE_NAME');
apex_application_install.set_workspace_id(l_workspace_id);
apex_application_install.set_application_id(104);
apex_application_install.set_application_alias('F'
||apex_application_install.get_application_id);
apex_application_install.generate_offset;
END;
/
@f100.sql
► Immer,wenndieApplika/ons-IDgeändertwird,musseinneuerOffset
berechnetwerden.
► NeuenAliassetzen,wenndieApplika/onschoninderInstanzvorhandenist
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 29
Deployment
APEX_APPLICATION_INSTALLATION
Installa/onmitgenerierterApplika/ons-ID
BEGIN
apex_application_install.generate_application_id;
apex_application_install.generate_offset;
END;
/
@f100.sql
► Immer,wenndieApplika/ons-IDgeändertwird,musseinneuerOffset
berechnetwerden.
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 30
Deployment
APEX_APPLICATION_INSTALLATION
Installa/onmitneuemParsingSchema
BEGIN
apex_application_install.set_schema('SCHEMA_NEU');
END;
/
@f100.sql
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 31
Deployment
APEX_INSTANCE_ADMIN
PackageAPEX_INSTANCE_ADMIN
► Funk/onen,umFunk/onalitätendesWorkspaceINTERNALabzubildenaufder
Kommandozeile
► InsbesonderenotwendigfürdieAPEXRUNTIMEONLYUmgebung,dortgibtes
keinGUI
► Voraussetzungen?
GRANTAPEX_ADMINISTRATOR_ROLEto<OracleSchema>;
► Konfigura/onsparametersetzenundlesen
► Workspaces/Userverwalten
► IR(gespeicherteBerichteundSubscrip/onsverwalten)
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 32
Deployment
APEX_INSTANCE_ADMIN
► WorkspaceerstellenperSkript
BEGIN
APEX_INSTANCE_ADMIN.ADD_WORKSPACE(
p_workspace_id=>8675309,
p_workspace=>'MY_WORKSPACE',
p_primary_schema=>'SCOTT',
p_additional_schemas=>'HR:OE');
END;
► Workspace–SchemaMappinghinzufügen
BEGIN
APEX_INSTANCE_ADMIN.ADD_SCHEMA('MY_WORKSPACE','HR');
END
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 33
Deployment
APEX_INSTANCE_ADMIN
► LesenundSetzenderInstanz-Parameter
► AlleInstanz-Parameterausgeben:
SkriptimVerzeichnis
APEX-Install/apex/u/li/es
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 34
Deployment
BuildOp/ons
BuildOp/ons
► ErlaubendieAk/vierung/Deak/vierungvonApplika/onsbestandteilen
► BoolescherSchalter:AnoderAUS(IncludeoderExclude)
► KannaufnahezujedesAPEX“Objekt”angewendetwerden:Page,Tab,
Listenelement,LOV,Bu[on,Prozess,DynamicAc/on,…
► DamitkannmanFeatureskonfigurieren,diemaneventuellnichtausliefern
möchte.
▪ DabeiwirdderCodejedochimmervollständigausgeliefert,nurnicht“ak/viert”.
▪ DerSchalterwirdnurzurLaufzeitberücksich/gt
► Mankannauchmitpl/sqldagegenprogrammieren
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
Demo
26.04.2016
Page 35
Deployment
BuildOp/ons
► BuildOp/onak/vieren/deak/vieren
► DamitkannmanFeaturesbeiderInstalla/onselek/vak/vieren
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 36
Deployment
APEX_LANGabVersion4.2.3
► apex_lang.create_language_mapping
/update/delete
► apex_lang.seed_application
► apex_lang.update_translated_string
► apex_lang.publish_application
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 37
Deployment
APEX_LANG
► Durchpublish_applica/onwirdScha[en-Applika/onerstellt
► BeimExportkommenüblicherweisedieÜbersetzungenfüralleSprachenmit,
eswerdenjedochnochnichtautoma/schdieScha[en-Applika/onenerstellt
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 38
Deployment
APEX_LANG
► Applika/oninderZielsprachepublizieren
BEGIN
APEX_UTIL.set_security_group_id(
APEX_UTIL.find_security_group_id('OPAL'));
apex_lang.publish_application(p_application_id=>109,
p_language=>'en');
END;
/
► TexteohneXLIFF–Prozessdirektanpassen
▪ apex_lang.seed_transla/ons
▪ apex_lang.update_translated_stringfüralleTexte,diesichgeänderthaben
▪ apex_lang.publish_applica/on
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 39
SQLcl
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 40
CommandLine–SQLcl
SQLcl-EineJavabasierteAlterna/ve/Ersatz
zuSQL*Plus
► EntwickeltvomSQLDeveloperTeam=>
vieleFunk/onalitätenverfügbar
► DownloadaufderSeitedesSQL
Developers
► Installa/onalsZipFile,keineInstalla/on
oderSetupnotwendig
▪ 11MB
▪ DurchJavanureineVersionfür
Windows,LinuxundOSX
▪ Benö/gtJava8Run/meUmgebung,
jedochkeinJDK
▪ KeinezusätzlicheLizenznö/g
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 41
CommandLine–SQLcl
► AktuellnochEarlyAdopter(Version4.2.0.15.121.1046,4.Mai.2015)
► GeplantesReleasezusammenmitOracleDatabase12cR2
► VerbindungzurOracleDatenbankherstellen:
▪ EZConnect:
▪ WennORACLE_HOMEgesetzt,dannauch
− TNS,
− ThickOCIund
− LDAPVerbindungenmöglich
► Hilfeanzeigenmit
▪ help
▪ help<Kommando>
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 42
CommandLine–SQLcl
DerEditor
► BearbeitenvonStatementsimBuffer=>SEHRcoolJ
▪ ctrl-w,ctrl-snavigiertanAnfang/EndedesBuffers
▪ Cursorhoch/runterwechseltZeilen
► TAB-Autocomplete
▪ Kommandosvervollständigen,Tabellen,Views,etc.
► Integra/onmitdiversenJVMScriptsprachenaufBasisdesJSR-223
► Aliase=>ShortcutsfürSQLoderauchPL/SQL
► DDLextrahierenmitdbms_metadata
► APEXApplika/onenexpor/eren
► RESTApplika/onenexpor/eren
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 43
Sqlclscrip/ng
Demo
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 44
Sqlclscrip/ng
► GeyngStarted:
▪ h[ps://www.doag.org/formes/pubfiles/7535126/docs/Konferenz/2015/
vortraege/Oracle%20Datenbanken/2015-K-DB-Oded_RazI_ve_seen_the_Future,_It_Is_Glorious__SQLcl_replace_SQLPlusPraesenta/on.pdf
▪ h[ps://www.youtube.com/watch?v=HApdy-o525A
▪ h[ps://www.doag.org/formes/pubfiles/7535126/docs/Konferenz/2015/
vortraege/Oracle%20Datenbanken/2015-K-DB-Oded_RazI_ve_seen_the_Future,_It_Is_Glorious__SQLcl_replace_SQLPlusPraesenta/on.pdf
▪ h[p://www.oracle.com/technetwork/issue-archive/2015/15-sep/o55sqldev-2692807.html
► BlogvonKrisRice:h[p://krisrice.blogspot.de/search/label/sdsql
► Github–BeispieleausdemTeam
▪ h[ps://github.com/oracle/oracle-db-tools/tree/master/sqlcl/examples
▪ h[ps://github.com/oracle/oracle-db-tools/tree/master/sqlcl
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 45
Sqlclscrip/ng
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 46
Contact
DietmarAust
Opal-Consul/ng,Köln
www.opal-consul/ng.de
daust.blogspot.com
dietmar.aust@opal-consul/ng.de
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 47
ExporteundBackups
► BackupsauchmitderPackagedApplica/onApplica/onArchivemöglich.
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 48
ExporteundBackups
► BackupsauchmitderPackagedApplica/onApplica/onArchivemöglich.
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 49
ExporteundBackups
► EskönnenChangeSetserstelltwerden
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 50
ExporteundBackups
► Wirkönnendannallesselek/vzurückholen
Oracle APEX Scripting 101 - die Kommandozeile ist Dein Freund
26.04.2016
Page 51