Jako że obecnie mam za zadanie migrację z platformy AIX na Exadata nadarzyła się okazja do sprawdzenia importu impdp Data Pump przy użyciu tylko sieci z użyciem parametru NETWORK_LINK.
W tym projekcie używam klasycznego podejścia, czyli eksportu expdp danych na dysk, potem transferu danych z wykorzystaniem sieci, żeby na końcu zrobić import impdp do bazy danych. Jest to metoda dosyć dobra i mało skomplikowana.
O tym co należy sprawdzić podczas takiej migracji w pisałem tutaj,
OK, to w takim razie, do czego mi jest potrzebny import z wykorzystaniem sieci i NETWORK_LINK ?
Już wyjaśniam. Trafiłem na bazę, która ma rozmiar 6TB i przy podejściu, które dotychczas stosowałem, pojawiło się kilka problemów:
- Brak miejsca na dysku do przechowywania plików dump.
- Ograniczenie okna migracji do 24 godzin.
Dlatego migrację podzieliłem na 3 etapy:
- Migracja 10 największych tabel i ograniczenie klauzulą QUERY do danych, które się nie zmieniają
- Wykonanie klasycznego eksportu i importu w oknie migracyjnym danych (poza wcześniejszymi 10 największymi tabelami).
- Na końcu dociągnięcie brakujących danych i zakończenie migracji.
Plan już jest, ale pojawiło się pytanie. Czy import z użyciem NETWORK_LINK będzie najszybszym rozwiązaniem?
Test dla pojedynczej tabeli z parametrem NETWORK_LINK.
- Import z użyciem parametru NETWORK_LINK:
Przygotowałem DB_LINK na bazie docelowej:
CREATE DATABASE LINK IMPNET USING 'SRV1:1521/SOURCEDB';
Następnie uruchomiłem import:
impdp tables=TESTUSER.TESTTABLE network_link=IMPNET DIRECTORY=IMP logfile=ImpNet_TESTTABLE.log
Czas operacji to 52 minuty, danych było 74,5 GB, w trakcie importu zostały utworzone indeksy dla tabeli.
2. A teraz kolej na klasyczne podejście:
Usunąłem stare dane i rozpocząłem eksport:
expdp tables=TESTUSER.TESTTABLE DIRECTORY=IMP ogfile=export_TESTTABLE.log parallel=2 dumpfile=TESTTABLE_%U.dmpfilesize=10G
Czasu eksportu to 10 minut i 30 sekund.
Czas transferu po sieci wyszedł mi 16 minut i 30 sekund
A import wyglądał tak:
impdp DIRECTORY=IMP dumpfile=TESTTABLE_%U.dmp logfile=import_TESTTABLE.log parallel=2
I zakończył się czasem: 28 minut.
Co dało całkowity czas 55 minut.
Podsumowanie
Z pomierzonych czasów wynika, że użycie tylko sieci w moim przypadku trwało krócej, wymagało mniej pracy i oraz nie wymagało dużych ilości miejsca na dysku. Taka metoda może okazać się szybsza i niewymagająca tylu zasobów co klasyczny eksport expdp i import impdb.
Trzeba jeszcze pamiętać o ograniczeniach importu przez sieć:
- Brak obsługiwanych danych typu LONG
- Różnica w wersji bazy danych nie może być większa niż 2. Czyli do bazy 12c nie możemy zaimportować tym sposobem danych z bazy 9i.
- Import nie można zastosować wielowątkowości.