Ładowanie i reorganizacja danych
Cele Ładowanie danych za pomocą wstawiania ścieżką bezpośrednią Ładowanie danych do tabel Oracle za pomocą ścieżki konwencjonalnej oraz bezpośredniej SQL*Loader Reorganizacja danych przy pomocy eksportu i importu
Inne aplikacje Przegląd SQL*Loader Export Oracle database Import Oracle database Wstawianie a ścieżką e bezpośrednią ed ą
Korzystanie z Direct-Load Insert INSERT /*+APPEND */ INTO scott.emp NOLOGGING SELECT * FROM scott.old_emp; Tabela EMP Proces serwera Blok zajęty Wolne miejsca po delete Wskaźnik wysokiej wody (High water mark) Bloki wykorzystane przez wstawiane wiersze
Direct-Load Insert - współbieżnie ALTER SESSION ENABLE PARALLEL DML; INSERT /*+PARALLEL(scott.emp,2) */ INTO scott.emp NOLOGGING SELECT * FROM scott.old_emp; Tabela EMP Proces zależny Proces zależny Blok wykorzystany Wolne miejsca po delete High water mark Segmenty tymczasowe
SQL*Loader Loader Plik kontrolny Pliki danych Plik parametrów (opcjonalny) SQL*Loader Przetwarzanie pól Odrzucone Pominięte Plik wierszy pominiętych (opcjonalny) Log Akceptacja Wybór wiersza Wybrane Serwer Oracle Wstawione Plik złych wierszy Odrzucone Pliki danych
Ładowanie ścieżką konwencjonalną i bezpośrednią Instancja SGA Shared pool Array insert Konwencjonalna Obsługa ł ekstentów Tabela Zachowanie danych Ścieżka bezpośrednia Znacznik Przestrzeń użyta tylko przy ścieżce wysokiej wody konwencjonalnej
Porównanie ładowania ścieżką konwencjonalną i bezpośrednią Ładowanie konwencjonalne Korzysta z COMMITów do zatwierdzenia i zmian Zawsze tworzy informacje do dziennika powtórzeń Wymusza wszystkie więzy Odpala wyzwalacze INSERT Można ładować do tabel w klastrach Inni użytkownicy mogą zmieniać tabelę Ścieżka bezpośrednia Korzysta z data save Informacje do dziennika tylko w specjalnych warunkach Sprawdza tylko primary key, unique oraz NOT NULL Nie odpala wyzwalaczy INS. Nie można ładować do tabel w klastrach Inni użytkownicy nie mogą zmieniać tabeli
Równoległe ładowanie bezpośrednie Segmenty tymczasowe load1.dat load1.ctl load2.dat load2.ctl load3.dat load3.ctl Tabela SQL*Loader SQL*Loader SQL*Loader Loader Wskaźnik wysokiej wody
Korzystanie z SQL*Loader Loader $sqlldr scott/tiger \ > control=ulcase6.ctl \ > log=ulcase6.log direct=true ulcase6.ctl SQL*Loader Tabela EMP ulcase6.log
SQL*Loader: Loader: Pliki wejściowe Plik parametrów Opcje ładowania Plik kontrolny Plik danych Rekordy wejściowe LOAD DATA INFILE 'ulcase6.dat INSERT INTO TABLE emp (empno POSITION(01:04) INTEGER EXTERNAL NULLIF empno=blanks,... )
Zawartość pliku logu Nagłówek Informacje globalne: parametry i nazwy plików Informacje o tabelach: specyfikacje tabel i ich kolumn Informacje o pliku danych: ilość przetworzonych rekordów Informacje o ładowaniu d i do tabel: błędy i pominięcia Statystyki podsumowujące ładowanie
SQL*Loader: Loader: inne pliki wyjściowe Plik złych wierszy Rekordy odrzucone Taki sam format jak pliku danych Plik wierszy pominiętych Rekordy nie spełniające warunku ładowania Taki sam format jak pliku danych
SQL*Loader: Loader: Wskazówki użycia Z pliku parametrów korzystamy do definicji stale używanych opcji linii polecenia Dane w pliku kontrolnym umieszczamy jedynie przy małych, jednorazowych ładowaniach Poprawiamy wydajność poprzez: Alokację odpowiedniej przestrzeni Sortowanie danych według największego indeksu Podając różne pliki dla segmentów tymczasowych przy ładowaniu równoległym
SQL*Loader: Rozwiązywanie ą problemów Zbyt mało miejsca dla tabeli lub indeksu Awaria instancji w czasie ładowania Podanie klazuli SORTED INDEXES gdy dane nie są w zadeklarowanym porządku Znalezienie duplikatów kluczy w indeksach unique - kluczach unique lub primary key - w czasie ładowania ścieżką bezpośrednią Za małe dla wiersza BINDSIZE w ładowaniu ścieżką konwencjonalną Przekroczenie limitów itó na błędy i pominięcia i i
Przenoszenie danych za pomocą ą EXP/IMP Eksport Pliki danych Plik O/S Import
Wykorzystanie y Export i Import Reorganizacja tabel Przeniesienie danych jednego użytkownika do innego schematu Przeniesienie danych między bazami: Z bazy developerskiej do produkcyjnej Z systemu OLTP do hurtowni danych Migracja na inną platformę lub wersję Oracle Powtórzenie testów w czasie tworzenia lub poprawiania aplikacji Wykonanie logicznej kopii zapasowej
Tryby eksportu Tabele Użytkownicy Baza danych Tbl Tabela Indeksy Wyzwalacze Więzy integr. Uprawnienia Metoda analyze Wszystkie obiekty posiadane przez użytkownika z wyjątkiem indeksów i wyzwalaczy na tabelach innych użytkownikówż Wszystkie obiekty bazy danych (poza obiektami użytkownika SYS)
Eksport ścieżką konwencjonalną/bezpośrednią Plik Export zrzutu Bufor ewaluacji Bufor prywatny lub bufor danych Przetwarzanie poleceń SQL Obsługa buforów danych Odczyt bloku bazy danych Bezpośrednia Konwencjonalna
Użycie eksportu $exp scott/tiger tables=(dept,emp) \ > file=emp.dmp p log=exp.log g compress=n \ > direct=y recordlength=32768 emp.dmp Export Tabele DEPT,EMP exp.log
Użycie importu $imp scott/tiger tables=(dept,emp) \ > file=emp.dmp p log=imp.log g ignore=y imp.log emp.dmp Import
Zachowanie importu Porządek importu Tabela Dane Indeksy B-tree więzy integralności, wyzwalacze, indeksy bitmapowe Przestrzeń tabel dla obiektu Jeśli to możliwe, ta sama przestrzeń tabel co w bazie źródłowej Domyślna przestrzeń tabel użytkownika
Wskazówki dla korzystania z Eksportu i Importu Do podania często używanych opcji należy korzystać z pliku parametrów. Z CONSISTENT=Y korzystamy jedynie przy eksporcie małej ilości danych. Nie należy używać COMPRESS=Y jeśli jest wiele usuniętych wierszy. Efektywność można poprawić przez: Przydzielenie dużego bufora W wersjach 7.3.3 i wyżej użycie eksportu ścieżką bezpośrednią
Uwagi dotyczące NLS przy eksporcie i imporcie Export Zestaw znaków klienta eksportu Zestaw znaków bazy danych Import Zestaw znaków klienta importu Możliwe konwersje zestawu znaków
Podsumowanie Korzystanie z insert ścieżką bezpośrednią do kopiowania tabel Korzystanie z SQL*Loader do migracji z innych aplikacji Korzystanie z narzędzi Export i Import do reorganizacji danych