UWAGA !!!
Odświeżona wersja artykułu znajduje się TUTAJ.
Dziś opiszę sposób instalacji APEX-a oraz podniesienia jego wersji do najnowszej jaka obecnie istnieje. Najnowszą wersję należy szukać tutaj (instalka zajmuje około 100MB). Podczas pisania tego wpisu najnowszą wersją jest APEX 3.2 Zawarte przykłady opierają się na instalacji w środowisku Windows, jeżeli znajdą się punkty w których daną czynność należy wykonać w sposób inny na np linuxie to też to zaznaczę.
Sama instalacja Oracle Application Express jest tożsama z instalacją bazy Oracle 10g XE, czyli jeżeli instalujesz Oracle 10g XE to też APEX-a. Te dwa elementy są nierozłączne. Nie będę więc opisywał krok po kroku jak instaluje się Oracle XE ponieważ jest to na tyle banalne, że każdy średnio rozgarnięty użytkownik komputera będzie potrafił to sam wykonać. Mając na uwadze to co napisałem powyżej, łatwo dojść do wniosku, iż pierwotna wersja APEX-a 2.1, która jest dostarczana wraz z silnikiem Oracle XE jest bardzo przestarzała. Do tej pory Oracle wypuścił około pięć nowszych wersji. Czyli można powiedzieć że przepaść między wersją wbudowaną w XE a bieżącą jest ogromna.
Po pobraniu instalki rozpakowuję ja do C:\apex_3.2\apex. Sama instalka to głównie zbiór skryptów SQL oraz plików graficznych i odpowiadających za tematy graficzne.
Wchodzimy w linie poleceń windows i zamieniamy katalog roboczy na C:\apex_3.2\apex\owa, czyli:
C:\>cd apex_3.2\apex\owaPodłączamy sie teraz do bazy Oracle-a jako użytkownik sys as sysdba
C:\apex_3.2\apex\owa>sqlplus sys/hasło@xe as sysdba
Jeżeli wszystko zostało prawidłowo podane powinniśmy zobaczyć komunikat podobny jak niżej.
SQL*Plus: Release 10.2.0.1.0 - Production on îr Maj 20 15:17:59 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
SQL>
Teraz możemy zacząć uruchamiać skrypty. Pierwszym niezbędnym skryptem jest owainst.sql skrypt ten odpowiada za instalację najnowszej wersji PL/SQL Web Toolkit. Wersja wymagalna dla APEX 3.2 to 10.1.2.0.6. Jeżeli do tej pory nie instalowałeś innej wersji APEX-a niż wersja zawarta w Oracle XE to możesz być pewny że masz starszą wersję PL/SQL Web Toolkit i uruchomienie tego skryptu jest obligatoryjne. Raz zdarzyło mi się zapomnieć podnieść wersję PL/SQL Web Toolkit, problem jaki powstał to brak możliwości wykorzystywania cachowania elementów aplikacji (mimo iż włączałem cache-owanie to i tak nie działało - nie dostawałem żadnego błędu). Dla wnikliwych proponuję w pierwszej kolejności uruchomić następującą komendę w SQLPlusie:
SQL>select owa_util.get_version from dual;
Wynikiem zapytania będzie wersja PL/SQL Web Toolkit.
Jeżeli faktycznie wersja nie jest odpowiednia to uruchamiamy skrypt następująca komendą:
SQL>@owainst.sql
W okienku konsoli powinno przewinąć się kilka ekranów kodu i skrypt po około 1 min. powinien się zakończyć. Oczywiście teraz możemy ponownie sprawdzić wersję PL/SQL Web Toolkit zapytaniem które wcześniej przytoczyłem.
Następnym krokiem jest uruchomienie właściwej instalacji upgrade-u. W tym celu musimy ponownie zmienić katalog roboczy w systemie operacyjnym. Czyli wychodzimy z SQL/Plusa komendą exit i zmieniamy katalog na C:\apex_3.2\apex czyli z lini poleceń wychodzimy piętro wyżej:
C:\apex_3.2\apex\owa> cd ..
Następnie ponownie podłączamy się do SQL/Plusa na użytkownika SYS as sysdba. Po podłączeniu się do Oracle-a uruchamiamy główny skrypt apexins.sql z tym że musimy tym razem podać kilka dodatkowych parametrów. Pierwszy parametr to przestrzeń tabel w jakiej powinny być składowane obiekty bazodanowe (
tablespace_apex) , drugi parametr to przestrzeń tabel w której maja byc składane pliki (tablespace_files), trzeci parametr to przestrzeń tymczasowa która ma być wykorzystywana przez APEX (tablespace_temp), przestrzeń ta musi być typem przetrzeni tabel tymczasowych. Ostatnim elementem jest tzw. katalog wirtualny (images), w którym znajdować się będą pliki graficzne i odpowiadające za wygląd templatów. W oficjalna dokumentacji możemy znaleść następujący wzór:SQL>@apexins tablespace_apex tablespace_files tablespace_temp images
A jako wartości podstawione są następujące elementy:
SQL>@apexins SYSAUX SYSAUX TEMP /i/
Podany przykład jest złym przykładem a dlaczego już mówię. Chodzi o to, iż wykorzystując ORACLE XE mamy pewne ograniczenia m. in maksymalna suma wielkości plików danych to 4GB. Wkładając wszystkie obiekty do przestrzeni SYSAUX narażamy się na problemy które mogą przyjść z czasem a konkretnie z nowymi wersjami APEX-a. Chodzi o to, iż każda następna wersja APEX-a tworzy nowy schemat użytkownika, który zajmuje około 300 MB. Zatem w pewnym momencie możemy natknąć się na taki problem, ze przestrzeń SYSAUX urośnie nam do sporych rozmiarów. Rozwiązanie wydaje się proste: usunąć nieużywany stary schemat/schematy i po sprawie. No właśnie że nie, usunięcie schematu nie redukuje wielkości przestrzeni tabel (plików należących do tej przestrzeni). Żeby zredukować wielkość plików danych należących do danej przestrzeni należy użyć komendy
alter database datafile ....... resize..., chmmm i teraz większość Oracle-owców krzyknie - "Ograniczenia związane z pozycją wolnego miejsca w zmniejszanym pliku !!!" (zmniejszanie jest tylko możliwe jeżeli wolne miejsce znajduje się na końcu pliku w przeciwnym razie nie jest to możliwe). Sytuacja gdzie duży fragment pliku jest wolną przestrzenią i to znajdującą się na końcu to zapewniam rzadkość. Więc zaraz nasuwa się inny sposób usuńmy całkowicie tę przestrzeń i załóżmy ją na nowo z mniejszą wielkością. Niestety SYSAUX to przestrzeń systemowa, nie można ją usunąć :( . Czyli pat - zapchał nam się Oracle ze względu na ograniczenia 4 GB. Zostaje tylko w tedy przeinstalowanie całego XE.Dużo na ten temat się rozpisałem a to dlatego, że przeżyłem to na własnej skórze : ). Wracając do naszego przykładu proponuję więc użyć własnej przestrzeni tabel lub użyć jakąś domyślnie instalowaną np. USERS. Czyli poprawiając wcześniej cytowany skrypt należało by posłużyć się raczej następującymi argumentami:
SQL>@apexins USERS USERS TEMP /i/
Uwaga !!!
Jeżeli upgrade robiony jest na XE postawionym na Windowsie musisz poprawić oryginalny skrypt coreins.sql. Chodzi o to, iż użyta zmienna
@^PREFIX.core/ ma pałkę końcowa obróconą zgodnie z systemem linux. Więc żeby skrypt prawidłowo mógł znaleźć poszczególne podskrypty należy w całym pliku zamienić ją na @^PREFIX.core\.Teraz z całą odpowiedzialnością możemy uruchomić skrypt naciskając Enter. Na konsoli zaczną szybko przewijać się komunikaty pozytywne : )... można iść na małą kawę (około 15 min).
Jeżeli otrzymamy podobny ekran:

