December 14th, 2006
Oduvijek sam volio čitati stručnu literaturu - knjige, časopise, online članke i td., a hvala Bogu, u ovoj firmi stručnih knjiga ima napretek. Najviše knjiga ima za Oracle, potom za Java programiranje, te na kraju za XML, C++, XSLT, VB.NET, Delphi, te nekoliko knjiga za Project management.
Na mom stolu se uvijek može naći par knjiga, jer mi katkad zatreba neka stvarčica, koju ne znam detaljno ili želim da pronađem definiciju i način korištenja određenih stvari u Oracleu. Evo baš sam danas listajući knjigu “Oracle 10g: PL/SQL Programmierung” naletio na CURSOR unutar SELECTa, tj. “SELECT nesto FROM tabela, CURSOR (SELECT nesto2 FROM tabela2) cur WHERE … “, a juče sam čitao nešto o particijama u Oracle 10g bazi.
Iduce sedmice planiramo kupiti/naruciti dvije nove knjige: “Oracle database 10g: Real Application Clusters” i “Oracle database 10g: RMAN Backup & Recovery” (ne znam sad napamet nazive knjiga, ali tako nekako idu).
Evo neke od knjiga, koje su mi na stolu ili u ormarima pored.

Posted in Oracle | No Comments »
November 21st, 2006
Vec vise od mjesec dana se gnjavim sa ljudima iz Oracle support, da rijese jedan problem, odnosno da isprave jedan bug u svojoj 10g bazi (BUG: PARSING PERFORMANCE IS MORE POOR AS DEPTH OF INLINE VIEW IS MORE INCREASED ).
Imamo aplikaciju, koja generise SQL upite u zavisnosti, koje su opcije izabrane. Pri tome je moguce da bude generisan upit, koji sadrzi nekoliko (maksimalno 10-ak) ugnijezdjenih upita (inline query/inline view), kao npr.:
SELECT …
FROM (
SELECT …
FROM (
SELECT …
FROM (
i td.
)
)
)
Da ironija bude veca, stvar na 9i bazi radi, iako parsing faza traje minut-dva, a na 10g bi trebala da radi i da bude jos brza, no takav query ne prolazi ni parsing fazu. Naprosto se zablokira i mora se prisilno ubiti taj proces. Cak ni EXPLAIN PLAN FOR ne radi.
I tako se ja dopisujem vec vise od mjesec dana sa nekoliko osoba iz Oracle support tima, no bezuspjesno. Posalju mi neki Solution/action plan i ja ga odradim vec isti dan. Nakon 2-3 dana, opet mi posalju neki solution/action plan - ja ga odradim isti dan. Posaljem im trace fajlove, TKProf output i td., a oni nakon 10 dana traze opet to isto. I tako smo se poceli vrtjeti u krug. Rekose da ce bug biti ispravljen u patchu za novembar, no ni p od patcha. Od nekih internih ljudi sam saznao da postoje veliki problemi sa izdavanjem najnovijeg patcha, pa je doticni jos na razmatranju i po poslednjim informacijama, bice izdan tek pred novu godinu ili nakon nove godine. A mi da cekamo i blejimo do tada…
Edit (13.12.2006.): Evo rijesen je ovaj bug u patchsetu 10.2.0.3, ali nazalost jos nije izdan za nasu platformu. Po njihovim najavama, patchset za nasu platformu ce biti izdan krajem ovog mjeseca ili pocetkom januara. Aj’ da vidimo hoce li pomoci imalo…
Edit (10.01.2007.): Instalirao sam patchset i izgleda da sad sve radi kako treba. Odlicno! Samo jos da nisam morao ovoliko cekati…
Posted in Oracle | No Comments »
November 13th, 2006
U dopisivanju sa Carstenom Pedersenom, glavnim certification menadzerom, i Rolandom Boumanom, clanom certification tima, bijah zamoljen za feedback u vezi MySQL certifikata, pa sam slozio neki odgovor, ali vjerujem da ga nisam preveo na engleski kako treba, te da se izgubila smisao i kontekst, u kojem sam htio iznijeti svoje misljenje o tome.
Osim toga, nije naveden kompletan odgovor, nego su neke recenice izbacene, a pogresno su i napisali “Databaxse Consultant and DBA”.
Poslao sam im zahtjev za izmjenom, makar da to slovo x izbace, ali ni nakon nekoliko dana nema reakcije.
Citat mozete procitati ovdje: “MySQL Certification overview”
Edit (20.03.2007.): Konacno su izbacili ono slovo x viska. 
Posted in MySQL | No Comments »
November 3rd, 2006
Evo jedan SQL upit, pomocu kojeg mozete saznati neke informacije o zauzecu vasih baza, broju tabela u bazi i sl.
SELECT s.schema_name naziv_baze,
CONCAT(
IFNULL(
ROUND(
(SUM(t.data_length)+SUM(t.index_length))/1024/1024
,3)
,0.00)
,' MB') as ukupna_velicina_baze,
CONCAT(
IFNULL(
ROUND(
(
(SUM(t.data_length)+SUM(t.index_length))
- SUM(t.data_free)
)/1024/1024
, 3)
, 0.00)
,' MB') as iskoristeno_MB,
CONCAT(
IFNULL(
ROUND(SUM(data_free)/1024/1024,3)
,0.00)
,' MB') as slobodno_MB,
CONCAT(
IFNULL(
ROUND(
(
(
(SUM(t.data_length)+SUM(t.index_length))
-SUM(t.data_free)
) /
((SUM(t.data_length)+SUM(t.index_length)))*100)
,3)
,0)
,' %') as iskoristeno_procenata,
COUNT(table_name) as broj_tabela
FROM information_schema.schemata s
LEFT JOIN information_schema.tables t
ON s.schema_name = t.table_schema
WHERE s.schema_name != 'information_schema'
GROUP BY s.schema_name
ORDER BY 1;
Posted in MySQL | 2 Comments »
October 27th, 2006
Posto inace koristim TOAD za rad sa Oracle-om, odlucio sam isprobati i TOAD za MySQL.
Na sluzbenom sajtu firme Quest mozete pronaci vise informacija o samom alatu (Toad for MySQL -> Overview), a usput i skinuti instalacijski paket (dole desno u sekciji “More info” imate link za download ili kliknite ovdje direktno za download: Download Toad for MySQL).
Prenijeću neke od karakteristika sa službenog homepagea (copy/paste):
SQL Modeler - Quickly create the framework for a SQL statement from a graphical interface, including selecting tables and views; selecting and joining columns, adding conditions, etc.
Schema Report Generator - Create HTML reports of selected databases and objects, including the source code for each object and links that display details for the object when selected.
Data Report Designer - Design and distribute live reports that users can run to view the latest data.
Advanced Administration - Schema Compare, Data Compare, Knowledge Xpert, Flush and Reset, Session Monitor, and Group Execute.
Master Detail Browser - View or edit data from one or more tables that contain constraints.
Editor Enhancements - Macro Record/Playback, Enhanced Code Snippets, Version Control, and more…
Service Manager - Easily add, remove, start, or stop services from Toad.
Security Setup - Restrict access to specific features in Toad.
Tu je naravno i podrška za UTF8:
Isprobajte i nećete se pokajati.
Posted in MySQL | No Comments »
October 24th, 2006
Na Oracle OpenWorld konferenciji u San Franciscu, najavljena je nova verzija Oracle RDBMS-a i to u verziji 11g. Navodno će imati ni manje, ni više, nego 482 nova dodatka.
Iz iskustva znam da još mnoge firme nisu prešle ni na Oracle 10g (ako i jesu, bore se sa migracijom i Oracle bugovima - o, da! I Oracle je bugovit!), a kad će tek doći na red 11g…
Moram priznati da me Oracle u zadnje vrijeme sve više razočarava, a navešću neke od razloga:
1. Izdao je prerano verziju Oracle 10g, koja ne da je bugovita, nego je gora od cesta na Balkanu.
2. Razumijem ja, da Oracle želi proširiti područje svog djelovanja i samim tim povećati zaradu, ali dajte Oracleovci prvo sredite svoj RDBMS, jer sam samo u zadnjih godinu i po dana lično svjedok nekoliko TAR-ova (po novom Service Request-ova) na račun vašeg RDBMS-a. A takvih zahtjeva je na stotine, da ne kažem hiljade… Požurujete sada i sa verzijom 11g, a ni ova 10g nije 100% stabilna i kompletna. Zar vam nije dosta love od silnih licenci?
3. Vrijeme je da malo poboljšate PL/SQL (o objektno orjentisanom PL/SQL-u mogu samo da sanjam).
Nije ni čudo što sa svih strana u zadnje vrijeme čujem pritužbe na račun Oracle-a.
Ako ovako nastavite, izgubićete dignitet najboljeg RDBMS-a.
Za svaki slučaj, paralelno koristim i MySQL, jer će možda za par godina zatrebati umjesto Oraclea … 
Posted in Oracle | No Comments »
October 10th, 2006
Novije verzije MySQL-a podrzavaju izmedju ostalog i uskladistene procedure (stored procedures), pa bih zelio prikazati na jednom primjeru, kako se one kreiraju i koriste.
Read the rest of this entry »
Posted in MySQL | 1 Comment »
October 9th, 2006
Ukoliko dobijete gresku slicnu ovoj:
User ‘dejan’ has exceeded the ‘max_questions’ resource (current value: 1000)
znajte da imate ogranicenje MAX_QUERIES_PER_HOUR . To ogranicenje vam ne dozvoljava izvrsavanje SELECT upita nad tabelama, ukoliko u intervalu od jednog sata prekoracite maksimalno dozvoljeni broj upita. U ovom slucaju maksimalni broj upita u jednom satu iznosi 1000.
To je dio resursnih ogranicenja, tzv. “limiting account resources“, koje se moze definisati za svakog korisnika pojedinacno i postoji tek od verzije 4.0.2. Primjer takvih ogranicenja izgleda ovako:
mysql> GRANT ALL ON dejan.* TO 'dejan'@'localhost'
-> IDENTIFIED BY 'd3j4np455'
-> WITH MAX_QUERIES_PER_HOUR 1000
-> MAX_UPDATES_PER_HOUR 50
-> MAX_CONNECTIONS_PER_HOUR 50
-> MAX_USER_CONNECTIONS 2;
To znaci:
- da mogu izvrsiti 1000 SELECT upita u sat vremena (MAX_QUERIES_PER_HOUR)
- da mogu izvrsiti 50 izmjena (INSERT, DELETE, UPDATE) u bazi tokom sat vremena (MAX_UPDATES_PER_HOUR)
- da se mogu najvise 50 puta spojiti na bazu u sat vremena (MAX_CONNECTIONS_PER_HOUR)
- da maksimalni broj mojih simultanih konekcija iznosi 2 (MAX_USER_CONNECTIONS)
Vrijednosti tih ogranicenja se nalaze u mysql.user tabeli, i to u slijedecim poljima/kolonama:
Ogranicenje Schema.Tabela.Kolona
———————————————————————–
MAX_QUERIES_PER_HOUR > mysql.user.max_questions
MAX_UPDATES_PER_HOUR > mysql.user.max_updates
MAX_CONNECTIONS_PER_HOUR > mysql.user.max_connections
MAX_USER_CONNECTIONS > mysql.user.max_user_connections
Vise informacija o ovome mozete pronaci na sluzbenom MySQL homepageu: Limiting Account Resources
Posted in MySQL | No Comments »
October 4th, 2006
Za one koji ne znaju, Siniša Milivojević je MySQL Senior Support Manager i Developer. Obratio sam mu se sa željom da napravimo jedan E-Mail intervju prvenstveno o MySQL-u i OpenSource-u, na što je on rado pristao. Intervju je obavljen 05.06.2004., tako da neke informacije o MySQL-u i nisu baš aktuelne, ali vrijedi pročitati.
Read the rest of this entry »
Posted in MySQL | No Comments »
October 4th, 2006
Od 10 Oracle programera u mojoj firmi, njih 8 koristi PL/SQL Developer, jedan koristi naizmjenično PL/SQL Developer i TOAD, a jedino ja koristim isključivo TOAD (više od 95% vremena).
Već od prvog radnog dana koristim TOAD za Oracle pri “quickie” administraciji i PL/SQL programiranju, tako da moram priznati kako sam se navikao na njega. Pokušao sam raditi i sa PL/SQL Developerom, ali se jednostavno nisam mogao naviknuti.
TOAD mi nudi više opcija za administraciju, navigacija mi super odgovara, ima pregledniji EXPLAIN PLAN panel, mogu imati više otvorenih konekcija u jednoj instanci TOAD-a, upiti se ne izvršavaju u odvojenim session-ima kao po defaultu kod PL/SQL Developera, ima odličan Session browser, Object navigator i td. A i ljepši je.
Doduše zna mi se često desiti da se TOAD skrši sam od sebe ili da mi izbacuje neki “access violation error”, pa onda popi**im ko leptir, ali mi se i PL/SQL Developer znao “smrznuti” par puta, pogotovo kada kompajliram neki PL/SQL package sa više od 10 000 linija kôda.
Trenutno koristim TOAD sa verzijom 8.6.1, a nadam se da će verzija 9 biti stabilnija od prethodnih.
Posted in Oracle | No Comments »