Przygotowanie środowiska dla Oracle APEX

Oracle Application Express (Oracle APEX) to środowisko do budowania aplikacji webowych w formule "low-code" na bazie bazy Oracle (Express Edition czy wersji komercyjnej). Jest częścią pakietu i jest dostarczane bezkosztowo. Służy głownie do budowania aplikacji biznesowych - tam gdzie trzeba szybko stworzyć wygodny i bezpieczny interfejs do bazy danych. I taka jest właśnie strategia Oracle - dać klientowi powód by zakupił kiedyś bazę Oracle. Ale nawet darmowa wersja bazy, Express Edition, zapewnia odpowiednią przestrzeń i wydajność dla małych i średnich firm; obsługa 3 "podłączonych baz", 2 CPU dla procesów, 2GB pamięci RAM, 12GB na dane.

Instalacja bazy danych

Podstawą środowiska jest baza danych. Potrzebujemy Oracle Database Express Edition (Oracle Database XE) dla APEXa. Ze strony Oracle pobieramy plik zip dla właściwego systemu operacyjnego. W naszym przypadku Windows. Pobrany plik rozpakowujemy do katalogu na dysku. Wstrzymaj się na chwilę przed kliknięciem na setup.exe. Firma Oracle zawsze miała perfekcyjny mareting i produkty które nie były na tym samym poziomie (choćby instalator bazy Oracle). Zanim uruchomisz setup.exe i skończysz z komunikatem "Oracle Database installation copleted with errors", przeczytaj następnych kilka punktów i zastosuj się do nich:

  • Masz ustawione zmienne ORACLE_HOME lub TNS_ADMIN?  Sprawdz to wpisując w linii komend "set". Jeśli istnieją, musisz je tymczasowo usunąć. Jeśli poprzednia instalacja nie zakończyła się właściwie, rollback pozostawił też śmieci w PATH - usuń je.
  • Używasz Windows 10 Home Edition? Ten OS nie jest wspierany.
  • To samo z Server 2019
  • Włącz "Client for Microsoft Networks" i "File and Printer Sharing for Microsoft Networks" w ustawieniach karty sieciowej (domyślnie włączone).
  • Upewnij się że Netbios jest włączony w ustawieniach karty sieciowej.
  • Czasami problemem jest antywirus - wyłącz go.
  • Jeśli Twoje konto z uprawnieniami administratora jest z domeny, musisz być podłączony do sieci (!?)
  • Instalator najbardziej lubi lokalne konto administratora. Jeśli powyższe ustawienia konta nie zadziałały, stwórz lokalne konto z uprawnieniami administratora.

Powyższe wymagania spełnione? Uruchamiamy instaltor - setup.exe. Wybierz katalog, w następnym kroku wpisz hasło administaratora. Jeśli wszytko przebiegło pomyślnie, baza jest gotowa do użycia.

Oracle ma background Unix + Bazy danych + Java dlatego ich GUI odstają od obecnych rynkowych interfesjsów zarówno w aspekcie ergonomii jak i niezawodności (np. niekiedy trzeba kliknąc lub zapisać dwa razy by zmiany weszły w życie). Sam instalator Oracle Express Edition nie potrafi skutecznie wykonać rollback i po nieudanej instalacji zostają modyfikacje PATH które trzeba usunąć ręcznie (także katalog w którym miała być zainstalowana baza). Ewentualna deinstalacja Oracle pozostawi, uwaga, działające serwisy. Trzeba je ręcznie usunąć. Sam produkt jest jednak stabilny wiec może warto się pomęczyć, by przejść przez proces instalacji.

Po udanej instalacji możesz zalogować się do Enterprise Manager'a bazy (nie jest to nam w tej chwili potrzebne - instalacja Apex polega na uruchomieniu szeregu skryptów z linii komend): https://localhost:5500/em. By to zrobić, potrzebujesz... zainstalować Flash w przeglądarce :-) Taką nowoczesną technologię wykorzystuje Oracle.

