Jak określić Schematy wewnątrz pliku eksportowego Oracle Data Pump
- mam plik kopii zapasowej bazy danych Oracle (.dmp), który został utworzony za pomocą expdp.
- The .plik dmp był eksportem całej bazy danych.
- muszę przywrócić 1 schemat z tego pliku zrzutu.
- nie znam nazw schematów w tym pliku zrzutu.
- Aby zaimportować dane z impdp, potrzebuję nazwy schematu do załadowania.
Aktualizacja (2008-09-18 13: 02) - więcej informacji:
Aktualnie używam polecenia impdp:
impdp user/password@database directory=DPUMP_DIR
dumpfile=EXPORT.DMP logfile=IMPORT.LOG
I dpump_dir jest poprawnie skonfigurowany.
SQL> SELECT directory_path
2 FROM dba_directories
3 WHERE directory_name = 'DPUMP_DIR';
DIRECTORY_PATH
-------------------------
D:\directory_path\dpump_dir\
I tak, eksport.Plik DMP znajduje się w tym folderze.
Komunikat o błędzie, który otrzymuję po uruchomieniu polecenia impdp to:
Connected to: Oracle Database 10g Enterprise Edition ...
ORA-31655: no data or metadata objects selected for job
ORA-39154: Objects from foreign schemas have been removed from import
Ten Komunikat o błędzie jest najczęściej oczekiwany. Potrzebuję komendy impdp be:
impdp user/password@database directory=DPUMP_DIR dumpfile=EXPORT.DMP
SCHEMAS=SOURCE_SCHEMA REMAP_SCHEMA=SOURCE_SCHEMA:MY_SCHEMA
Ale aby to zrobić, potrzebuję źródła schemat.
8 answers
Jeśli otworzysz plik DMP za pomocą edytora obsługującego duże pliki, możesz być w stanie zlokalizować obszary, w których wymienione są nazwy schematów. Tylko nie zmieniaj niczego. Byłoby lepiej, gdybyś otworzył kopię oryginalnego zrzutu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-19 06:25:02
impdp
eksportuje DDL kopii zapasowej dmp
do pliku, jeśli używasz SQLFILE
parametr . Na przykład, umieść to w pliku tekstowym
impdp '/ as sysdba' dumpfile=<your .dmp file> logfile=import_log.txt sqlfile=ddl_dump.txt
Następnie sprawdź ddl_dump.txt
dla tablespaces, users i schemas w kopii zapasowej.
Zgodnie z dokumentacją, nie zmienia to bazy danych:
SQL nie jest faktycznie wykonywany, a docelowy system pozostaje niezmieniony.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-30 19:21:57
Aktualizacja (2008-09-19 10: 05) - Rozwiązanie:
Moje rozwiązanie: socjotechnika, kopałem naprawdę ciężko i znalazłem kogoś, kto znał nazwę schematu.
rozwiązanie techniczne: plik dmp czy dał nazwę schematu.
Gdy znałam nazwę schematu, przeszukałam plik zrzutu i dowiedziałam się, gdzie go znaleźć.
Miejsca nazw schematów były widoczne, w .plik dmp:
<OWNER_NAME>SOURCE_SCHEMA</OWNER_NAME>
To było widoczne przed każdym stołem nazwa / definicja.SCHEMA_LIST 'SOURCE_SCHEMA'
To było widoczne pod koniec .dmp.
Co ciekawe, wokół sekcji SCHEMA_LIST 'SOURCE_SCHEMA'
znajdował się również wiersz poleceń używany do tworzenia zrzutu, używanych katalogów, używanych plików par, wersji systemu windows, na której był uruchomiony, oraz ustawień sesji eksportu (język, formaty daty).
Więc problem rozwiązany:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-19 16:27:05
Zakładając, że nie masz pliku dziennika z zadania expdp, które go wygenerowało, najprościej byłoby użyć parametru sqlfile , aby impdp wygenerował plik DDL (oparty na pełnym imporcie). Następnie możesz pobrać nazwy schematów z tego pliku. Oczywiście nie jest to idealne rozwiązanie, ponieważ impdp musi odczytać cały plik zrzutu, aby wyodrębnić DDL, a następnie ponownie, aby dostać się do schematu, który Cię interesuje, i musisz trochę przeszukiwać plik tekstowy dla różnych instrukcji CREATE USER, ale powinno być wykonalne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-04 17:22:57
Uruchamiając polecenie impdp, aby utworzyć plik SQL, będziesz musiał uruchomić go jako użytkownik posiadający rolę DATAPUMP_IMP_FULL_DATABASE.
Lub... uruchom go jako niski uprzywilejowany użytkownik i użyj opcji MASTER_ONLY=YES, a następnie sprawdź tabelę master. np.
select value_t
from SYS_IMPORT_TABLE_01
where name = 'CLIENT_COMMAND'
and process_order = -59;
col object_name for a30
col processing_status head STATUS for a6
col processing_state head STATE for a5
select distinct
object_schema,
object_name,
object_type,
object_tablespace,
process_order,
duplicate,
processing_status,
processing_state
from sys_import_table_01
where process_order > 0
and object_name is not null
order by object_schema, object_name
/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-22 03:23:41
Krok 1: Oto jeden prosty przykład. Musisz utworzyć plik SQL z pliku zrzutu używając opcji SQLFILE
.
Krok 2: Grep dla CREATE USER
w wygenerowanym pliku SQL (tutaj tabele.sql)
Przykład tutaj:
$ impdp directory=exp_dir dumpfile=exp_user1_all_tab.dmp logfile=imp_exp_user1_tab sqlfile=tables.sql
Import: Release 11.2.0.3.0-produkcja już w piątek 26 08:29:06 2013
Copyright (c) 1982, 2011, Oracle i / lub jej podmioty stowarzyszone. Wszelkie prawa zastrzeżone.
Username: / as sysdba
Typ obiektu przetwarzania SCHEMA_EXPORT/PRE_SCHEMA / PROCACT_SCHEMA praca "SYS"."SYS_SQL_FILE_FULL_01" zakończone pomyślnie o 08: 29: 12
$ grep "CREATE USER" tables.sql
UTWÓRZ UŻYTKOWNIKA "USER1" IDENTYFIKOWANEGO WARTOŚCIAMI "S:270D559F9B97C05EA50F78507CD6EAC6AD63969E5E; BBE7786A5F9103"
Wiele opcji datapump wyjaśnione tutaj http://www.acehints.com/p/site-map.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-26 06:54:32
Moje rozwiązanie (podobne do odpowiedzi Kylelansera) (na uniksowym pudełku):
strings dumpfile.dmp | grep SCHEMA_LIST
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-24 13:10:01
Musisz wyszukać nazwę właściciela.
cat -v dumpfile.dmp | grep -o '<OWNER_NAME>.*</OWNER_NAME>' | uniq -u
Cat-v zamienia plik dumpfile na widoczny tekst.
Grep-o pokazuje tylko mecz, więc nie widzimy naprawdę długich linii
Uniq-u usuwa zduplikowane linie, więc widzisz mniej wyjścia.
To działa całkiem dobrze, nawet na dużych plikach zrzutu, i może być zmodyfikowany do użycia w skrypcie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-21 17:41:52