Co z tym Oraclem? Rozwazania na temat topornosci systemu bazy danych

0

Zmuszony jestem skorzystac z Oracla. Dodam, ze jestem laikiem jezeli chodzi o te baze, dopiero co zaczalem z niej korzytstac, ale juz dziala mi na nerwy. Wybaczcie jezeli pisze glupstwa, nie znam sie, ale:

  1. Nie mozna zmienic typu kolumny w tabeli? WTF? Aby zmienic typ kolumny, musialem utworzyc nowa, z wlasciwym typem, a nastepnie przekopiowac dane ze starej kolumny do nowej, aby na koncu usunac stara kolumne :/

  2. O co chodzi z tym typem CLOB. Nie ma po prostu typu TEXT? na CLOB nie dziala mi konstrukcja DISTINCT.

  3. Trzeba recznie tworzyc sekwencje? Nie mozna uzyc typu SERIAL, tak jak w Postgresie, ktory wszystko ladnie tworzy samemu?

  4. Czy to tylko u mnie komunikaty bledu sa tak fatalne? Moze w drozszej wersji Oracla sa "normalne", ale np. proba odpalenia zapytania konczy sie bledem invalid identifier. I to wszystko! Gdzie, co, jak, w ktorej linii? Oracle tego nie mowi. Jak to zdebugowac? Moze sa jakies narzedzia do tego? Uzywam Navicata.

  5. Pomijam brak czegos takiego jak LIMIT oraz OFFSET.

  6. Nie ma znanej z Postgresa czy MySQL funkcji NOW()? Przed chwila Oracle mnie poinformowal, ze czegos takiego nie rozpoznaje.

Siedze nad Oraclem dopiero kilka godzin i czuje, ze to dopiero poczatek moich trudnych zmagan z tym systemem. Nie mozna powiedziec, zeby ten system byl user friendly. Co wobec tego przemawia za tym, ze ta baza jest taka droga? W zyciu nie zaplacilbym za nia takich pieniedzy.

0
  1. Trzeba recznie tworzyc sekwencje? Nie mozna uzyc typu SERIAL, tak jak w Postgresie, ktory wszystko ladnie tworzy samemu?

Nie wiem czy o to dokładnie chodzi, ale nie ma auto-generacji ID w Oracle, sekwencje jak już napisałeś, trzeba robić ręcznie.

ATSD:
Narzędzie, które jest u mnie w firmie używane do obsługi bazy to Oracle SQL Developer.

0

Weź mnie nie strasz, że takie problemy spotkam. :)
Moja praca inżynierka będzie z użyciem bazy Oracle. Na początku promotor chciał Posgtresql, ale potem zmienił zdanie i wymyślił Oracle.
Dobrze wiedzieć co mnie czeka.
Ad 3. Znalazłem taki opis:
http://jen.fluxcapacitor.net/geek/autoincr.html
Z tego co wiem, to TOAD umożliwia w miarę szybki i łatwy sposób stworzenie tego.

0

Specjalistą nie jestem ale:

  1. O co chodzi z tym typem CLOB. Nie ma po prostu typu TEXT? na CLOB nie dziala mi konstrukcja DISTINCT.

CLOB jak nazwa wskazuje jest na Large Objecty. To znaczy takie po kilkaset megabajtów, czasem i więcej. Oracle sobie te obiekty trzyma w innym miejscu niż normalne dane, tak zeby dostęp do nich był łatwiejszy i szybszy. Ale konsekwencją jest ograniczenie operacji które możesz wykonywać. Nie trudno sobie wyobrazić co by się działo jakbyś miał w bazie kilka tysięcy clobów po kilkaset megabajtów i zrobił tam jakieś LIKE ;)

  1. Trzeba recznie tworzyc sekwencje? Nie mozna uzyc typu SERIAL, tak jak w Postgresie, ktory wszystko ladnie tworzy samemu?

Trzeba, chociaż jak korzystasz z jakiegoś narzędzia do tworzenia tabel (np. SQL Developer, albo chociażby oraclowy apex) to automatycznie ci tworzy sekwencje i triggery.

  1. Pomijam brak czegos takiego jak LIMIT oraz OFFSET.

W Oracle musisz zrobić podzapytanie z użyciem zmiennej rownum żeby uzyskać efekt limit ;)

1

A zamiast now() masz sysdate() :)

0

