Montag, 23. Dezember 2019

APEX ADMIN Passwort zurücksetzen

Dies ist mein erster Post mit dem neuen Thema Oracle APEX. Ich habe in meiner Oracle Datenbank in Docker die APEX Version auf 19.2 migriert und konnte mich danach nicht mehr bei APEX anmelden, da ich das Admin Passwort nicht mehr wusste. Der Vorgang funktioniert wohl auch, wenn der ADMIN User gelockt ist.


Aber ich habe mindestens einen Beitrag gefunden, wie man wieder ein Reset machen kann. Ob der Weg auch supported ist, ist mir dann aber nicht bekannt.

Was muss ich also genau tun? Auf jeden Fall ein paar Befehle mit einen SYS-User ausführen mit SQL und PL/SQL.



Nun das Passwort ändern:


Eine andere Möglichkeit ist es noch, als SYS-User das File @apxchpwd.sql
auszuführen.


Nun aber angenehme und erholsame Feiertage und einen guten Rutsch.


Viele Grüße
Holger

Freitag, 13. Dezember 2019

Oracle Forms 12c in der Cloud provisionieren

Lange ist mein letzter Blog Post her und kurz vor Weihnachten muss noch etwas Neues her dachte ich mir. Vor 1 Woche war ich bei Oracle in der Geschäftsstelle München zu Besuch für einen 2-tägigen Workshop Oracle Cloud Native. Da haben wir verschiedene Cloud Services kennen gelernt und in Hands On Labs für verschiedene Demos benutzt. Dabei gab es als Goodie auch einen 30 tägigen Oracle Cloud Demo Account mit einiges Credits oben drauf.

Darauf habe ich schon länger gewartet, weil ich doch Oracle Forms 12c in der Cloud mal ausprobieren wollte. In der Theorie lautet die Ansage: in 15 Minuten ist alles lauffähig. Ich kann getrost sagen, das ist wahr. Es hat zwar mehrere Versuche gebraucht, aber dann war der Erfolg da.

Wie man das in einem Basic Setup hin bekommt, möchte ich heute demonstrieren. Los geht es mit einem Oracle Cloud Marketplace Image für Forms, welches man hier bekommt.

Mittels Button "Get App" wird mal zur Auswahl einer Region weitergeleitet. In meinem Fall wird dies die Region Frankfurt.


Nach erfolgreichem "Sign In" lande ich in der Cloud Console und mache weitere Angaben zum Sizing, Netzwerk Konfiguration, Compartment und anderen Dingen.
Achtung: für das Image gilt: Bring Your Own License




Mit "Launch Instance" geht es in die Detail Konfiguration. Für den Connect zu der neuen Instanz brauchen wir einen Public SSH Key.





Mit einem Klick auf "Create" am Ende der Seite wird die Instanz nun erzeugt.


Nachdem die Instanz erstellt wurde, geht es mit der Konfiguration der Weblogic Domäne weiter. Dazu muss man sich mit der Instanz verbinden:

ssh -i ..\workshop_key_private.ssh opc@public_ip_der_instanz


Wichtig: bei den folgenden Passwörtern hat die Eingabe mit Sonderzeichen nicht funktioniert, sondern nur eine Kombination aus Zahlen und Buchstaben.


Danach wird die Forms Weblogic Domäne konfiguriert und erstellt, was bis zu 15 Minuten dauern kann. Reports ist nicht vorkonfiguriert. Dafür muss man dann die Weblogic Domäne erweitern und danach alles entsprechend konfigurieren.


Nach weniger als 10 Minuten in meinem Fall ist die Provisionierung fertig und als nächstes verbinde ich mich mit Putty zu der Instanz und starte dort den VNC-Server (MyOracleSupport Note 2456478.1).

Vom Client starte ich den VNC-Viewer und komme auf das Linux der Instanz.



Vom Client Browser kann ich nun die Forms Test-Seite aufrufen.

Vom VNC Desktop oder dem lokalen Client kann ich den FSAL aufrufen. Erstmal FSAL lokal herunterladen mit http://localhost:9001/forms/html/fsal.htm


Von der Konsole dann starten: java -jar frmsal.jar -url "http://localhost:9001/forms/frmservlet?config=standaloneapp" -t 10000 -showConfig true