Jeśli mimo wszystko chcesz zalogować się do Enterprise Manager'a, mając zainstalowy Flash, zaloguj się kontem 'sys' i hasłem które zdefiniowałeś podczas instalacji (pole 'container' pozostaw puste). OK, baza gotowa - instalujemy APEX.

Instalacja Oracle APEX

Oracle APEX nie został zainstalowany automatycznie wraz z instalacja bazy danych XE. Musisz doinstalować ten komponent oddzielnie. Wejdź na stronę Oracle i pobież plik (tylko z obsługą jezyka angielskiego lub wielu języków). Rozpakuj plik - w wyniku tego powstanie katalog, np. "apex_19.3". Uruchom CMD i wejdź do tego katalogu a następnie niżej do podkatalogu 'apex'. Uruchom SQL*Plus i połącz się z bazą danych, jako SYS, określając rolę SYSDBA:

sqlplus /nolog

SQL*Plus: Release 18.0.0.0.0 - Production on Tue Dec 31 13:57:33 2019
Version 18.4.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.

SQL>

Następnie:

SQL> CONNECT SYS as SYSDBA
Enter password:

Jeśli napotkasz odpowiedż:

ERROR:
ORA-12560: TNS:protocol adapter error

Sprawdz czy listener i baza działa i możesz się połączyć. Sprawdzenie czy baza działa (XE to nazwa instancji bazy):

tnsping XE

Sprawdź czy listener funkcjonuje:

lsnrctl status

Ustawienia listener'a znajdziesz w pliku \dbhomeXE\network\admin\listener.ora. Ewentualne problemy z tymi ustawieniami wychodzą poza ten artykuł. W Internecie znajdziesz mnóstwo wpisów na ten temat. OK, załóżmy że nie miałeś problemów, połącz się z bazą danych:

apex>sqlplus /nolog

SQL*Plus: Release 18.0.0.0.0 - Production on Sun Jan 12 10:48:37 2020
Version 18.4.0.0.0

Copyright (c) 1982, 2018, Oracle.  All rights reserved.

SQL> CONNECT SYS as SYSDBA
Enter password:
Connected.
SQL>

Podłącz się do kontenera PDB. PDB to przenośna kolekcja schematów, obiektów schematów i obiektów nieschematowych (więcej informacji o tym serwisie). Domyślna nazwa to XEPDB1.

ALTER SESSION SET CONTAINER = XEPDB1;

Wybieramy instalację, pełną nie runtime, uruchamiając ją komendą:

@apexins.sql SYSAUX SYSAUX TEMP /i/

Jeśli wszystkie skrypty wykonają się pomyślnie, instalacja zakończy się komunikatem:

Thank you for installing Oracle Application Express 19.2.0.00.18

Oracle Application Express is installed in the APEX_190200 schema.

The structure of the link to the Application Express administration services is as follows:
http://host:port/pls/apex/apex_admin (Oracle HTTP Server with mod_plsql)
http://host:port/apex/apex_admin     (Oracle XML DB HTTP listener with the embedded PL/SQL gateway)
http://host:port/apex/apex_admin     (Oracle REST Data Services)

The structure of the link to the Application Express development interface is as follows:
http://host:port/pls/apex (Oracle HTTP Server with mod_plsql)
http://host:port/apex     (Oracle XML DB HTTP listener with the embedded PL/SQL gateway)
http://host:port/apex     (Oracle REST Data Services)

timing for: Phase 3 (Switch)
Elapsed: 00:00:09.84
timing for: Complete Installation
Elapsed: 00:07:23.37

PL/SQL procedure successfully completed.

OK, Apex jest zainstalowany. Następną czynnością jest utworzenie użytkownika APEX_LISTENER i użytkownika APEX_REST_PUBLIC_USER. Utworzymy ich uruchamiając skrypt (będąc w katalogu apex_19.3/apex):

SQL> @apex_rest_config.sql

