W Oracle można podejrzeć plan wykonania komendy SQL na 2 sposoby:
Warto pamiętać, że EXPLAIN PLAN FOR pokazuje hipotetyczny plan wykonania. Bazuje on, oczywiście na statystykach i metadanych odczytanych z bazy danych. Jest bardzo prawdopodobny, ale nigdy nie został wykonany.
W V$SQL_PLAN, dla odmiany, znajdują się plany wykonania faktycznie użyte do wykonania komendy SQL.
Kiedy ta różnica jest najbardziej istotna ? Wtedy kiedy używamy zmiennych wiązanych. Optymalizator wie, wg jakich kolumn wynik komendy SQL będzie ograniczany. Ale nie zna wartości, które będą podstawione pod zmienne wiązane. W związku z tym nie może, ze 100% trafnością, zdecydować o użyciu indeksu lub jego nie używaniu.
Dopiero faktyczne wykonanie komendy SQL z podstawionymi pod zmienne wartościami spowoduje wygenerowanie i wykonanie optymalnego planu. Będzie on wtedy dostępny w V$SQL_PLAN.
W przypadku systemów hurtownianych, gdzie częstotliwość komend SQL jest stosunkowo niska, używanie zmiennych wiązanych nie zawsze wiąże się ze wzrostem wydajności. O tyle w systemach OLTP używanie zmiennych wiązanych bardzo wydajność poprawia.
Do uzyskania raportu o planie wykonania służy pakiet DBMS_XPLAN i jego dwie podstawowe funkcje:
Można ich użyć w, na przykład, taki sposób:
select * from table(dbms_xplan.display);
Pakiet DBMS_XPLAN dysponuje znacznie większymi możliwościami niż, jedynie, powyższe. Oprócz wymienionych źródeł może sięgać, również po plany wykonania do:
Czego Ty używasz do generowania planów wykonania ?
Cześć,
Dzisiaj opublikowałem kurs dla początkujących o tym czym jest w SQL JOIN
Wpis zdecydowanie dla początkujących w SQL ponieważ przedstawiam składnię łączenia tabel oraz opisuję podstawy działania :)
Dajcie znać czy nie za dużo opisów nawet jak na kurs dla początkujących z SQL :)
#sql #oracle #blog #programowanie #naukaprogramowania #oracledev #kurs #szkolenie
Oracle ma Database Control podobnie jak MySQL ma phpMyAdmin, a PostgreSQL ma pgAdmin. Łatwy w instalacji, przyjazny w użyciu i z intuicyjnym interfejsem :-)
Instalacja Database Control:
emca -config dbcontrol db -repos create
#database #rdbms #oracle #mysql #postgresql #dba #backend #dba4dev #marcinbadtke
Noworoczne życzenia -
Pomyślności w 2021 roku ! Coby optymalizator zawsze wybierał optymalny plan dla Waszych SQLi, bazy zawsze miały dość miejsca na dane, a log transakcyjny nigdy się nie zapychał :-)
#database #rdbms #oracle #mysql #postgresql #sqlserver #sql #plsql #backend #dba4dev #marcinbadtke
UNDO raps:
- najnowsze nagranie z naszego studia. Tym razem o UNDO w #Oracle #database.
Coby z dobrym bitem wejść w nowy rok :-)
Szczerze to trochę dziwne, to tak jakby rapować o wymianie oleju w samochodzie, albo czyszczeniu rur, ale żeby nie było, że jestem hejterem to dałem łapkę w górę na YT.
Jak odtworzyć spfile - plik konfiguracyjny instancji bazy danych Oracle ?
Instancja bazy danych Oracle może współpracować z plikiem konfiguracyjnym w postaci tekstowej: pfile oraz w postaci binarnej: spfile. Tylko plik binarny - spfile może być automatycznie backup'owany przez RMAN'a. Scenariusze odtworzenia z automatycznego backup'u:
Aby móc korzystać z RMAN'a musimy mieć działającą instancję Oracle. UWAGA: nie instancję bazy danych. Chodzi jedynie o procesy i struktury pamięci. Bez danych ani tego co pamiętamy o naszej wyjątkowej konfiguracji. Wystarczy uruchomienie instancji z podstawową konfiguracją i zmienną ORACLE_SID ustawioną na nazwę bazy danych jaką chcemy odtwarzać. Dzięki temu mamy dostęp do funkcjonalności RMAN'a. Innymi słowy startujemy instancję bez montowania bazy danych: 'startup nomount
'. DYGRESJA: montowanie bazy danych to otwarcie pliku kontrolnego. A ten nie jest jeszcze dostępny.
Aby RMAN wiedział, spfile której instancji ma odtworzyć, należy najpierw ustawić wartość DBID w sesji rman'a komendą 'set DBID
'. Dlatego warto pamiętać jakie DBID mają nasze bazy danych ;-) Następnie komendą 'restore spfile from autobackup
' odtwarzamy spfile z najnowszej dostępnej kopii. DYGRESJA: ustawienie DBID potrzebne jest RMAN'owi aby znaleźć odpowiedni backup piece - plik z backup'em. O backup piece mowa w:
. Informacje o backup'ach przechowywane są w pliku kontrolnym, a ten jest niedostępny. RMAN wykorzystuje, więc konwencję nazewniczą automatycznych backup'ów w celu znalezienia właściwego. Kluczowym fragmentem nazwy takiego pliku backup'u jest DBID.
Początek jak w punkcie #1 - trzeba uruchomić tymczasową instancję aby móc korzystać z funkcjonalności RMAN'a. Z jedną różnicą - w tymczasowym pliku konfiguracyjnym trzeba wskazać na FRA w którym znajdują się backup'y pliku kontrolnego.
Następnie wystarczy komenda 'restore spfile from autobackup
' i RMAN znajdzie i odtworzy dla nas najświeższy spfile.
Co to backup piece:
. Podobnie jak w punkcie #1 trzeba wystartować instancję Oracle. Podobnie trzeba ustawić DBID komendą 'set DBID
'. Tym razem składnia komendy 'restore
', jednak wskazuje konkretną nazwę pliku z backup'em. Nazwę backup piece. Np. restore spfile from '/ora_backup/C-1029394857-20201212-00';
. Dostępne od wersji 10g.
Początek jak w punkcie #2. Różnica taka, że zamiast wskazywania FRA, w tymczasowym pliku konfiguracyjnym, musimy podłączyć się rman'em oprócz bazy target, również do recovery catalog. Dalej równie prosto: 'restore spfile from autobackup
'.
Nie trzeba startować instancji bo działa. Plik kontrolny jest dostępny, więc RMAN wie gdzie znaleźć backup. Wtedy wystarczy komenda: restore spfile to pfile '/tmp from autobackup';
. Należy pamiętać, że tak odtworzony plik konfiguracyjny jest w postaci tekstowej - inaczej jak spfile, który jest w binarnej.
Jeśli utracie uległa cała baza danych to następnym krokiem jest odtworzenie z backup'u pliku kontrolnego (control file). W nim zawarte są informacje o lokalizacji plików bazodanowych i ich kopiach w backup'ach.
Keywords: #database #oracle #rman #backup #restore #backend #rdbms #dba4dev #marcinbadtke
@Anna Lisik: Swoją drogą jest to ciekawa sprawa. RMAN ma olbrzymie możliwości definiowania domyślnych ustawień (gdzie robić backup, w jaki sposób i i jak długo go przechowywać) + możliwość trzymania skryptów w recovery catalog. A wszystkie skrypty do backup'u jakie widziałem były trzymane w systemie operacyjnym i miały po kilkadziesiąt linii samych komend RMAN'a. Do tego dochodził narzut na komendy shell'a. Ciekawe dlaczego ? Przywiązanie adminów do 'skryptowienia' ? Trudność w zarządzaniu parametrami RMAN'a ? ... ?
@Marcin Badtke: Przywiązanie adminów do 'skryptowienia'
.... może nie tyle przywiązanie
co wygoda: tworzysz skrypt raz a później po prostu odpalasz skrypt i gotowe....... czy to ręcznie czy to cronem: beaz znaczenia...... jest takie powiedzonko ( trochę z przekąsem, ale dużo prawdy w nim jest) :: administratorzy są leniwivw sensie uwielbiają automatyzację
........
Czasami jak nie ma dostępu do webowego klienta na hostingu to używam https://www.adminer.org/ daje radę.