To znaczy, że główny element upgradu został wykonany prawidłowo. Teraz pozostało nam wykonanie podmiany plików graficznych, css i javascript. Jeżeli używałeś wcześniejszej wersji APEX-a i dodawałeś jakieś własne pliki do katalogu wirtualnego
/i to najlepiej jak wykonasz kopie zapasową dodawanych plików, w przeciwnym razie możesz je bezpowrotnie stracić. Podmiana plików i templatów jest bezwzględnie wymagana można ją wykonać na wiele sposobów np poprzez podłączenie się do wirtualnego katalogu poprzez WebDav, lub poprzez FTP lub poprzez uruchomienie skryptu. Ten ostatni sposób jest najlepszy (najszybszy i niezawodny).Nie polecam podmiany przez WebDav trwa to okropnie długo i lubią występować problemy.
Zatem aby podmienić pliki należy ponownie podłączyć się do Oracle-a poprzez SQL/Plus używając użytkownika sys as sysdba, a następnie uruchomic skrypt apxldimg.sql.
@apxldimg.sql C:\apex_3.2
Skrypt wykonuje się około 2 minut. Ostatni krok to ustawienie hasła dla Administratora workspace-ów, w tym celu uruchamiamy ostatni skrypt. Jako że poprzedni skrypt nie zamknął sesji SQL/Plus to możemy śmiało pościć poniższą komendę.
@apxxepwd.sql hasło
gdzie "hasło" jest hasłem dla użytkownika ADMIN.
Sprawdzamy naszą operacje upgrade-u poprzez wejscie do APEX-a w tym celu uruchamiamy przeglądarkę WWW i wpisujemy adres: http://localhost:8080/apex Wprowadzamy nazwę workspace-u, użytkownika i hasło. Jeżeli do tej pory nie miałeś żadnego workspace-a to postępuj następująco.
Wejdź na stronę http://localhost:8080/apex/f?p=4550:10 zaloguj się jako użytkownik ADMIN z hasłem jakie podałeś przy ostatnim skrypcie. W menu Manage Workspaces załóż nowy workspace (nie będą tutaj szczegółowo opisywał kroków wszystko jest w oficjalnej dokumentacji lub można zrobić to na czuja). Po wykonaniu wszystkich kroków ponownie wróć na stronę http://localhost:8080/apex i wprowadź wszystkie informacje które użyłeś przy zakładaniu workspace-a. Po zalogowaniu powinieneś zobaczyć w prawym dolnym rogu przeglądarki następujący numer wersji:

