Szkolenie Zaawansowany Oracle SQL - TERMIN GWARANTOWANY - 28.06.2027
Szkolenie Zaawansowany Oracle SQL: TERMIN GWARANTOWANY 28-30.06.2027
Szkolenie online na żywo z trenerem, 3 dni, w godz. 9:00-16:00. Termin gwarantowany odbędzie się na pewno, nawet przy jednym uczestniku. Prowadzi: Monika Lewandowska.
Szczegóły szkolenia, program i zapisy: Szkolenie Zaawansowany Oracle SQL na jsystems.pl
Wszystkie terminy gwarantowane JSystems: lista terminów gwarantowanych
W skrócie
Raport z rankingami i sumami narastającymi rozrasta się do kilku zapytań i arkusza, błędny UPDATE oznacza odtwarzanie danych z kopii zapasowej, a wolne zapytanie spowalnia cały system. Po tym szkoleniu taki raport piszesz jednym zapytaniem SQL, błędną zmianę cofasz w Oracle bez sięgania po kopię, a przyczynę wolnego działania odczytujesz z planu wykonania i usuwasz. Przechodzisz od zapytań hierarchicznych i funkcji analitycznych, przez PIVOT, MERGE i Flashback, po indeksy i strojenie zapytań.
Co potrafisz po szkoleniu
- Rozwijasz dowolną hierarchię jednym zapytaniem - Strukturę organizacyjną, drzewo kategorii produktów czy listę materiałową wyrobu wyświetlasz z poziomami i pełną ścieżką od góry drzewa, bez pętli w kodzie i bez ręcznego składania wyników, a zapętlone dane wykrywasz i obsługujesz w trakcie zapytania.
- Liczysz rankingi, trendy i sumy narastające prosto w bazie - Wskazujesz najlepszych klientów w każdym regionie, porównujesz wyniki z poprzednim okresem, liczysz sumy narastające od początku roku i średnie kroczące, a szczegóły zostają w wyniku obok podsumowań. Omijasz przy tym pułapki, przez które takie obliczenia potrafią zwracać błędne wyniki bez żadnego ostrzeżenia.
- Pilnujesz jakości danych tekstowych - Sprawdzasz poprawność NIP, PESEL, adresów e-mail i numerów telefonów prosto w zapytaniu, wydobywasz potrzebne fragmenty z opisów i notatek oraz porządkujesz niejednolite zapisy przed raportem albo importem.
- Cofasz błędne zmiany w danych bez odtwarzania kopii zapasowej - Po pomyłkowym UPDATE albo DELETE sprawdzasz, jak dane wyglądały wcześniej, śledzisz historię zmian pojedynczego wiersza, przywracasz całą tabelę do stanu sprzed pomyłki i odzyskujesz omyłkowo usuniętą tabelę. Znasz też granice tego mechanizmu, więc wiesz, w jakich sytuacjach zadziała.
- Sprawnie ładujesz dane i panujesz nad równoczesną pracą użytkowników - Synchronizujesz tabele jednym poleceniem, które w jednym kroku dodaje nowe wiersze, aktualizuje istniejące i usuwa zbędne, co upraszcza i przyspiesza ładowanie hurtowni. Wiesz, co widzą użytkownicy pracujący na tych samych danych w tym samym czasie, i wykrywasz blokady oraz zakleszczenia wraz z ich źródłem.
- Budujesz kompletne raporty jednym zapytaniem - Sumy częściowe, podsumowania na każdym poziomie i sumę całkowitą dostajesz w jednym wyniku z czytelnymi etykietami, dane obracasz w tabelę krzyżową, na przykład z miesiącami w kolumnach i produktami w wierszach, a warunkowe wyliczenia i zamianę kodów na czytelne nazwy robisz w samym SQL.
- Udostępniasz dane bezpiecznie i szybko - Przygotowujesz widoki, które pokazują użytkownikom tylko dozwolone wiersze i kolumny, nadajesz uprawnienia i role dokładnie w potrzebnym zakresie, a ciężkie zestawienia przeliczasz z wyprzedzeniem w widokach zmaterializowanych, z których baza sama korzysta, gdy zapytanie tego wymaga.
- Przyspieszasz wolne zapytania - Z planu wykonania odczytujesz, dlaczego zapytanie działa wolno, dobierasz indeksy, przepisujesz zapytanie tak, by baza wybrała szybszą drogę, i śledzisz, co naprawdę dzieje się podczas jego wykonania. Utrwalasz dobre plany, żeby zapytanie nie zwolniło po zmianach w bazie.
Jak pracujemy
Składnię przechodzisz na praktycznych zastosowaniach: od struktur organizacyjnych i raportów finansowych po synchronizację tabel w procesach ETL i walidację danych tekstowych. Szkolenie prowadzi Monika Lewandowska, projektantka i programistka baz danych Oracle oraz Oracle ACE Pro, która specjalizuje się w wydajności i optymalizacji SQL.
Dla kogo
Dla programistów baz danych, analityków, twórców raportów i osób pracujących z hurtowniami danych, którzy znają podstawy SQL i chcą wykorzystać pełnię możliwości bazy Oracle. Wymagania wstępne: swobodne pisanie zapytań SELECT ze złączeniami, grupowaniem i podzapytaniami.
Co zyskujesz
Umiejętność samodzielnego pisania złożonych zapytań analitycznych w Oracle, cofania błędnych zmian w danych bez sięgania po kopię zapasową i diagnozowania wolnych zapytań na podstawie planu wykonania. Termin gwarantowany odbywa się na pewno, nie odwołamy go z powodu małej grupy. Otrzymujesz też imienny certyfikat ukończenia szkolenia.
Zarezerwuj miejsce i wykorzystaj pełnię możliwości SQL w Oracle: od zapytań hierarchicznych i funkcji analitycznych po Flashback i strojenie zapytań.
Sprawdź, czy w Twoim przypadku dostępne jest finansowanie szkolenia ze środków BUR/KFS. Dostępność finansowania zależy od warunków danego programu oraz decyzji właściwej instytucji. Więcej informacji: https://jsystems.pl/dofinansowanie/
Prowadzący szkolenie
Monika Lewandowska to doświadczona projektantka i programistka baz danych Oracle, Oracle ACE Pro i członkini społeczności Symposium 42. Swoją przygodę z technologią zaczęła od Oracle 7 i od tamtej pory rozwija swoją pasję do wydajności i optymalizacji.
Jako prelegentka polskich i międzynarodowych konferencji (POUG, DOAG, UKOUG, OUGN, SIOUG, RMOUG i wiele innych) pokazuje, że SQL może być nie tylko poprawny - ale naprawdę szybki.
Ma wieloletnie doświadczenie w bankowości, telco i systemach kartowych. W pracy skupia się na zrozumieniu potrzeb klienta, prostych i przejrzystych rozwiązaniach oraz najwyższej jakości kodzie, wspieranym testami jednostkowymi (utPLSQL, Quest Code Tester).
Pracowała jako programistka, projektantka, analityk i lider techniczny - od zbierania wymagań po wdrożenia.
Specjalizuje się w wydajności: tam, gdzie inni mówią "działa", ona pyta "dlaczego tak wolno?" i znajduje rozwiązania, które realnie przyspieszają systemy.
Monika łączy pasję do wydajności z miłością do dalekich wypraw motocyklowych. Wyznaje zasadę, że życie (podobnie jak bazy danych) najlepiej smakuje przy dużej prędkości.
Program szkolenia
- Zapytania hierarchiczne
- Modelowanie relacji rodzic-dziecko w jednej tabeli
- Składnia START WITH i CONNECT BY (PRIOR)
- Pseudokolumny: LEVEL, CONNECT_BY_ROOT, CONNECT_BY_ISLEAF
- Funkcja SYS_CONNECT_BY_PATH - budowa pełnej ścieżki w drzewie
- Sortowanie rodzeństwa (ORDER SIBLINGS BY)
- Wykrywanie i obsługa cykli (NOCYCLE, CONNECT_BY_ISCYCLE)
- Filtrowanie hierarchii - różnica między WHERE a warunkiem CONNECT BY
- Recursive WITH (CTE rekurencyjne) jako alternatywa standardu SQL
- Przypadki użycia: struktury organizacyjne, kategorie produktów, BOM
- Funkcje analityczne (okienkowe)
- Różnica między funkcją agregującą a analityczną
- Składnia OVER, PARTITION BY, ORDER BY
- Definiowanie ramki okna: ROWS vs RANGE, BETWEEN … AND …
- Funkcje rankingu: ROW_NUMBER, RANK, DENSE_RANK, NTILE
- Dostęp do innych wierszy: LAG, LEAD, FIRST_VALUE, LAST_VALUE
- Sumy i średnie kroczące oraz narastające
- Funkcje rozkładu: PERCENT_RANK, CUME_DIST, PERCENTILE_CONT/DISC
- Klauzula KEEP (FIRST/LAST) i agregacje warunkowe
- Najczęstsze pułapki: domyślne ramki, NULL-e w PARTITION BY
- Wyrażenia regularne
- Funkcje: REGEXP_LIKE, REGEXP_INSTR, REGEXP_SUBSTR, REGEXP_REPLACE, REGEXP_COUNT
- Składnia POSIX, metaznaki, klasy znaków, kwantyfikatory
- Grupy przechwytujące i wsteczne referencje
- Modyfikatory: case-insensitive, multiline, dotall
- Walidacja danych (NIP, PESEL, email, telefon)
- Ekstrakcja danych z tekstu nieustrukturyzowanego
- Transakcje i blokady
- ACID w Oracle i poziomy izolacji
- COMMIT, ROLLBACK, SAVEPOINT
- Read consistency i mechanizm UNDO
- Blokady wierszy i tabel (SELECT FOR UPDATE, LOCK TABLE)
- Tryby blokad: SHARE, EXCLUSIVE, ROW SHARE, ROW EXCLUSIVE
- Wykrywanie i obsługa deadlocków
- Diagnostyka: V$LOCK, V$SESSION, DBA_BLOCKERS, DBA_WAITERS
- Transakcje autonomiczne (autonomous transactions)
- Technologia Flashback
- Mechanizm UNDO i okno retencji (UNDO_RETENTION)
- Flashback Query - AS OF TIMESTAMP, AS OF SCN
- Flashback Versions Query - historia zmian wiersza w czasie
- Flashback Table - przywrócenie całej tabeli do stanu sprzed N minut
- Flashback Drop i Recycle Bin (PURGE, FLASHBACK TABLE TO BEFORE DROP)
- Ograniczenia (DDL, retencja UNDO, brak supplemental log)
- Scenariusze: cofanie błędnych UPDATE/DELETE bez restore z backupu
- Instrukcja MERGE (UPSERT)
- Składnia: USING, ON, WHEN MATCHED THEN UPDATE, WHEN NOT MATCHED THEN INSERT
- WHEN MATCHED THEN DELETE - usuwanie w jednym kroku
- Warunkowe operacje z dodatkowym WHERE w klauzulach
- Wydajność MERGE vs sekwencja IF EXISTS + UPDATE/INSERT
- Synchronizacja tabel stage do target w procesach ETL
- Konflikty unikalności i obsługa błędów
- Operator DECODE
- Składnia i porównanie z CASE
- Traktowanie NULL przez DECODE (DECODE uznaje NULL = NULL)
- Zastosowanie do prostej translacji wartości w SELECT
- Kiedy DECODE jest czytelniejszy, a kiedy lepiej sięgnąć po CASE
- Operator CASE
- CASE proste (simple) i wyszukiwane (searched)
- CASE w SELECT, WHERE, ORDER BY i GROUP BY
- CASE z agregacjami - tabele krzyżowe ręcznie
- Zagnieżdżone CASE i czytelność kodu
- Zastępowanie złożonych IF-THEN-ELSE z PL/SQL
- Operatory EXISTS i NOT EXISTS
- Semantyka EXISTS vs IN
- Pułapka NOT IN przy wartościach NULL w podzapytaniu
- Podzapytania skorelowane (correlated subqueries)
- Porównanie wydajności: EXISTS vs JOIN vs IN
- ANTI JOIN i SEMI JOIN w planach wykonania
- Rozszerzone agregacje
- ROLLUP - subtotale i grand total w jednym zapytaniu
- CUBE - wszystkie możliwe kombinacje agregatów (raporty OLAP)
- GROUPING SETS - precyzyjnie wybrane poziomy grupowania
- Funkcje GROUPING() i GROUPING_ID() - identyfikacja poziomu agregacji
- Zastępowanie NULL czytelnymi etykietami w raportach
- Zastosowania w raportach finansowych i hurtowniach danych
- Zarządzanie uprawnieniami do obiektów
- GRANT i REVOKE - uprawnienia obiektowe i systemowe
- Role - tworzenie, hierarchia, role domyślne i nie-domyślne
- WITH GRANT OPTION i WITH ADMIN OPTION
- Uprawnienia kolumnowe (column-level privileges)
- Słowniki: ROLE_PRIVS, USER_TAB_PRIVS, USER_SYS_PRIVS, SESSION_ROLES
- Najczęstsze błędy w nadawaniu uprawnień (over-privileged users)
- Widoki
- Widoki proste (aktualizowalne) i złożone
- WITH CHECK OPTION i WITH READ ONLY
- Widoki jako warstwa bezpieczeństwa (row-level security)
- Inline views i subquery factoring (klauzula WITH … AS)
- Widoki a wydajność - czy widok spowalnia zapytanie?
- Widoki edytowalne z INSTEAD OF triggers
- Widoki zmaterializowane
- Różnica między widokiem a materialized view
- Strategie odświeżania: ON COMMIT, ON DEMAND, harmonogram (DBMS_SCHEDULER)
- Tryby refresh: COMPLETE, FAST, FORCE
- Materialized View Logs - warunek FAST refresh
- Query Rewrite - przezroczyste przekierowanie zapytań do widoku
- Zastosowanie w hurtowniach danych i raportowaniu BI
- Sekwencje
- Tworzenie sekwencji - parametry CACHE, NOCACHE, INCREMENT, CYCLE, ORDER
- NEXTVAL i CURRVAL - kolejność wywołań
- Sekwencje vs kolumny IDENTITY (Oracle 12c+)
- Luki w numeracji - przyczyny (cache, rollback, RAC) i obsługa
- Resetowanie i modyfikacja sekwencji w locie
- Sekwencje w środowiskach klastrowych (RAC)
- Synonimy
- Synonimy prywatne (CREATE SYNONYM)
- Synonimy publiczne (CREATE PUBLIC SYNONYM)
- Zastosowania: ukrywanie schematów, dostęp przez DB links, migracje
- Konflikty nazw i kolejność rozwiązywania (private → public → schema)
- Synonimy a uprawnienia
- Tabele przestawne PIVOT i UNPIVOT
- Klasyczne podejście CASE WHEN … SUM() vs PIVOT
- Składnia PIVOT z listą wartości statycznych
- PIVOT z klauzulą XML - dynamiczne kolumny
- UNPIVOT - transformacja kolumn w wiersze
- Tabele krzyżowe w raportach sprzedażowych i finansowych
- Tabele tymczasowe
- Global Temporary Tables (GTT) - definicja stała, dane sesyjne
- Zakres danych: ON COMMIT DELETE ROWS vs PRESERVE ROWS
- Private Temporary Tables (Oracle 18c+)
- GTT vs Common Table Expressions vs widoki inline
- Zastosowania w złożonych procesach ETL
- Ograniczenia (brak transakcji rozproszonych, statystyki)
- Linki bazodanowe (Database Links)
- Tworzenie połączenia do innej bazy Oracle (CREATE DATABASE LINK)
- Składnia tabela@dblink, widoki nad linkami
- Linki publiczne i prywatne, current user vs fixed user
- Bezpieczeństwo i przechowywanie haseł (dba_db_links)
- Optymalizacja zapytań rozproszonych (DRIVING_SITE, push predicates)
- Ograniczenia: typy LOB, transakcje rozproszone, 2PC
- Indeksy
- Typy indeksów: B-tree, Bitmap, Function-Based, Reverse, Compressed
- Indeksy złożone - wpływ kolejności kolumn na użycie
- Indeksy unikalne i pokrywające (index-only scan)
- Indeksy partycjonowane: lokalne vs globalne
- Stan UNUSABLE i jego konsekwencje
- Kiedy indeks szkodzi: częste DML, mała tabela, niska selektywność
- Statystyki indeksów (DBMS_STATS, histogramy)
- Monitorowanie użycia indeksów (V$OBJECT_USAGE)
- Analiza planów wykonania
- EXPLAIN PLAN i tabela PLAN_TABLE
- DBMS_XPLAN.DISPLAY, DISPLAY_CURSOR, DISPLAY_AWR
- AUTOTRACE w SQL*Plus i SQL Developer
- Czytanie planu: kolejność operacji, koszt, kardynalność, czas
- Operacje: FULL SCAN, INDEX RANGE/UNIQUE SCAN, HASH JOIN, NESTED LOOP, MERGE JOIN
- Dlaczego CBO wybiera "zły" plan - statystyki, histogramy, bind peeking
- Plany historyczne: V$SQL, V$SQL_PLAN, AWR
- Elementy tuningu SQL
- Hints (wskazówki optymalizatora): USE_HASH, USE_NL, INDEX, FULL, PARALLEL, LEADING
- Przepisywanie zapytań pod plan: EXISTS zamiast IN, JOIN zamiast podzapytania skorelowanego
- SQL Trace i tkprof - analiza śladu wykonania
- V$SESSION_LONGOPS - śledzenie długich operacji
- SQL Plan Baselines i stabilność planów po zmianach
- Bind variable peeking i Adaptive Cursor Sharing
- Wpływ statystyk i histogramów na wybór planu
- Diagnostyka wąskich gardeł: I/O, CPU, buffer cache, latch contention
Przeczytaj na naszym blogu
- Nowości w Oracle po 18c - co przyniosły 19c, 21c, 23ai i 26ai (z przykładami kodu)
- AI w bazie danych Oracle - Vector Search, Select AI i Machine Learning w wydaniu 23ai/26ai
- n8n jako narzędzie integracji baz danych: Oracle do PostgreSQL i MS SQL bez pisania ETL-a
- Kurs administracji PostgreSQL
Zapisz się na termin gwarantowany: Szkolenie Zaawansowany Oracle SQL | wszystkie terminy gwarantowane
Pytania: [email protected], tel. 22 299 53 69
