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