Damit ist die Grundinstallation abgeschlossen und die Testseite von Forms läuft erfolgreich. Und das alles in knapp 15 Minuten.

Für Reports und die Konfiguration der eigenen Applikationen benötigt es natürlich noch weitere Zeit. Aber das bekommt man sicherlich auch noch hin. Besonders kompliziert war das Ganze nicht und bis auf die Eigenheiten bei den Passwörtern auch recht intuitiv.

Nachtrag:
Um sich mit WinSCP auf die Maschine zu verbinden, sei folgender Link sehr empfohlen:
http://sharabinth.blogspot.com/2017/10/configure-winscp-to-use-sftp-with.html

Das hat sofort funktioniert.

Viel Freude beim Ausprobieren wünscht
Holger

Freitag, 23. November 2018

DOAG 2018 Konferenz in Nürnberg - ein paar Erkenntnisse von mir

Schon ist die DOAG 2018 Konferenz in Nürnberg wieder vorbei - 3 Tage voller Trubel und geballten Informationen rund um den großen roten Oracle-Riesen in Germany. Im Vorfeld hatte ich schon die für mich interessanten Vorträge, Themen und mögliche Gesprächspartner herausgefiltert. Meine 3 Top-Themen waren: Oracle Forms, Weblogic Server und DevOps.

Man merkt immer mehr, wie das Thema DevOps endlich bei Oracle ankommt. Gibt es doch schon die Datenbank im Docker Container, den Weblogic Server ebenfalls. Oracle Forms kann darin laufen und auch der Weblogic Server ist für Kubernetes zertifiziert.

Wie die letzten Jahre schon üblich, fand am Dienstag Abend wieder das Forms Community Meeting statt. Da wurde der Product Manager Michael Ferrante wieder zu Themen rund um Forms und Reports befragt.

Quelle: von Auraplayer
Die Erkenntnisse davon, aus den Vorträgen und persönlichen Gesprächen mit dem Product Manager reihe ich nun mal in Kurzform auf. Der Rest ist auf den offiziellen Folien zu finden. Alles was im Folgenden kommt, ist noch nicht offiziell (vergleiche Safe Harbor Statement von Oracle) und muss so nicht unbedingt eintreten.

  • Es ist möglich, dass es ein Reports 19 Release geben wird
  • Forms 19 ist ein Patch Release (also eigentlich ein 12.2.1.4.0) und kommt im Kalenderjahr 2019
  • Der Forms Standalone Launcher (FSAL) bekommt einige Neuerungen und Verbesserungen, unter anderem den Single Sign-On Support
  • Forms 20 wird wohl auch ein Patch Release
  • Forms wird wohl noch weit über 2030 hinaus leben, vergleiche Lebenszyklus der Oracle E-Business Suite
  • ein signifikantes neues Feature ist der Support von Forms im Developer Cloud Service
  • Forms 19+ soll Java 11 LTS unterstützen
Quelle: Oracle 
Quelle: Oracle

Weitere interessante Themen auf der DOAG waren:

  • Revival von utPLSQL mit 2 tollen Vorträgen
  • DevOps Vorträge rund um verschiedene Oracle Komponenten
  • APEX Neuerungen in 18.1 und forward
  • verschiedene Cloud Themen
  • und und und
Am Ende gingen die 3 Tage in Nürnberg wieder viel zu schnell vorbei. Das ist ja irgendwie immer so. Neben viel Austausch gab es einen Haufen an Informationen zu aktuellen Themen und Trends. Was nicht wirklich gut für Oracle ankam, waren die Ergebnisse einer Support Umfrage der DOAG zur Zufriedenheit mit dem Oracle-Support (siehe Link ). Tendenz: weiter sinkende Zufriedenheit, das sollte der Hersteller wirklich ernst nehmen.
Nun bleibt mir nur noch zu sagen: bis zur #DOAG2019 und früher.

Viele Grüße
Holger

Samstag, 20. Oktober 2018

Forms 12c und Gerüchte zur Cloud

Noch knapp 1 Monat ist es bis zur DOAG Hauptkonferenz in Nürnberg. Erwartet werden wieder mehr als 2000 Besucher bei der Veranstaltung.

