Rozliczenie obciążenia serwera Oracle

Ostatnio w jednej z firm dostałem zagadnienie do przemyślenia…
Odkąd spółki należące do jednej korporacji zaczęły rozliczać się między sobą i działami za korzystanie z usług powstał problem jak X spółek pracujących na jednej bazie, jednym serwerze obciążyć sprawiedliwie za zużywane zasoby ….

Intuicyjnie, zacząłem się zastanawiać, czy informacje tego typu są dostępne gdzieś w bazie…

Chwila namysłu i stwierdzenie, że to co nawet znajdziemy w ASH (Active Session History) nie da nam odpowiedzi na nurtujące nas pytania …

Jak najlepiej zatem podejść do tematu ? Dla mnie odpowiedź jest zawsze jedna: „Najprościej jak się da !”

Problem rozbity na części pierwsze wygląda następująco:
1. Podzielić użytkowników według przynależności do firm
2. Wybrać statystykę mówiącą o „zużywaniu” serwera przez sesję
3. Stworzyć mechanizmy zbierające i agregujące dane
4. Zaobserwować czy samo monitorowanie nie obciąża zbytnio serwera
5. Zaprezentować dane w sposób wygodny graficznie
Continue reading

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

Kurs Oracle SQL online. Funkcje wbudowane

W tej lekcji pokażemy często wykorzystywane funkcje wbudowane – zarówno tekstowe jak i numeryczne. Czyli jak wybrać inicjały, jak zaokrąglić liczbę, jak poprawić wielkość liter. Każdą funkcję pokażemy wraz z przykładem użycia.

Zapraszam do lektury!

Czytaj dalej!

Posted in Oracle SQL, Oracle SQL Podstawy, SQL | Tagged , , , | 1 Comment

Oracle i porównywanie szybkości zapytań

Witam,

Chciałbym opisać często poruszany problem jakim jest „porównanie szybkości zapytań”… a dokładniej porównaniem wydajności różnych zapytań robiących coś podobnego na takich samych danych w danym środowisku. Z pytaniem o to zagadnienie spotykam się w swojej pracy średnio raz na kilka miesięcy (sporo biorąc pod uwagę ilość osób z którymi współpracuję). Zazwyczaj zaczyna się od wypowiedzi „uruchamiam raz i jest wolno a za drugim razem jest bardzo szybko”.

Szybka odpowiedź na końcu – lecz zachęcam do przeczytania całości wpisu. Czytaj dalej

Posted in Oracle, Oracle SQL, Oracle SQL Tuning, Oracle SQL Zaawansowany | Tagged , , | 4 Comments

Pierwszy, drugi, n-ty i ostatni rekord (first, last aggregate) podczas grupowania w PostgreSQL

Częstym problemem jaki należy rozwiązać jest uzyskanie rekordu pierwszego, drugiego lub n-ego w trakcie grupowania. Problem nie jest trywialny, a istnieje szereg metod by sobie z nim poradzić. Same wbudowane funkcje agregujące to za mało, ponieważ oprócz braku funkcji first i last musimy mieć także coś, co nada porządek podczas grupowania (który jest potrzebny, aby mówić o „pierwszym” rekordzie). Pół biedy jak mamy pole LP, ale jak sobie radzić gdy nie mamy? Da się jednak uzyskać pożądany efekt z wykorzystaniem funkcji analitycznych, a z wykorzystaniem dodatkowego warunku uzyskać wynik jak przy grupowaniu. Czytaj dalej

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

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 Zaawansowany | 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 Zaawansowany | 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 , , , , | 1 Comment

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 Zaawansowany | Tagged , , , , , , | Leave a comment