Mając najnowszą wersję Oracle Application Express możesz teraz zacząć zagłębiać się w tajniki budowania aplikacji webowych.
No nie wiem. na etapie zamiany katalogu roboczego mam zonk'a że string not found. :-(
OdpowiedzUsuńWitam
OdpowiedzUsuńJeżeli mówisz o tej komendzie:
cd ........
to oznacza tyle że odwołujesz się do lokalizacji/katalogów które nie istnieją. Więc jeżeli po cd masz jakąś ścieżkę np c:\apex_3.2\apex\owa to te wszystkie katalogi muszą istnieć. Ewentualnie przy wprowadzaniu ścieżki robisz jakąś literówkę.
witam,
OdpowiedzUsuńpo wykonaniu upgrade (czyli wszystkich czynnosci tu opisanych)nie wyswiatla mi sie strona http://localhost:8080/apex/f?p=4550:10
już jest ok ;-)
OdpowiedzUsuńTak nawiasem pisząc dobrze że taka strona istnieje ;-)
Dopiero zaczynam swoją przygodę z apex-em i milo korzystać z doświadczenia innych ;-)
Pozdrawiam
Fajnie że się udało. Co do strony ..../f?p=4550:10 to można też wejść poprzez standardowy adres czyli http://localhost:8080/apex/ i wpisać w workspace->INTERNAL, użytkownik->ADMIN no i hasło takie jak w skrypcie do ustawiania hasła.
OdpowiedzUsuńWitam,
OdpowiedzUsuńmam tekie pytanko ...
jak podłączyć się przez apex-a do już istniejących tabel w bazie. Jedyno co moge to do tabel DEMO. przez zmiane tablespace ? Będe wdzięczny za pomoc
Wystarczy wejść do cześci administracyjnej (mój wcześniejszy wpis w komentarzach) a następnie stworzyć nowy workspace z opcją o ile się nie mylę w drugim kroku Reuse existing schema -> YES. Następnie wpisać lub wybrać z listy pop-up schemat z interesującymi Ciebie tabelami. Jak juz to zrobisz to logujesz sie do APEX-a wpisując nowy workspace i dane do logowania a następnie wchodzisz do application builder i działasz na własnych tabelach : )
OdpowiedzUsuńdziękuje za pomoc - wszystko działa ;)
OdpowiedzUsuńWitam,
OdpowiedzUsuńJak już tak wypytuje, to pozwolę sobie na jeszcze jedno pytanko ;-)
Chodzi o user-ów w apex-sie. Aby modyfikować tabele istniejącego już schematu powinni istnieć w bazie użytkownicy o odpowiednich uprawnieniach. Jak jest w przypadku utworzenia użytkownika w apex-sie (bez autoryzacji poprzez bazę)?. Po ich utworzeniu nie widać ich w tabelach systemowych Oracle (chyba że coś nie tak zrobiłem ). Na jakiej zasadzie może taki user modyfikować tabele w schemacie. W opisach jakie czytałem mowa była tylko o uprawnieniach do samej aplikacji.
Co do użytkowników to masz do wyboru kilka możliwości. Mogą to być użytkownicy w bazie i widoczni w słownikach oracle. Raczej nie polecam takiego rozwiązania (problemy będą w momencie jak będziesz chciał takimi uzytkownikami zarządzać z pozycji APEX-a i swojej aplikacji) lub logika twojej aplikacji bedzie polegała, że użytkownik sam może sobie założyć konto.
OdpowiedzUsuńDlatego lepiej stworzyć własny schemat autentyfikacji Shared Components>Authentication Schemes a następnie do tego schematu zbudować swoje schematy autoryzacji Shared Components>Authorization Schemes. Takie schematy możesz podłączać pod każdy items w aplikacji.
dzięki za szybką odpowiedź. ;-)
OdpowiedzUsuńnie wiem czy dobrze rozumiem …
Mam sobie schemat bazy X (tabele, widoki itp.) W apex-sie tworze nowa aplikacje i podpinam schemat X jako „już istniejący” Utworzeni użytkownicy (w apex) maja tylko prawo do oglądania zawartości tabel schematu X – nie mogę robić insertu ani modyfikować. Czy tak utworzony schemat autoryzacji pozwoli mi na modyfikacje tabel schematu X? Wszystko jest ok. kiedy tworze dopiero tabele poprzez apex wcześniej utworzonymi userami w tej aplikacji.
Piszesz "Utworzeni użytkownicy (w apex) ..." - co masz na myśli, chodzi o to czy tych użytkowników tworzysz w systemie zarządzania apexem (http://host:port/apex) czy tworzysz ich we własnych tabelach (twoja aplikacja posiada tabelę np USERS) ??
OdpowiedzUsuńchodzi mi o użytkowników utworzonych w systemie zarządzania apex. np użytkownik końcowy czy devoloper.
OdpowiedzUsuńTemat trochę zboczył z torów : ) Więc postanowiliśmy że skrobniemy szybki wpis do Bloga... (Piotrek już cos pisze) za parę chwil pewnie coś się pokaże.
OdpowiedzUsuńpodczas wykonania @apexins.
OdpowiedzUsuńbledy:
*
ERROR at line 1:
ORA-04063: package body “APEX_030200.WWV_FLOW_API” has errors
ORA-06508: PL/SQL: could not find program unit being called:
“APEX_030200.WWV_FLOW_API”
ORA-06512: at line 5
Czy to jest pierwsza próba instalacji czy jakaś kolejna ?? I generalnie więcej informacji potrzebujemy żeby coś pomóc.
OdpowiedzUsuńOracle 11g z APEXem , potem proba aktualizacji do 3.2 nieudana, usuanalem dotychczasowego APEXA zgodnie z dokumentacja....potem proba instalacji 3.2 i ten blad...
OdpowiedzUsuńpotem
SQL > @?/rdbms/admin/catalog.sql
SQL > @?/rdbms/admin/catproc.sql
SQL > @?/rdbms/admin/utlrp.sql
oraz
http://www.dba-oracle.com/t_compile_pl_sql_procedures.htm
niestety nic nie pomoglo
baza danych na ASMie
OdpowiedzUsuńPodeślij proszę log z instalacji (tworzy się automatycznie) na maila: biuro /*to_usuń*/ @dbe.pl. Po za tym na jakim systemie to instalujesz, czy APEX_030200.WWV_FLOW_API w ogóle się tworzy, jeżeli tak to czy jest do niego synonim publiczny, jeżeli jest rozkompilowany to co zwraca podczas próby kompilacji.
OdpowiedzUsuńWitam,
OdpowiedzUsuńzainstalowalem wszystko zgodnie z opisem i teraz nie moge sie zalogowac, tak jakby w ogole przycisk login nie dzialal. Pierwszy raz w ogole wszystko instalowalem. Najpierw zainstalowalem Oracle 10g XE i sie zalogowalem i wszystko bylo ok, a pozniej zrobilem wszystko dokladnie tak jak w opisie i sie nie moge zalogowac. Pomoze ktos?
Witam
OdpowiedzUsuńMoże problem jest w tym, że nie masz stworzonego workspace ??
Podaj adres z jakiego korzystasz podczas logowania się.
Pozdrawiam
Piotr
http://localhost:8080/apex/f?p=4550:10
OdpowiedzUsuńnie mam stworzonego workspace'a, wlasnie chce sie zalogowac jako admin, zeby to stworzyc... nie wiem w czym moze byc problem, bo wszystko szlo bez bledow. jakies pomysly?
Spróbuj przy pomocy:
OdpowiedzUsuńhttp://localhost:8080/apex/
jako workspace podaj 'internal'
Jak to nie zadziała to jest jeszcze możliwość zmiany hasła admina, zaraz znajdę tekst na ten temat :)
Pozdrawiam
Piotr
Znalazłem zrzut ekranu :
OdpowiedzUsuńhttp://www.techxplore.net/blog/wp-content/uploads/2007/12/apxxepwd.png
W zasadzie chodzi o to aby odpalić plik PL/SQL apxxepwd w atrybucie podając nowe hasło.
Pozdrawiam
Piotr
problem jest zupelnie inny, okazuje sie ze na tym komputerze jest jakas stara baza zainstalowana do wewnetrznego systemu firmy i jak zainstalowalem teraz apexa to cos sie pod nadpisywalo, bo ani jedno ani drugie nie dziala. musze znalezc inne rozwiazanie. dzieki za pomoc, pozdrawiam
OdpowiedzUsuńco do problemu przedstawionego przez quack87:
OdpowiedzUsuń--------------------------
ERROR at line 1:
ORA-04063: package body “APEX_030200.WWV_FLOW_API” has errors
ORA-06508: PL/SQL: could not find program unit being called:
“APEX_030200.WWV_FLOW_API”
ORA-06512: at line 5,
--------------------------
mialem podobny problem ,w tutorialu jest napisane aby zmienic @^PREFIX.core/ na @^PREFIX.core\ ( jesli instalowales oracla na windzie.)
Moze na Oracle 10 XE to dzialalo ,niewiem bo nie instalowalem ale jesli chodzi o 11g to nic nie ruszaj w scripcie apexins.sql ani orainst.sql , zostaw je w spokoju :), po powtornym sciagnieciu apex 3.2 bez modyfikacji po prostu zastosowalem sie do polecenia ktore podal Andrzej czyli SQL>@apexins USERS USERS TEMP /i/
pozdrawiam
swierzak ;)
Właśnie zrobiłem nowy wpis na temat tego błędu tak więc proszę sprawdzić czy czasem o to nie chodzi http://apex.dbe.pl/2009/08/apex030200wwvflowapi-has-errors.html
OdpowiedzUsuńWitam;
OdpowiedzUsuńMam podobny problem jak jeden z wyzej juz opisanych, a mianowicie nie moge stworzyc workspace ani tez zalogowac sie przy wpisaniu "internal" poniewaz przycisk login nie dziala, podobnie po wcisnieciu Enter nic sie nie dzieje. Caly proces instalacji oraz upgradu przeprowadzilem wg opisu z tej strony, na swiezej wirtualnej maszynie windows xp.
Prosze o jakies wskazowki
Czy przeglądarka czasem nie blokuje cookie ??
OdpowiedzUsuńUzywam Firefoxa 3.0.11, ustawienia cookie standardowe: Akceptuj ciasteczka az wygasna
OdpowiedzUsuńJuz sobie poradzilem, zle wpisywalem parametr dla skryptu @apxldimg.sql . Dzieki za zainteresowanie
OdpowiedzUsuńŚwietnie że sie udało.
OdpowiedzUsuńPozdrawiam i zapraszam do cyklicznego odwiedzania naszego Bloga : )
Witam!
OdpowiedzUsuńZrobilem wszystko co bylo w blogu bez bledów i jak wpisuje adres
http://localhost:8080/apex/f?p=4550:10
to pokazuje ze nie ma takiej strony... :(
Co moze byc powodem tego bledu?
Pozdrawiam
P.S.
Bardzo fajny opis instalacji!
Cięzko powiedzieć co może być przyczyną. Pierwsze co to proszę spróbować normalnie się zalogować poprzez adres http://localhost:8080/apex i podać w Workspace: INTERNAL Użytkownik: ADMIN i hasło zgodnie z ustawionym w skrypcie apxxepwd.sql
OdpowiedzUsuńProsze podac nazwe uzytkownika: sys as sysdba
OdpowiedzUsuńProsze podac haslo:
ERROR:
ORA-12560: TNS:blad adaptera protokolu
Dlaczego nie moge sie polaczyc?
Problem ten oznacza że jest problem z połączeniem do bazy. Powodów może być mnóstwo. Pierwsze co proponowałbym sprawdzić czy działają wszystkie niezbędne serwisy: OracleServiceXE oraz OracleXETNSListener. Jeżeli działają to należało by puścić kontrolny "oracle-owy" ping, wpisując z lini komend \>tnsping XE , jeżeli jest komunikat na końcu OK, to próbować otworzyć wszelkie firewale. Póki co myślę starczy jak to nie pomoże to proszę dalej pisać. A cha najważniejsze to proszę napisać jaką konkretnie Pan/Pani puszcza komendę (chodzi mi o pełną komendę)
OdpowiedzUsuńCześć,
OdpowiedzUsuńinstalację przeprowadziłem zgodnie z opisem, brak błędów podczas instalacji. Przy próbie zalogowania z ostatniej części opisu wyskakuje błąd:
ERR-1777: Page 60 provided no page to branch to. Please report this error to your application administrator.
i niżej jest link Restart Application
Nie miałem żadnego workspace'a, i to samo przy próbie logowania na INTERNAL
Nie wpisałem kompletnego przebiegu wydarzeń, po zalogowaniu się na INTERNAL, ADMIN i haslo pokazuje się plansza z komunikatem:
OdpowiedzUsuńThe password for this account must be changed.
są pola do wpisania aktualnego i nowego hasla i dopiero po wpisaniu i wciśnięciu:) enter pokazuje się ERR-1777
A co się dzieje przy próbie logowania tutaj: http://localhost:8080/apex/apex_admin na użytkownika ADMIN ?
OdpowiedzUsuńto samo:
OdpowiedzUsuńThe password for this account must be changed.
Tak więc podłączyć się SQL/Plusem na sys as sysdba a następnie ponownie uruchomić skrypt:
OdpowiedzUsuń@apxxepwd.sql hasło
skrypt uruchomiłem, wyskoczyło potwierdzenie zmiany hasła, zalogowałem się na http://localhost:8080/apex/apex_admin i znowu komunikat, że hasło trzeba zmienić, a po zmianie ERR-1777. Wszystko instalowałem na systemie Win7 x64. Pierwszy raz mam do czynienia z Oracle i Apex więc może jakieś typowe błędy nowicjusza wchodzą w grę?
OdpowiedzUsuńProponowałbym w takim razie zrobić instalację na nowo. Czyli odinstalować Oracle XE i stawiać wszystko od początku.
OdpowiedzUsuń