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