Oracle PL/SQL – jak załadować zawartość tabeli do kolekcji PL/SQL

W tym poście przedstawię jak pobrać zawartość tabeli bazodanowej do kolekcji PL/SQL.

Pokażemy kilka z dostępnych możliwości wraz z kodem opartym o użytkownika HR.

Czytaj dalej

Posted in Oracle, PL/SQL, PL/SQL Podstawy | Tagged , , , , | 3 Comments

Monitorowanie wydajności backupów RMAN

Jak większość z nas wie RMAN (Recovery Manager) pozwala nam w sposób elastyczny oraz automatyzujący zadania wykonywać kopie zapasowe naszych baz. Współpracuje z katalogiem metadanych o wykonanych kopiach , obrazach plików czy też całych baz, oraz kopiach logów powtórzeń.

Katalog RMAN utrzymywany jest w ograniczonej formie w pliku kontrolnym każdej z baz, lub też może być dedykowaną instancją bazy na którą nie potrzebujemy dodatkowej licencji. Zw względu na fakt, że katalog jest niczym innym jak schematem w bazie, częstą praktyką jest “przyklejanie” katalogu RMAN do instancji już działającej bazy.

Wykorzystując RMANa oraz katalog, mamy możliwość wykonywania kopii zapasowych wielu baz. Wraz ze wzrostem ich ilości wzrasta trudność monitorowania polityka backupów.

Informacja o nieudanych backupach zawarta jest w logu z wykonania, i jest prosta do analizy (grep RMAN- *.log) , jak natomiast monitorować wydajność backupu ? W najszybszy i wygodny sposób odpowiedzieć sobie na pytanie “Czy nasza sieć (w przypadku backupu przez LAN) nie staje się wąskim gardłem ?” , “Czy nie mamy problemów z wydajnością storage’u na który wykonujemy kopie ?”… Czytaj dalej

Posted in Oracle, Oracle DBA, Oracle DBA Advanced | Tagged , , , , | Leave a comment

Wartość NULL i podzapytania, a operator IN i NOT IN

Często pewną konsternacje budzi problem wynikający z jednoczesnego stosowania wartości NULL i operatora sprawdzenia czy elementu nie ma na liście (NOT IN) co prowadzi do uzyskania w wyniku pustego zestawu rekordów. NULL dla operatora IN działa poprawnie, a dla operatora NOT IN nie działa! Czy na pewno takie zachowanie jest niepoprawne? Czytaj dalej

Posted in DB2 SQL, MySQL, Oracle SQL Podstawy, SQL | Tagged , , , | Leave a comment

Przenoszenie recovery catalogu nowa funkcjonalność 11G

Do wersji 11GR2 aby przenieść schemat zawierający recovery catalog, byliśmy zmuszeni używać narzędzi EXP/IMP lub zestawu narzędzi DATA PUMP EXPDP/IMPDP, będac zdanymi na szereg błędów, które były następstwem eksportu oraz importu schematu.

Przykładowa procedura przenoszenia schematu do innej bazy, lub tworzenia schematu testowego katalogu odtwarzania, wyglądała nastepująco: Czytaj dalej

Posted in Oracle, Oracle DBA Advanced | Tagged , , , | Leave a comment

Kurs Oracle SQL online. Sortowanie rekordów

W tej lekcji kursu Oracle SQL zaczniemy sortować rekordy w wyniku działania zapytania.

Jeśli chcesz posortować rekordy należy użyć klauzuli ORDER BY. Zatem do dzieła 🙂

Czytaj dalej

Posted in Oracle SQL, Oracle SQL Podstawy, SQL | Tagged , , , , | 3 Comments

latch: cache buffers lru chain

Ostatnio w pracy podczas testów jednego z systemów spotkaliśmy się z nastepującą charakterystyką obciążenia bazy:

Top 5 events

latch: cache buffers lru chain 14,664 2,489 170 47.9
enq: TX – row lock contention 5,582 1,203 216 23.1
log file sync 60,707 807 13 15.5
enq: US – contention 204 164 806 3.2
latch: cache buffers chains 1,367 153 112 2.9

Jak widać zdarzeniem które miało największy wpływ na obciążenie bazy było:

latch: cache buffers lru chain 48% czasu pracy bazy.

Najpierw trochę teorii. Co to są wogóle latche ?
Czytaj dalej

Posted in Oracle DBA Advanced | Tagged , , , , , , | Leave a comment

Kurs SQL online – Oracle: Limitowanie rekordów

Witam w kolejnej lekcji kursu Oracle SQL.

W tej lekcji zobaczymy jak limitować rekordy przy pomocy klauzuli WHERE.

Zapraszam do lektury!

Czytaj dalej ..

Posted in Oracle, Oracle SQL, Oracle SQL Podstawy, SQL | Tagged , , | 7 Comments

Kurs Oracle APEX online: Pierwsza przykładowa aplikacja APEX. Przegląd dostępnych kontrolek i funkcjonalności.

W poprzedniej części kursu skonfigurowaliśmy poprawnie środowisko pracy, utworzyliśmy workspace i nadaliśmy użytkownikowi odpowiednie uprawnienia. Teraz z tego skorzystamy i utworzymy naszą pierwszą, przykładową aplikację Oracle APEX, a następnie zobaczymy jakie możliwości udostępnia nam to narzędzie. Poznamy zatem kilka kontrolek oraz zobaczymy różne rodzaje wykresów jakie mamy do dyspozycji. Przekonamy się również jak raport interaktywny umożliwia nam pracę z danymi, ich edycję, filtrowanie, grupowanie, agregacje i wizualizację w formie graficznej. Czytaj więcej

Posted in Oracle APEX Fundamentals | Tagged , | Leave a comment

LISTAGG w Oracle 10g i 9i, oraz WM_CONCAT i inne metody konkatenacji tekstów w trakcie agregacji

W Oracle 11g pojawiła się funkcja agregująca LISTAGG, która “dodaje” teksty do siebie generując w wyniku wartości z kolumny przekazanej parametrem. Jest to zatem konkatenacja tekstów wywołana w formie funkcji agregującej. Funkcjonalność LISTAGG można uzyskać jednak już w 9i i 10g – i to bez PL/SQL’a, WM_CONCAT i zapytań hierarchicznych. Tylko czysty SQL i standardowo dostępne funkcje agregujące 🙂 Czytaj dalej

Posted in Oracle SQL Zaawansowany | Tagged , , , , , , , , , , | Leave a comment

Dynamiczna liczba kolumn w tabelach przestawnych (pivot query) Oracle 10g i 11g

Tabele przestawne w Oracle 10g i 11g mają jedną wadę – wymagana jest znajomość liczby kolumn i wartości jakie trafią do sekcji kolumn. Oracle musi z góry wiedzieć ile kolumn (i jakiego typu) zwróci. Jest to problem, bo często my nie znamy tych wartości z góry. Da się go jednak ominąć. Czytaj więcej

Posted in Oracle SQL Zaawansowany, SQL | Tagged , , , , | Leave a comment