by 풒내기 [Oracle 백업/복구] Oracle Export expdp [2016.12.13 16:30:53]
환경 CentOS Linux release 7.2.1511 (Core) Oracle : 12.1.0.2.0
$ expdp system/oracle@orcl directory=MY_DATA_PUMP dumpfile=shopmall.dump logfile=shopmall.dump schemas=shopmall job_name=shopmall001 Export: Release 12.1.0.2.0 - Production on Tue Dec 13 15:04:01 2016 Copyright (c) 1982, 2015, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production UDE-31623: operation generated ORACLE error 31623 ORA-31623: a job is not attached to this session via the specified handle ORA-06512: at "SYS.DBMS_DATAPUMP", line 3905 ORA-06512: at "SYS.DBMS_DATAPUMP", line 5203 ORA-06512: at line 1
실제 명령에서 스키마, 계정비번만 바꾼거구요. 디비서버에서 위 명령어 그대로 쳤습니다.
오라클은 에러메세지 설명해주는 공식문서도 안보이고 난감하네요.
일단 에러처리 하려고 검색해서 따라했던 부분도 첨부합니다.
1. 처리중이던 잡이 남아있으면 안될수있다고 삭제하라고해서...
SQL> select * frmo dba_datapump_jobs 목록 확인 해 보고 남아있는것 다 삭제
SQL> drop table system.shopmall001
20개쯤 되던데.. 다 지웠습니다.
(같은오류 발생)
2. 스트림 풀 사이즈 늘리기
SQL> show parameter streams_pool; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ streams_pool_size big integer 0 SQL> alter system set streams_pool_size=1G scope=both; SQL> show parameter aq NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ aq_tm_processes integer 0 SQL> alter system set aq_tm_processes=1 scope=both;
(같은오류 발생)
3. DBA 디렉토리 등록
MY_DATA_PUMP라는 이름으로 이미 등록 해 놓은 상태입니다
SQL> select * from dba_directories;
SYS MY_DATA_PUMP /data2
4. 여기저기 검색하다 보니 먼 스크립트를 실행 해 보라고 해서...
https://oracleexamples.wordpress.com/2010/02/17/expdp-error-31623-and-ora-12805-in-cluster-10-2-0-4/
여기서 알려준 스크립트 실행시키면 중간에 오류가 많이 나더라구요
@$ORACLE_HOME/rdbms/admin/catdph.sql @$ORACLE_HOME/rdbms/admin/prvtdtde.plb @$ORACLE_HOME/rdbms/admin/catdpb.sql @$ORACLE_HOME/rdbms/admin/dbmspump.sql @$ORACLE_HOME/rdbms/admin/utlrp.sql
오라클 백업은 ... 정말 어렵네요. 이거 어떻게 해야할까요
CentOS Linux release 7.2.1511 (Core)
Oracle : 12.1.0.2.0
"이재현" 말씀처럼, job_name 은 필수가 아니니 안 쓰셔도 되구요 (실패할 경우, job_name 이름으로 table 이 남고, drop 하지 않으면 동일 이름으로 job 이 실행되지 않습니다)
MY_DATA_PUMP 는 원격DB(@orcl) 에 생성하신 게 맞지요 ?
원격DB(@orcl) 의 MY_DATA_PUMP 이 지정하는 /data2 에, 원격서버 OS Oracle User 가 write 권한이 있는지요 ?
아래의 2가지 기본권한 부여도 이미 하신 거지요 ?
GRANT READ, WRITE ON DIRECTORY MY_DATA_PUMP TO SYSTEM ;
grant EXP_FULL_DATABASE, IMP_FULL_DATABASE to SYSTEM ;