Oracle APEX Scrip2ng – die Kommandozeile ist - Opal

Werbung
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
Herunterladen