Category

Oracle

Oracle virtual index – strojenie bazy danych

Natrafiłem dziś na fajną zabawkę w Oracle – przyda się z pewnością każdemu, kto właśnie optymalizuje swoją bazę – powiedzmy – dużą bazę. Optymalizacja długich zapytań, to w dużej mierze sztuka dobrania najodpowiedniejszego zestawu indeksów dla odpytywanej tabeli. W przypadku baz danych o stosunkowo niewielkiej ilości danych, sukces zależy jedynie od cierpliwości i wiedzy o mechanizmach bazodanowych. Nieco bardziej skomplikowane jest strojenie bazy, kiedy objętość jej tabel zaczynamy mierzyć w Giga albo nawet Terabajtach . Tam nie zawsze możemy pozwolić sobie na przeprowadzenie wielu eksperymentów, choćby z powodu ograniczonej przestrzeni dyskowej, przeznaczonej na indeksy.

Read More

Wskazówka: count(*) to zły pomysł

Zauważyłem, zresztą chyba nie tylko ja, że wielu programistów nadużywa konstrukcji count(*) w swoich zapytaniach SQL:

select count(*) from my_table; -- zlicz wiersze w tabeli

Zapytania tego typu pisze się odruchowo, za każdym razem, kiedy chcemy zliczyć wiersze spełniające wybrane kryteria. Nie chcę mówić, że jest to całkowicie złe rozwiązanie, ba!, sam tak robię, kiedy potrzebuje napisać zapytanie na szybko, czy przygotowac jednorazowo jakis raport z bazy danych. Chcę tylko powiedzieć, że nie jest to najlepsze rozwiązanie, kiedy zaczynamy myśleć o szybkości zapytania, jego optymalności – w takim przypadku sporo lepsze jest count(1). Read More

Oracle 11g: No more data to read from socket

Jeżeli trafiłeś tutaj z google, szukując jakiejś wskazówki, która pomoże ci rozwiązać problem z bazą Oracle 11g: [Error Code: 17410, SQL State: 08000] No more data to read from socket, to wiedz, że nie jesteś sam. Zapewne już znalazłeś kilkanaście wpisów na forach, na których oprócz pytania „ale o co chodzi” i pojedynczych odpowiedziach po latach „mam ten sam problem, rozwiązałeś go”. Cóż, mam nadzieję, że ten wpis nie będzie kolejnym bezużytecznym tworem w internecie. Moja przygoda z błędem No more data to read from socket zaczęła się podczas migracji bazy z Oracle 10g na Oracle 11g R2.

Read More

Jak usunąć użytkownika i schemat z Oracle

W życiu każdego DBA, i prawie każdego programisty, który ma styczność z bazą Oracle, nadchodzi kiedyś ten dzień, że trzeba posprzątać. Podczas tworzenia i testowania aplikacji tworzy się wiele schematów bazy – często osobnych do branchy, wersji, środowisk – raz spotkałem się nawet z sytuacją, że każdy programista, miał swój własny schemat (sic!). Kiedyś jednak projekty się kończą i schematy przestają być potrzebne (częściej kończy się miejsce na serwerach developerskich i trzeba je poprostu zwolnić). Wtedy to zabieramy się do usuwania tego, co aktualnie nie jest nam potrzebne – nieużywanych schematów. Operacja ta, wbrew pozorom, nie zawsze kończy sie sukcesem, po wklepaniu zapytania:

drop user moj_uzytkownik cascade;

Read More