Neues Package für Export/Import in Oracle 10g (dbms_datapump)
Die Oracle Version 10g hat die Export/Import Utilities komplett erneuert. Es werden zwar aus Kompatibilitätsgründen noch die beiden alten Tools EXP und IMP ausgeliefert, aber wohl nicht mehr lange unterstützt.
1. Was bringt nun die neue Schnittstelle
Da diese Schnittstelle im Internet noch nicht besonders gut dokumentiert ist, wollen wir hier näher darauf eingehen:
2. Stolperfallen
Wenn man diese Klippen umschifft hat kann man mit dem Export beginnen...
3. Beispiel-Skript für Tabellen-Export:
Anmelden an der DB:
CONNECT system/manager
Verzeichnisse erstellen:
HOST mkdir C:\oracle\expimp
HOST mkdir C:\oracle\expimp\logs
Directory Einträge anlegen:
CREATE OR REPLACE DIRECTORY expimp AS 'C:\oracle\expimp';
CREATE OR REPLACE DIRECTORY expimp_log AS 'C:\oracle\expimp\logs';
Rechte vergeben:
GRANT READ,WRITE ON DIRECTORY expimp TO system;
Alte Exportdatei(falls vorhanden) löschen:
HOST del C:\oracle\expimp\myexp*.dmp
Alte EXPORT-Verwaltungstabelle löschen sonst kann Job nicht neu angelegt werden:
DROP TABLE system.emp_export;
SET SERVEROUTPUT ON SIZE 1000000
DECLARE
p_dph NUMBER;
BEGIN
p_dph := DBMS_DATAPUMP.open(operation=>'EXPORT',job_mode=>'TABLE',job_name
=>'EMP_EXPORT');
DBMS_DATAPUMP.add_file(handle=>p_dph,filename=>'MYEXP%U.DMP',directory
=> 'EXPIMP',filetype=>1);
DBMS_DATAPUMP.add_file(handle=>p_dph,filename=>'EXP.LOG',directory
=> 'EXPIMP_LOG',filetype=>3);
DBMS_DATAPUMP.metadata_filter(handle => p_dph,name=>'SCHEMA_EXPR',value
=>'IN (''SCOTT'')');
DBMS_DATAPUMP.metadata_filter(handle => p_dph,name=>'NAME_EXPR',value
=>'IN (''EMP'')');
DBMS_DATAPUMP.start_job(p_dph);
DBMS_DATAPUMP.detach(p_dph);
dbms_output.put_line('Export erfolgreich beendet');
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Fehler:'||sqlerrm||' bei Job-ID:'||p_dph);
END;
/
4. Beispiel-Skript für Tabellen-Import :
CONNECT SYSTEM/MANAGER
VARIABLE ret NUMBER
SET SERVEROUTPUT ON SIZE 1000000
DECLARE
p_dph NUMBER;
BEGIN
p_dph := DBMS_DATAPUMP.open(operation=>'IMPORT',job_mode=>'TABLE',job_name
=>'EMP_IMPORT');
DBMS_DATAPUMP.add_file(handle=>p_dph,filename=>'MARCO%U.DMP',directory
=> 'EXPIMP',filetype=>1);
DBMS_DATAPUMP.add_file(handle=>p_dph,filename=>'MARCO_IMP.LOG',directory
=> 'EXPIMP_LOG',filetype=>3);
DBMS_DATAPUMP.set_parameter(handle=> p_dph,name=>'TABLE_EXISTS_ACTION',value
=>'REPLACE');
DBMS_DATAPUMP.start_job(p_dph);
DBMS_DATAPUMP.detach(p_dph);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Fehler:'||sqlerrm||' bei Job-ID:'||p_dph);
END;
/
5. Zusammenfassung
Oracle hat den Anwender ein mächtiges Package mit an die Hand gegeben, aber leider nur dürftig dokumentiert.
Man könnte hier viele Beispiele aufführen, aber dafür haben wir ja ausgiebig Zeit in unserem Backup & Recover Kurs :-).
Dort werden wir uns hoffentlich alle wieder sehen ....
Niederlassungen
Witneystraße
089 6228 6789-0
Grünwalder Weg
089 679090-40
E-Mail:
Bitte nehmen Sie mich in den Verteiler der monatlichen Tipps & Tricks auf.