by 보상 [Oracle 백업/복구] rds for oracle oracle pump aws [2023.05.31 17:41:47]
-- Datapump 를 이용하여 Export (Scott 스키마의 emp, dept 테이블)
DECLARE
hdnl NUMBER;
BEGIN
hdnl := DBMS_DATAPUMP.OPEN(operation=>'EXPORT', job_mode=>'TABLE', job_name=>'expdp_scott');
DBMS_DATAPUMP.ADD_FILE(handle=>hdnl, file_name=>'exp_scott_2ea.dmp', directory=>'DUMP_DIR', filetype=>dbms_datapump.ku$_file_type_dump_file);
DBMS_DATAPUMP.ADD_FILE(handle=>hdnl, file_name=>'exp_scott_2ea.log', directory=>'DUMP_DIR', filetype=>dbms_datapump.ku$_file_type_log_file);
DBMS_DATAPUMP.METADATA_FILTER(handle=>hdnl, name=> 'SCHEMA_EXPR', value=>'IN (''SCOTT'')');
DBMS_DATAPUMP.METADATA_FILTER(handle=>hdnl, name=> 'NAME_EXPR', value=>'IN (''EMP'',''DEPT'')', object_type=>'TABLE');
DBMS_DATAPUMP.START_JOB(hdnl);
END;
/
질문 입니다.
목적은 scott 계정의 모든 테이블들의 데이터만! 옮겨야 합니다.
1. 이 쿼리에서 Scott 스키마의 모든 테이블을 import 하려면value값을 어떻게 하면 될까요? value를 빼면 될까요?
2. table에서 데이터만 옮기려고 한다면 object_type에 옵션을 줘야 할까요?
서버에서 expdp 로 수행하는 명령어를 PL/SQL 로 작성한 것 같네요
1. 이 쿼리에서 Scott 스키마의 모든 테이블을 import 하려면 ~~~
>> 올려 주신 것은 import 는 아니고, export ( expdp 명령어 ) 를 수행하는 부분이구요
>> " DBMS_DATAPUMP.METADATA_FILTER(handle=>hdnl, name=> 'NAME_EXPR', value=>'IN (''EMP'',''DEPT'')', object_type=>'TABLE'); " <~~ Table 중 EMP, DEPT 이렇게 2개를 대상으로 한다는 의미 입니다. 이 줄만 제외 하시면 될 것 같습니다.
2. 2. table에서 데이터만 옮기려고 한다면 object_type에 옵션을 줘야 할까요?
>> 아닙니다.
>> expdp 시 ~~~ 생략 ... CONTENT=DATA_ONLY .... 생략 <~~~ 이 부분을 위에 넣어 주어야 합니다. 어떤 식으로 넣을 지는 테스트를 못 해 봐서,, 조언 드리기 어렵네요.