Vorher ist noch kommende Woche die noch größere OOW in den USA. Dort und in Nürnberg gibt es wieder Vorträge zu Oracle Forms 12. Nach einigen Gerüchten kann man nichts Spektakuläres Neues erwarten, aber einige Gerüchte wurden vorher gestreut.

Es soll möglich sein, Forms mit dem Oracle Developer Cloud Service (DEVCS) in der Oracle Cloud laufen zu lassen. Und das vielleicht auch endlich mit dem nötigen Support vom Hersteller selbst. Dafür gibt es dieses Jahr auch nicht den üblichen jährlichen Forms 12 Patch und man konnte dafür das erste Mal etwas von Forms 19 hören.

Forms 19  mit Window Tile: ... Oracle Cloud @Quelle Michael Ferrante
Es bleibt spannend und ich hoffe, wir sehen uns in Nürnberg.

Nachtrag 26.10.2018 nach der OOW:
Die Katze ist aus dem Sack, die Folien von Michael sind online: Folgerung eine Kombination aus FADS (Oracle Forms Application Deployment Services) und dem DCS od. DevCS (Developer Cloud Service). Das FADS dafür vorgesehen war kam schon direkt bei der Vorstellung als Neuerung hervor.

Viele Grüße
Holger

Freitag, 11. Mai 2018

Forms 12c, Reports und Weblogic in Docker - diesmal mit Windows 10

Heute möchte ich meine Reihe mit der Oracle Middleware und Docker fortsetzen. Doch diesmal wähle ich Windows 10 Professional als Host aus, denn dafür ist Docker mittlerweile auch verfügbar.

Wichtig ist, nach der Installation von Docker im Menü auf die Linux Container zu wechseln, statt mit den Windows Containern zu arbeiten.


Wenn das kleine Walfisch-Icon (Docker) dann weiß ist und sich nicht mehr bewegt, ist Docker erfolgreich gestartet.





Zusätzlich kann man auch in der DOS-Box fragen, ob der Befehl docker nun verfügbar ist.


Am Anfang des Probierens habe ich mich gefragt, wie komme ich denn nun beim Weblogic Docker Images gebaut, welches normalerweise mit

sh buildDockerImage.sh -v 12.2.1.3 gestartet wird. Klassische Linux Befehle in einer Windows DOS-Box wie soll das gehen? Im Endeffekt gar nicht, denn ich habe die Docker Images von Linux exportiert und dann im Anschluß in Windows importiert. Das geht so:

## auf Linux:
docker save  -o /mnt/hgfs/D/formsreports12.2.1.3.tar localhost/oracle/myformsreports:12.2.1.3

## auf Windows:
docker load --input D:/formsreports12.2.1.3.tar
und ein docker images zeigt sie dann auch erfolgreich an.


Die nächste Transformation fand in den Environment-Variablen statt:
## auf Linux:
  export DC_ORCL_PORT=1521
  export DC_ORCL_OEM_PORT=5500
  export DC_ORCL_SID=frdb
  export DC_ORCL_PDB=frpdb
  export DC_ORCL_SYSPWD=Oracle12c
  export DC_ORCL_HOST=${DC_HOSTNAME}

## auf Windows:
 SET DC_DESIRED_HOSTNAME=myformsserver
 SET DC_ORCL_PORT=1521
 SET DC_ORCL_OEM_PORT=5500
 SET DC_ORCL_APEX_PORT=8080
 SET DC_ORCL_SID=ORCLCDB
 SET DC_ORCL_PDB=ORCLPDB1
 SET DC_ORCL_SYSPWD=oracle
 SET DC_ORCL_HOST=%DC_DESIRED_HOSTNAME%

zusätzlich habe ich mir einen festen Hostnamen ausgedacht, der auch in den Properties konfiguriert ist. In dem Zusammenhang sei gesagt, dass das Mounten von Volumes auf Windows mit dem späteren Docker Container nicht funktioniert hat, was sicherlich an irgendwelchen Rechten liegt. So werden also im Gegensatz zum Linux Host die späteren Domain-Informationen alle innerhalb des Docker Containers gespeichert. Dies ist natürlich vom Zugriff her nicht so komfortabel wie auf dem Linux Host, wo er Volume-Mount keine Probleme gemacht hat.

