Portál AbcLinuxu, 1. května 2025 05:58
O Oracle je na každém rohu k zaslechnutí, jaký je to král mezi databázemi. Jak nad něj žádná jiná databáze nemá a na jeho cenu taktéž. Pojďme se tedy podívat, co nám společnost Oracle mj. nabízí.
Společnost Oracle nabízí hodně řešení, my se ovšem zaměříme na čtyři, resp. pět jejích produktů (OracleXE, APEX, Oracle 10 a 11, OracleAS). V dnešním díle se nebudeme s ničím moc párat a místo teorií se přímo vrhneme do instalace OracleXE s nejnovější verzí APEX (3.1.2). Teprve až v dalších dílech si na plné verzi databáze vysvětlíme hlubší funkce, správu paměti apod.
Takže rychle a zjednodušeně o tom nezbytném:
PL/SQL (Procedural Language/Structured Query Language)
Jedná se o procedurální nadstavbu nad klasickým SQL, tzn., že pomocí PL/SQL píšeme různé procedury, které volají selecty, vytvářejí triggery aj. Oracle PL/SQL vymyslel a založil ho na programovacím jazyku ADA. PL/SQL se rychle rošířilo a jeho deriváty převzaly i jiné databáze.
APEX (Oracle Application Express)
Dříve nazýváno HTML DB, je webové vývojové prostředí postavené nad databází Oracle. Rychle se v něm dá udělat webová aplikace, jenž má data v Oracle databázi. Jedná se o menší klikací aplikaci s možností PL/SQL. Tím, jak je klikací, je také omezena, takže se hodí na jednoduší věci pro menší firmy a ne nějaké komplexní projekty.
Je postavena na Oracle 10, má stejné jádro jako Oracle 10, takže kompatibilita je zaručena, a je možno později přejít na plnou verzi Oracle. Je zcela zdarma, což je doprovázeno jistými omezeními:
Oracle v zásadě podporuje jen enterprise distribuce. Těmi jsou RHEL (Red Hat Enterprise Linux), SLES (SUSE Linux Enterprise Server) a dá se říci, že i novinka OEL (Oracle Enterprise Linux). Již delší dobu existuje projekt "Oracle Unbreakable Linux Support". Tím se Oracle zavazuje, že bude poskytovat podporu k RHEL operačním systémů, a to i v případě, že na nich nepoběží produkty Oracle. Podporu dodává prostřednictvím předplatitelské sítě Unbreakable Linux Network (ULN). Otázkou ovšem je, na co všechno skutečně podporu dodává, vzhledem k vyjádření samotného Red Hatu.
OEL je vlastně RHEL. Oracle vzal zdrojové kódy RHEL, vyměnil loga a pár drobností a má OEL (stejně jako to dělá např. CentOS). OEL stojí 20 USD a plně jej podporuje Oracle. Výhody jsou zřejmé. Podporu vám dělá pro operační systém i databázi jedna a ta samá firma a máte velmi levný a podporovaný derivát operačního systému RHEL.
Pokud nechceme platit za enterprise řešení, tak můžeme sáhnout po jejich derivátech. Jedním z nejlepších kandidátů pro Oracle je bezesporu CentOS a na tom také budeme vše dělat (stávající verze 5.2). V posledních dílech seriálu zmíním i instalaci na nepodporovaných distribucích.
Požadavky:
Nevím, zda se velikost swapu vztahuje k velikosti paměti. Každopádně, pokud vám Oracle vyhodí při instalaci chybku s nedostatkem swap, doporučuji vytvořit swap do souboru a připojit ho ke stávajícímu swap oddílu. Je to lepší, než přerozdělovat disk (já měl swap 950 MiB, tak jsem si 128 MiB přidal):
dd if=/dev/zero of=/swap.iso bs=128M count=1 mkswap /swap.iso swapon /swap.iso
Nezapomeňte také upravit soubor /etc/fstab, aby se po restartu nastavení zachovalo:
... /dev/neco none swap sw,pri=1 0 0 /swap.iso none swap sw,pri=1 0 0 ...
Zde jsou k dispozici balíčky OracleXE, doporučuji universal: http://www.Oracle.com/technology/software/products/database/xe/index.html
mv /etc/yum.repos.d/CentOS-Media.repo /etc/yum.repos.d/CentOS-Media.backup yum update yum install mc glibc libaio useradd max passwd max
Když něco testuji, tak eliminuji potenciální problémy, které následně řeším až nakonec. Těmi je většinou firewall a SELinux, takže ho vypneme a až nám vše poběží, tak si nastavíme správně i firewall:
# vypneme firewall /etc/init.d/iptables stop # odebereme po startu pc chkconfig --del iptables # vypneme selinux: nano -w /etc/selinux/config # SELINUX=enforcing změníme na SELINUX=disabled
Stáhneme oracle-xe-univ-10.2.0.1-1.0.i386.rpm a vzápětí nainstalujeme:
rpm -ivh oracle-xe-univ-10.2.0.1-1.0.i386.rpm
nano -w /etc/apt/sources.list # zakomentovat řádek s cdrom aptitude update aptitude dist-upgrade aptitude install mc bzip2 unzip libaio1
Stáhneme oracle-xe-universal_10.2.0.1-1.0_i386.deb a vzápětí nainstalujeme:
dpkg -i oracle-xe-universal_10.2.0.1-1.0_i386.deb
Nyní máme nainstalovanou databázi s APEXem 2.1, Dále už bude vše pro obě distribuce společné. Databáze se nám nainstalovala do (lepší místo si opravdu vybrat nemohli):
/usr/lib/oracle/
Ještě je třeba provést konfiguraci (nastavení portů pro APEX a pro připojení k databázi, heslo do databáze a samozřejmě automatické spouštění databáze po startu počítače):
/etc/init.d/oracle-xe configure Specify the HTTP port that will be used for Oracle Application Express [8080]: Specify a port that will be used for the database listener [1521]: initial configuration: Confirm the password: Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]:y
Stáhneme si nejnovější verzi APEXu:
http://www.Oracle.com/technology/products/database/application_express/download.html A rozbalíme do adresáře s Oracle:
cd /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/
unzip /cesta_kam_jsme_stáhli_apex/apex_3.1.2.zip
cd apex
Načteme si proměnné prostředí Oracle (tento řádek si můžeme přidat třeba do domovského adresáře, do .bash_profile či .bashrc, aby bylo vše nastaveno již po přihlášení):
. /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh
Přihlásíme se do databáze a započneme instalaci (může trvat i 20 min):
sqlplus sys/ as sysdba
SQL> @apexins SYSAUX SYSAUX TEMP /i/
Nastavíme heslo uživateli admin:
sqlplus sys/ as sysdba
SQL> @apxchpwd
SQL> exit
OracleXE má v sobě integrovaný APEX, a ten je celý uložen v databázi. Má tam uložen i adresář images, jenž je součástí APEXu, a jsou v něm obrázky, témata a scripty. Aby byla aktualizace kompletní, musíme adresář images překopírovat do databáze. Máme dvě nejschůdnější možnosti. OracleXE nabízí přístup k tomuto adresáři přes webdav, nebo když povolíme FTP, tak přes FTP. My se vydáme cestou FTP (přeci jen slušného FTP klienta má každý):
sqlplus system@xe SQL> exec dbms_xdb.setftpport('2100'); SQL> alter system register; SQL> select dbms_xdb.getftpport as "FTP-Port" from dual; SQL> exit
Nyní zkopírujeme (např. pomocí MC, v něm je třeba v kopírovacím dialogu F5 odškrtnout, aby kopíroval i atributy, jinak vás stále bude upozorňovat, že atribut nelze nastavit) celý obsah adresáře /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/apex/images do /i/ na FTP serveru. Na FTP server se přihlásíme jako uživatel "system" s heslem, jenž používáme k přihlášení do databáze.
Pro vypnutí FTP serveru (vzhledem k bezpečnosti by to bylo dobré) provedeme:
sqlplus system@xe SQL> exec dbms_xdb.setftpport('0'); SQL> alter system register; SQL> exit
Ve finále ještě povolíme vzdálený přístup na webové rozhraní APEXu (standardně je přístupné pouze z localhostu):
sqlplus system@xe
SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
SQL> exit
Nyní by měly být dostupné následující adresy:
Nejdříve je nutné přihlásit se do administrátorského rozhraní (uživatel "admin" a heslo je to, co jsme zadali při SQL scriptu "@apxchpwd"). Při prvním spuštění budete dotázání na současné heslo a zároveň vyzváni k zadání nového hesla. Poté už se budete moci přihlásit, vytvořit si workspace, přihlásit se do uživatelského rozhraní a začít tvořit vlastní aplikaci.
Jak nato, se můžete dozvědět třeba v tomto seriálu: Oracle Database XE – týden první
Kdo je líný, může vyzkoušet již hotové ukázkové aplikace pro APEX, které se nacházejí na webu Oracle přímo zde: Oracle Application Express - Packaged Applications
Ti z vás, kdo nechtějí nebo nemohou instalovat OracleXE, ale chtěli by si vyzkoušet APEX, tak samozřejmě mohou. Stačí se zaregistrovat u Oracle a hned máte k dispozici přístup k APEX rozhraní, viz: Sign up for an account
Tak, to nejlehčí máme za sebou. Příště si povíme, jak nainstalovat Oracle 10, jak funguje připojování do databáze a něco o správě paměti v Oracle. Kdo se diví, proč se zaobírám starší verzi Oracle než aktuální (verze 11), tak vězte, že desítková verze je stále hodně používaná a určitě si to zaslouží. Navíc je certifikována na starší verze distribucí, tak se aspoň přesvědčíme, jaké komplikace mohou nastat u novějších verzí. Pokud zbude místo, tak se dostaneme k ladnému info o 32bit vs. 64bit.
Velmi pekny clanok, dakujem...
+ 1
Use the right tool for the right job.
Proc hned myslet na nejhorsi a posilat ho do pekel? Pravda, pokud chcete umet jenom jednoduchy select a neplanujete se naucit nic slozitejsiho, tak asi staci.
Oracle Enterprise Linux (RHEL) i Oracle Virtual Machine (OEL+XEN) je ke stažení samozřejmě zdarma. Viz oss.oracle.com. Totéž platí i o Oracle Virtual Manager a templates pro XEN. Platí se pouze podpora, nebo přístup do repožitářů s aktualizacemi. Ostatní produkty (10g, 11g, AS a pod) jsou zdarma k vyzkoušení a testování.
Co se týče web aplikací, je možné použít Oracle Http Server (Apache 2.0) s mod_plsql - psaní procedur přímo v PL/SQL s uložením v databázi (funguje i na OracleXE). Samozřejmě také v PHP 4/5 a Perlu - vše je součástí instalace OHS.
Ještě dodám, že OracleXE je víceméně shodné s Oracle 10g, avšak neobsahuje některé balíčky (například XML DB). Problémem však může být, že mezinárodní verze pracuje pouze v UTF8. Lze sice přepnout počítání znaků v CHAR místo BYTE, avšak některé ovladače třetích stran pro přístup k databázi takto nelze nastavit - taže vyhodnocují nesprávně délky polí.
XML DB tam castecne je, resp podpora pro SYS.XMLTYPE tam je urcite. Co tam ale chybi je JVM a vsechny JAVA stored procedury. Pokud jde o NATIVE CHARACTER set tak vam nikdo nebrani vytvorit si vlastni vlastni databazi a zvolit si libovolnou znakovou sadu.
10g, 11g, AS dle licencnich ujednani zdarma neni ani k vyzkouseni ani pro vyvoj.
To ze to je "zdarma" ke stazeni jeste neznamena ze to muzete licencne "zdarma" provozovat.
Ona je tam spousta omezeni. Jedna aplikace, 30 dnu, nesmite zverejnovat benchmarky a kdo vi co jeste. Jestli se nepletu, tak cca za 3500$ se muzete stat oracle partner a k tomu dostanete 5 devel licenci na vsechny produkty.
Jsi asi necetl ty dalsi dovetky a odstavce :-p
dpkg -i oracle-xe-universal_10.2.0.1-1.0_i386.deb /usr/lib/oracle/ /etc/init.d/oracle-xe configure . /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/apex/images do /i/dale sem si nepovolil pristup z venku na portu 8080 pro apex, protoze tam nejede ssl, ale pres mod proxy v apache tam preposilam pozadavky
<VirtualHost *:443> ServerName domena.ltd ProxyRequests On ProxyPass / http://127.0.0.1:8080/ ProxyPassReverse / http://127.0.0.1:8080/ <Proxy *> AddDefaultCharset off Order deny,allow Allow from all </Proxy> LogLevel warn CustomLog /var/log/error-oracle.log combined ErrorLog /var/log/access-oracle.log SSLEngine On SSLCertificateFile /cesta/k/certifikatu/certifikat.crt SSLCertificateKeyFile /cesta/k/certifikatu/certifikat.crt.key </VirtualHost>U mc se pristupuje k ftp-server nasledovne - ponechame zobrazena obe modra okna a napiseme prikaz
cd ftp://system@localhost:2100nasledne v mc vyskoci okno pro zdani hesla a pak mam v jedne pulce ftp-oracle-server a v druhym data z localhostu a uz jen F5 na kopii.. jinak dik za paradni navod a uz se tesim na dalsi dily!!!
Neni pravda, ze Oracle bere RHEL a dela z nej OEL. Oracle bere CentOS a dela z nej OEL. Nema tedy koule ani na to, aby si ten RHEL odbrandoval sam...
A jak je tedy mozne ze se stava pravidlem ze je vypusten OEL tak den dva pred tim nez je teprve vydan CentOs???
Pokud má někdo raději klasické 8bitové kódování znaků češtíny (iso nebo windows) není problém pod XE zastavit (a smazat) výchozí instanci (databázi) a vytvořit si jinou dle vlastních potřeb. Naklikat to ale nejde.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.