Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2834931
  • 博文数量: 631
  • 博客积分: 10716
  • 博客等级: 上将
  • 技术积分: 8397
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-01 22:35
文章分类

全部博文(631)

文章存档

2020年(2)

2019年(22)

2018年(4)

2017年(37)

2016年(22)

2015年(1)

2013年(12)

2012年(20)

2011年(19)

2010年(20)

2009年(282)

2008年(190)

分类: Oracle

2008-11-17 13:52:15

作为我们开发人员经常使用exp导出某一个用户下的所有对象从某一个数据库,
然后导入。通常导入的时候总是会遇到一些意想不到的问题,其中一个问题就是数据库中已经存在同名对象,
同时也为那些比较复杂的参数而烦恼。其实对于我们,只需要做下面三个动作,就能顺利完成你的导入导出工作:
1.导出
   Exp  [/][@] Owner= File=

2.Drop掉目标用户下的所有对象
   执行下面的语句: 

 1declare     
 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 ;
13begin    
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;    
32end;

   执行上面的语句一定要小心,因为它是不可恢复的.
   第二,如果发现执行中有一些问题,某些对象不能被删除掉,那可能是对象之间有一种依赖关系,重新执行一遍
2.导入
   Exp  [/][@]    FromUser=     ToUser=     File=

阅读(1438) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~