Im File für docker-compose habe ich auch einige Anpassungen vorgenommen, dort wird z.B. auch direkt der Hostname des neuen Containers auf den gewählten aus dem Properties-File gesetzt und ich habe noch einige weitere Environment-Variablen erzeugt, die später den Umgang mit der Domäne etwas vereinfachen.

Hier der Inhalt meines docker-compose Files:
version: "3.0"

services:
  #
  #  The Oracle DB Definition
  #
  frdb:
    image: oracle/database:12.1.0.2-ee
    network_mode: "bridge"
    ports:
      - "${DC_ORCL_PORT}:1521"
      - "${DC_ORCL_OEM_PORT}:5500"
      - "${DC_ORCL_APEX_PORT}:8080"
    environment:
      - ORACLE_SID=${DC_ORCL_SID}
      - ORACLE_PDB=${DC_ORCL_PDB}
      - ORACLE_PWD=${DC_ORCL_SYSPWD}
    container_name: frdb

  #
  #   The Forms & Reports Servers
  #   
  myfrfmw:
    image: ${DC_REGISTRY_FR}/oracle/${DC_FR_PREFIX}formsreports:${DC_FR_VERSION}
    hostname: ${DC_DESIRED_HOSTNAME}
    network_mode: "bridge"
    container_name: myfrfmw
    command: /bin/bash -c "sleep 5s; /opt/oracle/dockertools/crDomain.sh"
    ports:
      - "${DC_ADMINPORT}:${DC_ADMINPORT}"
      - "${DC_FORMS12C_MS_PORT}:${DC_FORMS12C_MS_PORT}"
      - "${DC_REPORTS12C_MS_PORT}:${DC_REPORTS12C_MS_PORT}"
      - "${DC_OHS_LISTENPORT}:${DC_OHS_LISTENPORT}"
      - "${DC_NM_PORT}:${DC_NM_PORT}"
    environment:
      - SCRIPT_HOME=${DC_SCRIPT_HOME}
      - INT_ORACLE_HOME=${DC_INT_ORACLE_HOME}
      - WL_HOME=${DC_WL_HOME}
      - WLST_HOME=${DC_WLST_HOME}
      - MW=${DC_MW}
      - DOMAIN_BASE=${DC_DOMAIN_BASE}
      - APPLICATION_BASE=${DC_APPLICATION_BASE}
      - APP_VZ=${DC_APP_VZ}
      - FORMS12C=${DC_FORMS12C}
      - FADS12C=${DC_FADS12C}
      - REPORTS12C=${DC_REPORTS12C}
      - WEBTIER12C=${DC_WEBTIER12C}
      - OHS_COMPONENTNAME=${DC_OHS_COMPONENTNAME}
      - OHS_LISTENPORT=${DC_OHS_LISTENPORT}
      - OHS_SSLPORT=${DC_OHS_SSLPORT}
      - TEMPLATE=${DC_TEMPLATE}
      - DOMAIN_NAME=${DC_DOMAIN_NAME}
      - AS_NAME=${DC_AS_NAME}
      - ADM_USER=${DC_ADM_USER}
      - ADM_PWD=${DC_ADM_PWD}
      - ADMINPORT=${DC_ADMINPORT}
      - ADMINPORTSSL=${DC_ADMINPORTSSL}
      - AS_HOST=${DC_AS_HOST}
      - FORMS_MS_NAME=${DC_FORMS_MS_NAME}
      - FORMS12C_MS_PORT=${DC_FORMS12C_MS_PORT}
      - REPORTS_MS_NAME=${DC_REPORTS_MS_NAME}
      - REPORTS12C_MS_PORT=${DC_REPORTS12C_MS_PORT}
      - REPORTS_IN_FORMS=${DC_REPORTS_IN_FORMS}
      - REP_SERVER=${DC_REP_SERVER}
      - REP_SERVER_NAME=${DC_REP_SERVER_NAME}
      - REP_TOOLS_NAME=${DC_REP_TOOLS_NAME}     
      - NM_LISTENADDRESS=${DC_NM_LISTENADDRESS}
      - NM_TYPE=${DC_NM_TYPE}
      - NM_PORT=${DC_NM_PORT}
      - NM_USERNAME=${DC_NM_USERNAME}
      - NM_PWD=${DC_NM_PWD}
      - DBUSER=${DC_DBUSER}
      - DBPWD=${DC_DBPWD}
      - DBROLE=${DC_DBROLE}
      - COMPONENTPWD=${DC_COMPONENTPWD}
      - SCHEMA_PREFIX=${DC_SCHEMA_PREFIX}
      - DB_HOST=${DC_DB_HOST}
      - DB_PORT=${DC_DB_PORT}
      - DB_SERVICE=${DC_DB_SERVICE}
      - DB_OMF=${DC_DB_OMF}
      - DB_USER_PW=${DC_DB_USER_PW}
      - PWDFILE=${DC_PWDFILE}
      - TNS_ADMIN=${DC_DOMAIN_BASE}/${DC_DOMAIN_NAME}/config/fmwconfig
      - FORMS_INSTANCE=${DC_DOMAIN_BASE}/${DC_DOMAIN_NAME}/config/fmwconfig/components/FORMS/instances/forms1/bin  
      - FORMS_WEBCFG=${DC_DOMAIN_BASE}/${DC_DOMAIN_NAME}/config/fmwconfig/servers/WLS_FORMS/applications/formsapp_12.2.1/config
      - DOMAIN_DIR=${DC_DOMAIN_BASE}/${DC_DOMAIN_NAME}
      - DOMAIN_DIR_BIN=${DC_DOMAIN_BASE}/${DC_DOMAIN_NAME}/bin  
      - NLS_LANG=AMERICAN_AMERICA.AL32UTF8      
      - FORMS_WEBUTIL=${DC_DOMAIN_BASE}/${DC_DOMAIN_NAME}/config/fmwconfig/components/FORMS/instances/forms1/server   