Dzieki za odpowiedzi :) Jestem troche sfrustrowany, poniewaz musze przerobic zapytania, ktore dzialaly na PostgreSQL, tak, aby dzialaly na Oracle. W Postgresie mialem np. tabele, wsrod ktorej byla kolumna typu TEXT. W Oracle odpowiednikiem jest typ CLOB, zgadza sie? Nie moglem dojsc czemu dane zapytanie nie dziala pod Oracle. Okazalo sie, ze przyczyna bylo uzycie instrukcji DISTINCT, ktore nie moze wspoldzialac wraz z kolumna typu CLOB. Rozwiazalem to w ten sposob, ze zmienilem typ z CLOB na VARCHAR(4000) ;)

Zastanawiam sie co jest tak wspanialego w tym calym Oraclu, ze jest wart takiej furmanki pieniedzy ;) Na pewno cos musi byc na rzeczy, ja po prostu tego poki co nie wiem :P Czy tutaj chodzi o super-hiper wydajnosc tej bazy?

0

a doszedłeś już do składni z (+) :P

0
abrakadaber napisał(a):

a doszedłeś już do składni z (+) :P

Nie. A co to takiego? :)
Mialem natomiast problem z zastrzezonymi przez Oracle - slowami kluczowymi. Otoz, w tabeli byly kolumny: USER_ID oraz DATE. Glowilem sie, czemu zapytanie nie dziala, az wykombinowalem, ze Oracle traktuje te nazwy jako zastrzezone. Rozwiazaniem bylo uzycie apostrofow. Czyli 'USER_ID'. Chyba, ze jest jakis inny sposob?

1
napisał(a):

(..)

Zastanawiam sie co jest tak wspanialego w tym calym Oraclu, ze jest wart takiej furmanki pieniedzy ;) Na pewno cos musi byc na rzeczy, ja po prostu tego poki co nie wiem :P Czy tutaj chodzi o super-hiper wydajnosc tej bazy?

W sumie to nie wiadomo. Trochę "stan zastany", trochę "dużych" rozwiązań stworzonych wokół tego i ... chyba niewiele więcej. Choć przecież to niemało :)
Czasem mam wrażenie, że z bazą Oracle jest trochę jak z produktami Apple... ;-)

1

Dla mnie też to jest zagadka, szczególnie że nie widziałem nigdzie porównań wydajności np Oracle vs MS SQL czy z inną komercyjną bazą. Ale takich porównań w których są suche liczby, a nie porównania funkcjonalności. A tymczasem jeśli chodzi o otwarte rozwiązania to jest masa benchmarków, różnej jakości, no ale liczby do porównywania i wyciągania wniosków są.

U mnie w firmie jest .NETowiec, który tworzy serwis z backendem opartym o PostreSQL i mówił, że chyba dwa razy robili przymiarki do MS SQL, ale ta baza okazała się wielokrotnie wolniejsza od Postgresa w ich przypadku, a nie chciało im się zmieniać architektury bazy.

0
napisał(a):
abrakadaber napisał(a):

a doszedłeś już do składni z (+) :P

Nie. A co to takiego? :)

to są left/right joiny :). Np.:

select * from a, b where a.id = b.id(+)

to to samo co

select * from a left join b on a.id=b.id

(+) stawiasz po stronie tego, którego może nie być. Tylko, że nie da się tym sposobem zrobić full join

Mialem natomiast problem z zastrzezonymi przez Oracle - slowami kluczowymi. Otoz, w tabeli byly kolumny: USER_ID oraz DATE. Glowilem sie, czemu zapytanie nie dziala, az wykombinowalem, ze Oracle traktuje te nazwy jako zastrzezone. Rozwiazaniem bylo uzycie apostrofow. Czyli 'USER_ID'. Chyba, ze jest jakis inny sposob?

User_id na pewno nie jest błędną nazwą pola - sprawdzone przed chwilą i jak już to nie apostrofów tylko cudzysłowów. No chyba, że zależy to od użytego narzędzia.

BTW jeśli potrzebujesz czegoś lekkiego i szybkiego ale bez graficznych bajerów to zobacz sobie SQLToolsa, bo jak dla mnie to Oracle SQL Developer to kobyła straszna

0

Osobiście, w dużych projektach mam doświadczenie z Informixem, Oracle i SQL Server. Na pewno Oracle jest najpotężniejszy z tych trzech, ale na pewno łatwiej i przyjemniej się pracuje z SQL Server, czasem brakuje możliwości (pl/sql>t-sql), czasem wkurza łamanie standardów, ale i tak jest łatwo i fajnie przez co szybko się koduje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1