Vorbereitung vor dem impdp-Betrieb in einer neuen Oracle-Datenbank
Bestätigen Sie die Größe des Datentabellenbereichs und des temporären Tabellenbereichs in der Originaldatenbank
Überprüfen Sie den Datentabellenbereich der Originaldatenbank
SQL>Linie setzen 500;
SELECT total.tablespace_name,
Runden(total.MB, 2) AS Total_MB,
Runden(total.MB – free.MB, 2) AS Used_MB,
Runden(( 1 – free.MB / total.MB ) * 100, 2)
|| „%’ AS Used_Pct
VON (SELECT Tabellenbereichsname,
Summe(Bytes) / 1024 / 1024 AS MB
FROM dba_free_space
GROUP BY Tablespace-Name) frei,
(SELECT Tabellenbereichsname,
Summe(Bytes) / 1024 / 1024 AS MB
FROM dba_data_files
GROUP BY Tablespace-Name) gesamt
WHERE free.tablespace_name = total.tablespace_name;
Bestätigen Sie die Größe des temporären Tabellenbereichs in der Originaldatenbank
SQL>Wählen Sie c.tablespace_name,
to_char(c.bytes / 1024/1024/1024, 1999, 999,999′) total_gb,
to_char( (c.bytes-d.bytes_used)/1024/1024/1024,'99, 999.999′) free_gb,
to_char(d.bytes_used / 1024/1024/1024, ’99, 999.999′) use_gb,
to_char(d.bytes_used * 100 / c.bytes,99,99′) || '%'verwenden
von (Wählen Sie Tabellenbereichsname,Summe(Bytes) Bytes
von dba_temp_files GROUP nach Tablespace-Name) c,
(Wählen Sie Tabellenbereichsname,Summe(bytes_cached) bytes_used
von v $ temp_extent_pool GROUP nach Tablespace-Name) d
Dabei ist c.tablespace_name = d.tablespace_name;
Erstellen Sie einen Datentabellenbereich und einen temporären Tabellenbereich,Sie sollten einen Tabellenbereich mit derselben Größe wie den ursprünglichen Tabellenbereich erstellen
Für Datentabellenbereich
SQL>Linie setzen 500;
SQL>Wählen Sie den Namen aus der v $ -Datendatei
SQL>Erstellen Sie die Tablespace-TB-Datendatei ‘/path/…/tb.dbf’ Größe xxxM Autoextend auf NEXT xxxM maxsize unbegrenzt;
Wenn der Datentabellenbereich sehr groß ist, Zum Beispiel ist es größer als 30 GB, sogar weniger als 100 GB, Sie können einen erweiterten Tabellenbereich erstellen
SQL>Tabellenbereich ändern TB Datendatei hinzufügen '/path/…/tb_1.dbf’ GRÖSSE 30000M AUTOEXTEND ON NEXT 1000M maxsize unbegrenzt;
SQL>Tabellenbereich ändern TB Datendatei hinzufügen '/path/…/tb_2.dbf’ GRÖSSE 30000M AUTOEXTEND ON NEXT 1000M maxsize unbegrenzt;
…………..
…………..
Für temporären Tablespace
SQL>Linie setzen 500;
SQL>col Dateiname für a80;
SQL>SELECT Dateiname,
file_id,
Tabellenbereichsname,
Status,automatisch erweiterbar,
Bytes / 1024/1024 “Dateigröße(M.)” FROM dba_temp_files;
SQL>Erstellen Sie einen temporären Tablespace;
Wenn der temporäre Tablespace sehr groß ist, Zum Beispiel ist es größer als 30 GB, sogar weniger als 100 GB, Sie können einen erweiterten Tabellenbereich erstellen.
SQL>Ändern Sie den Tablespace TB_TEMP. Fügen Sie das Tempfile ‘/path/…/tb_temp_1.dbf hinzu’ GRÖSSE 30000M AUTOEXTEND ON NEXT 1000M maxsize unbegrenzt;
SQL>Ändern Sie den Tabellenbereich TB_TEMP. Fügen Sie die Tempfile ‘/path/…/tb_temp_2.dbf hinzu’ GRÖSSE 30000M AUTOEXTEND ON NEXT 1000M maxsize unbegrenzt;
…………..
…………..
Erweitern Sie einige Systemtabellenbereiche
Tabellenbereich ändern SYSAUX Datendatei hinzufügen '/path/…/sysaux01_1.dbf’ GRÖSSE 5000M AUTOEXTEND ON NEXT 100M maxsize unbegrenzt;
Tabellenbereich ändern SYSTEM Datendatei hinzufügen '/path/…/system01_1.dbf’ GRÖSSE 5000M AUTOEXTEND ON NEXT 100M maxsize unbegrenzt;
Tabellenbereich ändern UNDOTBS1 Datendatei hinzufügen '/path/…/undotbs01_1.dbf’ GRÖSSE 30000M AUTOEXTEND ON NEXT 500M maxsize unbegrenzt;
Tabellenbereich ändern USERS add datafile ‘/path/…/users01_1.dbf’ GRÖSSE 500M AUTOEXTEND ON NEXT 200M maxsize unbegrenzt;
Bestätigen Sie die Benutzer des ursprünglichen Datentabellenbereichs und des ursprünglichen temporären Tabellenbereichs
SQL>Linie setzen 500;
SQL>col DIRECTORY_PATH für a80;
SQL>wählen * von dba_users;
Erstellen Sie einen neuen Benutzer und dieselben Benutzer mit dem ursprünglichen Datentabellenbereich und dem temporären Tabellenbereich.
Neuen Benutzer erstellen
SQL>Erstellen Sie den Benutzer new_user, der durch den Standardtabellenbereich TB_TEMP des Standardtabellenbereichs passwd1 identifiziert wird;
Erstellen Sie denselben Benutzer mit dem ursprünglichen Tabellenbereich
SQL>Erstellen Sie den Benutzer original_user1, der durch den temporären Tabellenbereich TB_TEMP des Standardtabellenbereichs passwd2 identifiziert wird;
SQL>Erstellen Sie den Benutzer original_user2, der durch den Standardtabellenbereich TB_TEMP des Standardtabellenbereichs passwd3 identifiziert wird;
Bestätigen Sie die logischen Verzeichnisse in der Originaldatenbank
SQL>Linie setzen 500;
SQL>wählen * aus dba_directories;
Erstellen Sie gleichnamige logische Verzeichnisse mit der Originaldatenbank(Der tatsächliche Pfad kann sich von den ursprünglichen Verzeichnissen unterscheiden,Sie sollten jedoch auf die Erlaubnis achten, damit darauf zugegriffen werden kann.)
SQL>Erstellen oder ersetzen Sie das Verzeichnis original_name1 als "/path/../path1".;
SQL>Erstellen oder ersetzen Sie das Verzeichnis original_name2 als "/path/../path2".;
SQL>Erstellen oder ersetzen Sie das Verzeichnis original_name3 als "/path/../path3".;
………………..
………………..
Erstellen Sie ein neues logisches Verzeichnis
SQL>Erstellen oder ersetzen Sie das Verzeichnis new_directory als "/path1/../path3".;
Erteilen Sie logischen Verzeichnissen die Berechtigung
chown -R Orakel:oinstall /path1/../path3
chown -R Orakel:oinstall /path/../path1
chown -R Orakel:oinstall /path/../path2
chown -R Orakel:oinstall /path/../path3
Gewähren Sie neuen Benutzern Berechtigungen
SQL>Gewähren Sie connect to new_user;
SQL>Gewähren Sie new_user eine Ressource;
SQL>Gewähren Sie dba für new_user;
Legen Sie die dmp-Datei in ein neues logisches Verzeichnis und erteilen Sie die Berechtigung
Chown Orakel:Installieren Sie export_all_data.date.dmp
DMP-Datei importieren
impdp new_user / paswd1 directory = new_directory dumpfile = export_all_data.date.dmp logfile = impdp_all_data.date.log remap_schema = original_user:new_user table_exists_action = full ersetzen = y exclude = statistics
Anhang
So importieren Sie eine Tabelle aus einer dmp-Datei?
Beispiel:
impdp dest_user / password directory = logisches_Verzeichnis dumpfile = full_backup.date.dmp logfile = impdp_table1.date.log remap_schema = source_user:dest_user tables = source_user.table1 table_exists_action = Ersetzen Sie exclude = statistics
Andere Fragen
Warum logische Verzeichnisse erstellen, die mit der Originaldatenbank identisch sind??( Pfad kann unterschiedlich sein,Name muss gleich sein)
Antworten: Um den folgenden Fehler zu vermeiden.
Verarbeitungsobjekttyp SCHEMA_EXPORT / TABLE / TABLE
ORA-39083: Objekttyp TABLE:”Nutzer”.”UND $ 08E100290002″ Fehler beim Erstellen:
JETZT-06564: Objekt Verzeichnis ist nicht vorhanden
Warum einen Benutzer erstellen, der mit dem ursprünglichen Tabellenbereich verknüpft ist??
Antworten: Um den folgenden Fehler zu vermeiden.
Verarbeitungsobjekttyp SCHEMA_EXPORT / PACKAGE / GRANT / OWNER_GRANT / OBJECT_GRANT
ORA-39083: Der Objekttyp OBJECT_GRANT konnte nicht fehlerhaft erstellt werden:
JETZT-01917: Benutzer oder Rolle ‘original_user‘ ist nicht vorhanden
Fehlerhaftes SQL ist:
GRANT EXECUTE ON “neuer Benutzer”.”E_FO_PKG” ZU “original_user“
Warum hinzufügen “ausschließen = Statistik” hinter dem Befehl impdp ?
Antworten: Um den folgenden Fehler zu vermeiden.
Verarbeitungsobjekttyp SCHEMA_EXPORT / TABLE / STATISTICS / TABLE_STATISTICS
ORA-39014: Ein oder mehrere Arbeitnehmer sind vorzeitig ausgeschieden.
ORA-39029: Arbeiter 1 mit Prozessnamen “DW00” vorzeitig beendet
ORA-31671: Der Arbeitsprozess DW00 hatte eine nicht behandelte Ausnahme.
JETZT-04030: Nicht genügend Prozessspeicher beim Versuch zuzuteilen 16048 Bytes (Sitzungshaufen,kuxLpxAlloc)
JETZT-06512: beim “SYS.KUPW $ WORKER”, Linie 1887
JETZT-06512: an der Linie 2
ORA-39097: Beim Datenpumpenauftrag ist ein unerwarteter Fehler aufgetreten -1427
ORA-39065: unerwartete Master-Prozessausnahme in MAIN
JETZT-01427: Eine einzeilige Unterabfrage gibt mehr als eine Zeile zurück
Job “neuer Benutzer”.”SYS_IMPORT_FULL_01″ aufgrund eines schwerwiegenden Fehlers gestoppt am Mi Nov. 13 08:23:44 2019 verstrichen 0 17:24:47