Gestartet wird zunächst wieder einmal die Datenbank-Instanz, die als Repository dienen soll und im Anschluß dann der Weblogic-Server, der zunächst automatisch die Forms/Reports-Domäne erzeugt.

docker-compose -f myfrfmw-docker-compose.yml up -d myfrfmw
docker logs myfrfmw -f

Alles in allem nicht wirklich schwer das Prozedere und mit etwas Transfer-Arbeit verbunden. Natürlich gut und hilfreich, dass Docker den Ex- und Import von Images anbietet; auch plattformübergreifend.

Bis bald
Holger

Dienstag, 1. Mai 2018

Form Builder aus Docker auf Windows Host öffnen

Im letzten Post habe ich beschrieben, wie man Forms und Reports per Docker auf einem Linux Host installiert. Dies habe ich mittlerweile auch auf einem Windows Host gemacht, auf dem dann auch Docker installiert ist. Docker läuft momentan nur auf Windows-basierten System mit Windows Server und Windows 10.

Möchte man nun den Form Builder aus diesem Docker Container zum Laufen bringen, ist das nicht ganz so einfach und wird mit einer Fehlermeldung quittiert.


Es ist einfach noch kein X-Window-Server eingerichtet. Dafür habe ich auf dem Windows Host dann den XMing Server installiert, der dafür bestens geeignet ist.

Ebenfalls ist es nötig, dass der X-Server auch benutzt werden darf, sprich das sich Clients auch connecten können. Daher hat mein Windows auf noch eine Cywgin Installation bekommen.

In Cygwin setze ich die DISPLAY Variable wie folgt und gestatte per Xhost den Connect.


Ist dies erledigt, kann es im Docker Container weitergehen. Dort setze ich auch die DISPLAY Variable entsprechend und dann geht der Start des Form Builder auch schon.


Recht einfach, wenn man weiß wie das alles zusammenspielen muß. Anstelle das xhost Befehls kann man das sicher noch optimieren.

Als nächstes folgt hoffentlich bald die Beschreibung der Docker Einrichtung mit Forms/Reports auf Windows.

Bis bald
Holger

Dienstag, 13. Februar 2018

verlängerter Lifetime Support für Forms 12c nun bis 2022

Gestern Abend kam per Twitter eine hoffnungsvolle Botschaft von Oracle in Form von Product Manager Michael Ferrante:

verlängerter Lifetime Support für die Fusion Middleware 12.2, insbesondere Forms 12c nun bis 2022 statt 2020. Extended Support sogar bis 2025, auch gültig für Reports 12c.


Quelle: Oracle

Also noch etwas mehr Zeit um hoffentlich noch spannende und zukunftsträchtige Features zu implementieren.