Enter a password for the APEX_LISTENER user              []
Enter a password for the APEX_REST_PUBLIC_USER user              []

Alternatywnie możesz podać oba hasła jako parametry:

@apex_rest_config.sql ApexPassword1 ApexPassword2

Teraz musisz zdecydować, którego interfejsu (gateway) użyć, aby uzyskać dostęp do APEX. Rekomendacja Oracle to ORDS.

Konfiguracja usług danych Oracle REST Data Services (ORDS)

Jeśli chcesz korzystać z usług Oracle REST Data Services (ORDS) przed APEX, możesz postępować zgodnie z instrukcjami tutaj. Oracle REST Data Services (ORDS), dawniej znany jako APEX Listener, pozwala na wdrażanie aplikacji APEX bez użycia Oracle HTTP Server (OHS) i mod_plsql lub Embedded PL / SQL Gateway. ORDS w wersji 3.0 i nowszej zawiera także obsługę JSON API do współpracy z obsługą JSON w bazie danych 12c. ORDS można wdrożyć na WebLogic, Glassfish lub Tomcat. Instalujemy ORDS na Tomcat 9.

Pobierz Oracle REST Data Services i Oracle REST Data Services JDBC driver ze strony.

Sprawdź że użytkownik SYS  Check the SYS user and common public users are unlocked and you know their passwords. Remember to lock the SYS user when the installation is complete.

CONN / AS SYSDBA
ALTER USER SYS IDENTIFIED BY OraPassword1 ACCOUNT UNLOCK;
--Pamietaj by polaczyc sie jako SYSDBA jak wyzej przed wykonaniem komendy;

ALTER SESSION SET CONTAINER = xepdb1;
ALTER USER APEX_LISTENER IDENTIFIED BY OraPassword1 ACCOUNT UNLOCK;
ALTER USER APEX_PUBLIC_USER IDENTIFIED BY OraPassword1 ACCOUNT UNLOCK;
ALTER USER APEX_REST_PUBLIC_USER IDENTIFIED BY OraPassword1 ACCOUNT UNLOCK;

--  Nastepna liniia nie wykonan się jeśli nie instalowałeś ORDS wcześniej. Zignoruj błędy.
ALTER USER ORDS_PUBLIC_USER IDENTIFIED BY OraPassword1 ACCOUNT UNLOCK;

Instalacja Tomcat

Pobierz serwer Tomcat. Jeśli instalujesz na serwerze Windows, pobierz wersję "32-bit/64-bit Windows Service Installer (pgp, sha512)".

Uruchom instalator:

Pozostaw domyślne porty:

W następnym kroku wskaż lub pozostaw domyślną scieżkę do plików Java. Zainstaluj Tomcat do proponowanej przez program ścieżki.

Instalacja ORDS

Rozpakuj pobrane pliki ORDS do katalogu (zmień nazwę katalogu po rozpakowaniu):

c:\ords

Utwórz katalog dla pliku konfiguracyjnego:

c:\ords\conf

Edytuj odpowiednio plik "ords/params/ords_params.properties"który przychodzi razem z oprogramowaniem ORDS,  wstawiajac parametry właściwe dla Twojej instalacji. Przykładowy plik (pamiętaj by zmienić hasła na właściwe):

db.hostname=127.0.0.1
db.port=1521
db.servicename=xepdb1
#db.sid=
# Next 2 lines for CDB installations only.
#cdb.common.schema=false
#db.serviceNameSuffix=.your_db_domain
db.username=APEX_PUBLIC_USER
db.password=OraPassword1
migrate.apex.rest=false
plsql.gateway.add=true
rest.services.apex.add=true
rest.services.ords.add=true
schema.tablespace.default=SYSAUX
schema.tablespace.temp=TEMP
standalone.mode=false
# Next 3 lines for standalone mode only.
#standalone.use.https=true
#standalone.http.port=8080
#standalone.static.images=/home/oracle/apex/images
user.apex.listener.password=OraPassword1
user.apex.restpublic.password=OraPassword1
user.public.password=OraPassword1
user.tablespace.default=SYSAUX
user.tablespace.temp=TEMP
sys.user=SYS
sys.password=OraPassword1
# Enable REST Enabled SQL.
restEnabledSql.active=true
# Enable SQL Developer Web. Available from 19.4 onward. Requires REST Enabled SQL.
feature.sdw=true

