Programing

dmp 파일 및 로그 파일에서 Oracle 데이터베이스를 가져 오는 방법은 무엇입니까?

lottogame 2020. 11. 15. 10:51
반응형

dmp 파일 및 로그 파일에서 Oracle 데이터베이스를 가져 오는 방법은 무엇입니까?


dmp 파일에서 데이터베이스를 만들려면 어떻게해야합니까? 시스템에 동일한 구조를 가진 기존 데이터베이스가 없으므로 작업, 이벤트, 테이블 등으로 완료되어야합니다.

E : 드라이브에 dmp 및 로그 파일을 배치했습니다.

나는 수입 유틸리티를 시도했다

E:/>impdp system/tiger@oratest FILE=WB_PROD_FULL_20MAY11.dmp

하지만 오류가 발생합니다.

invalid argument value
bad dump file specification
unable to open dump file "E:\app\Vensi\admin\oratest\dpdump\WB_PROD_F
ULL_20MAY11.dmp" for read
unable to open file
unable to open file
(OS 2) The system cannot find the file specified.

그리고 Windows 탐색기에서 dmp 파일 (Linux 서버에서 가져옴)이 크래시 덤프 파일로 표시되는 것을 볼 때

이 문제를 어떻게 해결할 수 있는지 모르겠습니다. 이 문제를 해결하도록 도와주세요.

나는 오라클에 대한 완전한 초보자입니다 ...


데이터베이스를 어떻게 내보냈습니까?

  • 를 사용하여 내보내고 exp전체 스키마를 내 보낸 경우

    1. 사용자 생성 :

      create user <username> identified by <password> default tablespace <tablespacename> quota unlimited on <tablespacename>;
      
    2. 권한 부여 :

      grant connect, create session, imp_full_database to <username>;
      
    3. 다음을 사용하여 가져 오기를 시작합니다 imp.

      imp <username>/<password>@<hostname> file=<filename>.dmp log=<filename>.log full=y;
      
  • 을 사용하여 내 보낸 경우 expdp다음을 사용 하여 가져 오기를 시작합니다 impdp.

    impdp <username>/<password> directory=<directoryname> dumpfile=<filename>.dmp logfile=<filename>.log full=y;
    

오류 로그를 보면 디렉토리를 지정하지 않은 것으로 보이므로 Oracle dmp은 기본 디렉토리 (예 :)에서 파일 을 찾으려고합니다 E:\app\Vensi\admin\oratest\dpdump\.

내보내기 파일을 위의 경로로 이동하거나 dmp파일이 있는 경로를 가리키는 디렉터리 개체를 만들고 개체 이름을 impdp명령에 전달합니다 .


이 모든 코드를 * .bat 파일에 넣고 한 번에 실행합니다.

오라클에서 사용자를 생성하기위한 내 코드입니다. crate_drop_user.sql 파일

drop user "USER" cascade;
DROP TABLESPACE "USER";

CREATE TABLESPACE USER DATAFILE 'D:\ORA_DATA\ORA10\USER.ORA' SIZE 10M REUSE 
    AUTOEXTEND 
    ON NEXT  5M  EXTENT MANAGEMENT LOCAL 
    SEGMENT SPACE MANAGEMENT  AUTO
/ 

CREATE  TEMPORARY TABLESPACE "USER_TEMP" TEMPFILE 
    'D:\ORA_DATA\ORA10\USER_TEMP.ORA' SIZE 10M REUSE AUTOEXTEND
    ON NEXT  5M  EXTENT MANAGEMENT LOCAL 
    UNIFORM SIZE 1M    
/

CREATE USER "USER"  PROFILE "DEFAULT" 
    IDENTIFIED BY "user_password" DEFAULT TABLESPACE "USER" 
    TEMPORARY TABLESPACE "USER_TEMP" 
/    

alter user USER quota unlimited on "USER";

GRANT CREATE PROCEDURE TO "USER";
GRANT CREATE PUBLIC SYNONYM TO "USER";
GRANT CREATE SEQUENCE TO "USER";
GRANT CREATE SNAPSHOT TO "USER";
GRANT CREATE SYNONYM TO "USER";
GRANT CREATE TABLE TO "USER";
GRANT CREATE TRIGGER TO "USER";
GRANT CREATE VIEW TO "USER";
GRANT "CONNECT" TO "USER";
GRANT SELECT ANY DICTIONARY to "USER";
GRANT CREATE TYPE TO "USER";

import.bat 파일을 만들고 다음 줄을 넣으십시오.

SQLPLUS SYSTEM/systempassword@ORA_alias @"crate_drop_user.SQL"
IMP SYSTEM/systempassword@ORA_alias FILE=user.DMP FROMUSER=user TOUSER=user GRANTS=Y log =user.log

한 사용자에서 다른 사용자로 가져올 경우주의하십시오. 예를 들어 user1이라는 사용자가 있고 user2로 가져올 경우 모든 권한이 손실 될 수 있으므로 다시 만들어야합니다.

행운을 빕니다, 이반


@ sathyajith-bhat 응답에서 impdp 명령 예제를 사용하는 경우 :

impdp <username>/<password> directory=<directoryname> dumpfile=<filename>.dmp logfile=<filename>.log full=y;

you will need to use mandatory parameter directory and create and grant it as:

CREATE OR REPLACE DIRECTORY DMP_DIR AS 'c:\Users\USER\Downloads';
GRANT READ, WRITE ON DIRECTORY DMP_DIR TO {USER};

or use one of defined:

select * from DBA_DIRECTORIES;

My ORACLE Express 11g R2 has default named DATA_PUMP_DIR (located at {inst_dir}\app\oracle/admin/xe/dpdump/) you sill need to grant it for your user.

참고URL : https://stackoverflow.com/questions/6463614/how-to-import-an-oracle-database-from-dmp-file-and-log-file

반응형