Oracle
mamy dwa programy do tego celu EXP –
do eksportowania danych, oraz IMP – do
ich importowania. Przy
ich
użyciu możemy eksportować i importować :
-
całą bazę
-
wybrany schemat
-
wybrane tabele
Eksport
całej bazy danych
Kod:
EXP
USERID=system/tajne_haslo FILE='c:\kopia_bazy\calosc.dat'
LOG='c:\kopia_bazy\calosc.log'
FULL=Y
To,
co następuje po userid to
nazwa użytkownika łamana przez hasło. W tym wypadku musimy to
zrobić jako system, ponieważ jako zwykły użytkownik nie mamy
dostępu do całej bazy (a całą chcemy eksportować). Po file
podajemy nazwę pliku do którego zostanie
wrzucona zawartość bazy. Plik stworzy się sam, ale struktura
katalogów musi zostać przez nas uprzednio stworzona. Po log
podajemy plik do którego mają być zrzucane
logi. Podawanie tego nie jest obowiązkowe. Opcja Full=y
nakazuje eksport całej bazy. Jeśli jej nie
podamy, musimy wyeksportować schemat, albo tabelę, ale i tak musimy
określić które.
Eksport
całego schematu
Kod:
EXP
USERID=hr/hr FILE='c:\kopia_bazy\schemat.dat'
LOG='c:\kopia_bazy\schemat.log' OWNER=HR
Parametry
userid, file,
log oznaczą to samo
co poprzednio. Eksportujemy jako user hr swój własny schemat.
Oczywiście możemy eksportować również schematy innych userów,
ale musimy do tego być zalogowany jako user system (albo user który
jest ownerem schematu). Poza tym zamiast "full=y"
pojawiło się "owner=hr",
co oznacza że wyeksportowany ma zostać cały schemat usera hr.
Możemy
zrobić również eksport schematu na innym komputerze. Dodajemy
wtedy „@adres_ip” w userid:
EXP
USERID@adres_ip=hr/hr FILE='c:\kopia_bazy\schemat.dat'
LOG='c:\kopia_bazy\schemat.log'
OWNER=HR
Eksport
wybranych tabel
Możemy
chcieć też zrobić sobie kopię zapasową tylko kilku tabel. Do
tego celu w miejsce wcześniejszego full=y
czy
owner=hr wpisujemy np.
tables=employees, departments :
EXP
USERID=hr/hr FILE='c:\kopia_bazy\schemat.dat'
LOG='c:\kopia_bazy\schemat.log'
TABLES=employees,
departments
Import
danych
Kiedy
wykonamy eksport bazy mamy możliwość przywrócenia jej z powrotem,
lub przeniesienia/skopiowania jej
na
inny serwer. Do tego użyjemy programu IMP.
Import
całej bazy
Kod:
IMP
USERID=system/tajne_haslo FILE='c:\kopia_bazy\calosc.dat'
LOG='c:\kopia_bazy\calosc.log' FULL=Y
DESTROY=Y
Parametr
userid - oznacza to
samo co w exp, kiedy
importujemy całość bazy musimy być zalogowani jako user system.
File to plik z
wcześniejszego eksportu danych, log tak
jak wcześniej. Full=y ponieważ
importujemy całość, destroy=y oznacza,
że jeśli istnieje już obiekt w bazie o takiej nazwie to zostanie
skasowany i nadpisany. Jeśli tego nie dodamy, to w takiej sytuacji
będziemy dostawali zapytanie czy chcemy wprowadzić zmiany (możemy
zamiast tego dodać ignore=y,
wtedy nie będzie nadpisywał i kasował zmian).
Import
schematu
Importować
możemy zawartość schematu nie tylko z powrotem do schematu usera z
którego zostały dane
wyciągnięte,
ale też możemy je wstawić innemu userowi. Dlatego przy imporcie
nie ma już 'owner=hr',
ale za to
jest
'touser=hr'
określający do schematu jakiego usera mają dane zostać wrzucone,
oraz 'fromuser=hr'
czyli
schemat
jakiego usera może być wciągnięty (bo jeżeli importujemy jakiś
schemat z eksportu całej bazy, mamy tam
bardzo
wiele schematów i musimy któryś wybrać).
IMP
USERID=hr/hr FILE='c:\kopia_bazy\schemat.dat' fromuser=hr touser=hr
destroy=y
Możemy
tutaj też dodać LOG='c:\kopia_bazy\schemat.log'
jak przy eksporcie, ale nie jest to
konieczne.
Import
poszczególnych tabel
Podobnie
jak przy imporcie schematu wprowadzamy fromuser
i touser -
w tym względzie działa to tak samo.
Wybieramy
też tabele które chcemy zaimportować.
Kod:
IMP
USERID=hr/hr FILE='c:\kopia_bazy\tabele.dat' FROMUSER=hr TOUSER=hr
TABLES=EMPLOYEES
!!
Musimy uważać z importem, bo Oracle nadpisuje tabele importowane
bez żadnej informacji.
O ile export na oracle 10g i kliencie 10g udał się bez problemu na system full=y to import na systemie na takiej samej wersji oracle ale na innym serwerze powoduje całą masę błędów, łącznie z brakiem użytkowników. Ma ktoś jakiś pomysł?
OdpowiedzUsuńważne info
OdpowiedzUsuń