Użyj pliku "ords.war" by wskazać katalog konfiguracyjny (komenda poniżej). Nazwa pliku "ords.war" skutkować będzie URLem zawierającym "/ords/". Jeśli chcesz inny URL, zmień nazwę pliku WAR odpowiednio. W tym przypadku pozostawimy oryginalną nazwę.


java -jar c:\ords\ords.war configdir c:\ords\conf
Jan 15, 2020 12:21:06 PM
INFO: Set config.dir to c:\ords\conf in: C:\ords\ords.war

Skonfiguruj ORDS używając następującej komendy. Jest to ekwiwalent komendy "install simple". Jeśli podałeś parametry właściwie w pliku konfiguracyjnym, program nie zapyta Cię o nic. Jeśli niektóre parametry są nieobecne albo niewłaściwe, będziesz poproszony o ich podanie.

java -jar c:\ords\ords.war

Log z wykonania skryptu:

Retrieving information.
Dec 17, 2017 8:50:59 AM
INFO: Updated configurations: defaults, apex, apex_pu, apex_al, apex_rt
Installing Oracle REST Data Services version 17.4.0.348.21.07
... Log file written to /u01/ords/logs/ords_install_core_2017-12-17_085059_00767.log
... Verified database prerequisites
... Created Oracle REST Data Services schema
... Created Oracle REST Data Services proxy user
... Granted privileges to Oracle REST Data Services
... Created Oracle REST Data Services database objects
... Log file written to /u01/ords/logs/ords_install_datamodel_2017-12-17_085224_00812.log
... Log file written to /u01/ords/logs/ords_install_apex_2017-12-17_085234_00725.log
Completed installation for Oracle REST Data Services version 17.4.0.348.21.07. Elapsed time: 00:01:40.123

Zablokuj ponownie użytkownika SYS:

ALTER USER SYS ACCOUNT LOCK;

Uruchomienie Tomcat

Skopiuj APEX images do katalogu "webapps" Tomcata. W tym celu utwórz katalog "i" dla tego celu: $CATALINA_HOME/webapps/i/

Skopiuj zawartość "apex_19.2_en\apex\images" do "$CATALINA_HOME/webapps/i/"

Skopiuj plik "ords.war" do katalogu "webapps" Tomcata.

ORDS powinien być dostępny pod adresem:

http://localhost:8080/ords/

Logowanie do Apex

Ostatnią czynnością jest utworzenie konta administratora Apex. Uruchamiamy sqlplus a nastepnie logujemy sie jako sys z rolą sysdba

sqlplus /nolog
SQL> CONNECT SYS as SYSDBA
Enter password: SYS_password

Zmieniamy kontener:

ALTER SESSION SET CONTAINER = XEPDB1;

Nastepnie wykonujemy skrypt (pamiętaj by hasło zawierało przynajmniej jeden znak specjalny... adres e-mail poniżej zmień na właściwy). Bedziesz musiał podać nazwę konta administratora (tutaj 's_admin')

 @apxchpwd.sql
...set_appun.sql
================================================================================
This script can be used to change the password of an Application Express
instance administrator. If the user does not yet exist, a user record will be
created.
================================================================================
Enter the administrator's username [ADMIN] s_admin
User "s_admin" does not yet exist and will be created.
Enter admin's email [admin] Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript.
Enter admin's password []
Created instance administrator ADMIN.

Przestrzeń do której logujesz się z nowo utworzonym kontem administratora to INTERNAL. Po zalogowaniu ujrzysz komunikat:

 Środowisko Apex gotowe do użycia - ciesz się programowaniem!