分类: Oracle
2008-11-17 13:52:15
作为我们开发人员经常使用exp导出某一个用户下的所有对象从某一个数据库,
然后导入。通常导入的时候总是会遇到一些意想不到的问题,其中一个问题就是数据库中已经存在同名对象,
同时也为那些比较复杂的参数而烦恼。其实对于我们,只需要做下面三个动作,就能顺利完成你的导入导出工作:
1.导出
Exp
2.Drop掉目标用户下的所有对象
执行下面的语句:
declare
cursor c_cursor is
select OBJECT_NAME,OBJECT_TYPE
from user_objects
where OBJECT_TYPE IN ('TABLE','VIEW',
'PROCEDURE','FUNCTION',
'PACKAGE','PACKAGE BODY',
'SEQUENCE','MATERIALIZED VIEW',
'SYNONYM','TYPE','TYPE BODY')
ORDER BY OBJECT_TYPE,OBJECT_NAME;
message varchar2(100);
errorNums integer ;
begin
errorNums := 0;
dbms_output.put_line('Dropping objects');
FOR tab_rec IN c_cursor loop
dbms_output.put_line('dropping ' || tab_rec.OBJECT_TYPE || ' ' || TAB_REC.OBJECT_NAME);
begin
execute immediate 'drop ' || TAB_REC.OBJECT_TYPE || ' ' || tab_rec.OBJECT_NAME;
exception
when others then
errorNums := errorNums + 1;
dbms_output.put_line('dropping err.');
dbms_output.put_line(sqlerrm);
end;
end loop;
if errorNums>0 then
dbms_output.put_line('Finished with error. Please execute again.');
else
dbms_output.put_line('Finished');
end if;
end; 执行上面的语句一定要小心,因为它是不可恢复的.
第二,如果发现执行中有一些问题,某些对象不能被删除掉,那可能是对象之间有一种依赖关系,重新执行一遍
2.导入
Exp