programing

오라클 Data Pump 내보내기 파일 내의 스키마를 확인하는 방법

padding 2023. 4. 3. 21:19
반응형

오라클 Data Pump 내보내기 파일 내의 스키마를 확인하는 방법

  • Oracle (. 백업파일dmp)로 생성되어 .expdp.
  • .dmp 파일은 데이터베이스 전체를 내보낸 것입니다.
  • 이 덤프 파일 안에 있는 스키마 중 하나를 복원해야 합니다.
  • 이 덤프 파일 안에 있는 스키마의 이름을 모릅니다.
  • 「」를 impdp데이터를 가져오려면 로드할 스키마의 이름이 필요합니다.

따라서 .dmp 파일을 검사하고 그 안에 있는 모든 스키마를 나열해야 합니다.어떻게 하면 될까요?


업데이트 (2008-09-18 13:02) - 상세 정보:

현재 사용하고 있는 impdp 명령어는 다음과 같습니다.

impdp user/password@database directory=DPUMP_DIR 
      dumpfile=EXPORT.DMP logfile=IMPORT.LOG  

또, DPUMP_DIR 는 올바르게 설정되어 있습니다.

SQL> SELECT directory_path
2  FROM dba_directories
3  WHERE directory_name = 'DPUMP_DIR';

DIRECTORY_PATH
-------------------------
D:\directory_path\dpump_dir\

네, EXPORT입니다.DMP 파일은 실제로 그 폴더에 있습니다.

를 실행하면 표시되는 impdp츠키다

Connected to: Oracle Database 10g Enterprise Edition ...
ORA-31655: no data or metadata objects selected for the job
ORA-39154: Objects from foreign schemas have been removed from import

이 오류 메시지는 대부분 예상된 메시지입니다.는 ★★★★★가 필요하다.impdp츠키다

impdp user/password@database directory=DPUMP_DIR dumpfile=EXPORT.DMP 
      SCHEMAS=SOURCE_SCHEMA REMAP_SCHEMA=SOURCE_SCHEMA:MY_SCHEMA

하지만 그러기 위해서는 소스 스키마가 필요합니다.

impdp는 DDL의 .dmp파일을 백업합니다(매개변수를 사용하는 경우).예를 들어, 이 파일을 텍스트 파일에 넣습니다.

impdp '/ as sysdba' dumpfile=<your .dmp file> logfile=import_log.txt sqlfile=ddl_dump.txt

다음 체크합니다.ddl_dump.txt백업의 테이블 영역, 사용자 및 스키마에 대해 설명합니다.

매뉴얼에 따르면 실제로 데이터베이스를 변경하는 것은 아닙니다.

SQL은 실제로 실행되지 않으며 대상 시스템은 변경되지 않습니다.

빅 파일을 처리할 수 있는 에디터로 DMP 파일을 열면 스키마 이름이 언급된 영역을 찾을 수 있습니다.아무것도 바꾸지 않도록 하세요.원래 덤프 사본을 열어보는 게 좋을 것 같아요.

업데이트(2008-09-19 10:05) - 솔루션:

마이솔루션:사회 공학, 정말 열심히 파서 스키마 이름을 아는 사람을 찾았어요.
기술 솔루션:.dmp 파일을 검색하면 스키마 이름이 생성됩니다.
스키마 이름을 알고 나서 덤프 파일을 검색하여 어디서 찾을 수 있는지 알게 되었습니다.

.dmp 파일에서 스키마 이름이 표시된 장소:

  • <OWNER_NAME>SOURCE_SCHEMA</OWNER_NAME> 이것은 각 테이블 이름/정의 앞에 표시되었습니다.

  • SCHEMA_LIST 'SOURCE_SCHEMA' 이것은 .dmp의 말미에 가까운 시점에서 확인되었습니다.

재미있게도, 그 주변은SCHEMA_LIST 'SOURCE_SCHEMA'또한 덤프 작성에 사용되는 명령줄, 사용된 디렉토리, 사용된 par 파일, 실행된 Windows 버전 및 세션 설정(언어, 날짜 형식)도 포함되어 있습니다.

이것으로 문제가 해결되었습니다. :)

처음에 파일을 생성한 expdp 작업의 로그파일이 없는 경우 SQLFILE 파라미터를 사용하여 impdp가 DDL 파일을 생성하도록 하는 것이 가장 쉬운 옵션입니다(전체 Import를 기반으로 함).그런 다음 해당 파일에서 스키마 이름을 가져올 수 있습니다.물론 이상적인 것은 impdp가 DDL을 추출하기 위해 전체 덤프 파일을 읽고 다시 원하는 스키마를 검색해야 하며 다양한 CREATE USER 문을 검색해야 하지만 실행 가능해야 합니다.

sqlfile을 작성하기 위해 impdp 명령을 실행하려면 datapump_IMP_FULL_DATABASE 역할을 가진 사용자로 실행해야 합니다.

또는 권한이 낮은 사용자로 실행하고 MASTER_ONLY=YES 옵션을 사용하여 마스터 테이블을 검사합니다.

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
/

http://download.oracle.com/otndocs/products/database/enterprise_edition/utilities/pdf/oow2011_dp_mastering.pdf

1단계: 다음은 간단한 예입니다.다음을 사용하여 덤프 파일에서 SQL 파일을 생성해야 합니다.SQLFILE선택.

순서 2: GREP:CREATE USER생성된 SQL 파일(여기서는 tables.sql)에 저장된다.

예:

$ 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 - 2013년 4월 26일 (금)08:29:06

Copyright (c) 1982, 2011, Oracle 및/또는 그 계열사.무단 전재 금지.

사용자 이름: / as sysdba

처리 개체 유형 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA 작업 "SYS".SYS_SQL_FILE_FULL_01"이 08:29:12에 정상적으로 완료되었습니다.

$ grep "CREATE USER" tables.sql

값 S:270D559F9B97C05로 식별되는 사용자 "USER1" 생성EA50F78507CD6EAC6AD63969E5EBBE7786A5F9103'

http://www.acehints.com/p/site-map.html 에서 설명하고 있는 많은 데이터 덤프 옵션

OWNER_NAME을 검색해야 합니다.

cat -v dumpfile.dmp | grep -o '<OWNER_NAME>.*</OWNER_NAME>' | uniq -u

cat - v는 덤프 파일을 표시 텍스트로 변환합니다.

grep - o는 일치하는 것만 표시하므로 줄이 길게 표시되지 않습니다.

uniq -u 를 지정하면 중복된 행이 삭제되므로 출력량이 줄어듭니다.

이는 큰 덤프 파일에서도 잘 작동하며 스크립트에서 사용하도록 조정할 수 있습니다.

솔루션(KyleLanser의 답변과 유사)은 다음과 같습니다(Unix 박스).

strings dumpfile.dmp | grep SCHEMA_LIST

언급URL : https://stackoverflow.com/questions/95578/how-to-determine-the-schemas-inside-an-oracle-data-pump-export-file

반응형