【发布时间】:2019-08-14 04:39:49
【问题描述】:
我正在尝试使用 datapump full 将一个 Oracle 12 数据库从一个 Oracle RDS 移动到另一个
这样做的原因是能够将 Oracle RDS(通过选项组固定)移动到另一个 AWS 账户。
nohup expdp myUser/myPass@myDB \
full=y job_name=DRPRD1_EXPORT_DAILY \
dumpfile=file.dmp \
directory=data_pump_dir \
exclude=statistics \
METRICS=Y LOGTIME=ALL
我将 dmp 文件移动到新的空 Oracle RDS(相同版本)
我的导入脚本:
set serveroutput on;
set timing on;
DECLARE
ind NUMBER; -- Loop index
h1 NUMBER; -- Data Pump job handler
percent_done NUMBER; -- Percentage of job complete
job_state VARCHAR2(30); -- To keep track of job state
le ku$_LogEntry; -- For WIP and error messages
js ku$_JobStatus; -- The job status from get_status
jd ku$_JobDesc; -- The job description from get_status
sts ku$_Status; -- The status object returned by get_status
BEGIN
h1 := DBMS_DATAPUMP.OPEN('IMPORT','FULL',NULL,'My_Import');
DBMS_DATAPUMP.ADD_FILE(h1,'file.dmp','DATA_PUMP_DIR');
DBMS_DATAPUMP.SET_PARAMETER(h1,'TABLE_EXISTS_ACTION','REPLACE');
DBMS_DATAPUMP.START_JOB(h1);
percent_done := 0;
job_state := 'UNDEFINED';
while (job_state != 'COMPLETED') and (job_state != 'STOPPED') loop
dbms_datapump.get_status(h1,
dbms_datapump.ku$_status_job_error +
dbms_datapump.ku$_status_job_status +
dbms_datapump.ku$_status_wip,-1,job_state,sts);
js := sts.job_status;
-- If the percentage done changed, display the new value.
if js.percent_done != percent_done
then
dbms_output.put_line('*** Job percent done = ' ||
to_char(js.percent_done));
percent_done := js.percent_done;
end if;
-- If any work-in-progress (WIP) or Error messages were received for the job,
-- display them.
if (bitand(sts.mask,dbms_datapump.ku$_status_wip) != 0)
then
le := sts.wip;
else
if (bitand(sts.mask,dbms_datapump.ku$_status_job_error) != 0)
then
le := sts.error;
else
le := null;
end if;
end if;
if le is not null
then
ind := le.FIRST;
while ind is not null loop
dbms_output.put_line(le(ind).LogText);
ind := le.NEXT(ind);
end loop;
end if;
end loop;
-- Indicate that the job finished and gracefully detach from it.
dbms_output.put_line('Job has completed');
dbms_output.put_line('Final job state = ' || job_state);
dbms_datapump.detach(h1);
END;
/
我正在使用创建 RDS 的主用户运行导入,因此我假设我拥有正确的权限
没有创建任何表,我得到以下错误
ora-01950:对表空间没有权限
有人遇到过这样的问题吗?
【问题讨论】:
标签: database oracle amazon-rds rds