使用数据泵复制数据库对象的案例

突然想试着写写博客,首选ITPUB。碰巧遇上ITPUB正在进行一次地震般的升级,空间和博客不能正常登录。

看来还是和CSDN比较有缘呢。但愿CSDN博客现在会比较像样一点,不会再时不时连不上吧

 

第一篇。就把昨晚远程支持的一个案例缩减记录一下

 

    现场的要求是这样的:
    为了提高数据库性能,有几个用户需要重建,清掉原有的数据保留表结构。由于这些用户和数据近期还需要使用,因此要将这几个用户的表结构等导入到几个新建的用户下。

    需要导出的数据库的表结构如下5个用户:
dyaccountmanage20   dycommondatabase20   dylogeventmanage20  dyuserverifydb20  dynetman20
     需要新建的5个用户:
dyaccountman2011   dycommondatabase2011   dylogeventmana2011  dyuserverify2011  dynetmanage2011

我的方案如下:
    以expdp先导出这几个用户下的所有数据,兼作备份之用。然后将其除了表数据以外,导入到新建的用户中。具体步骤如下

先创建dmp文件存放的路径

SQL> create directory expdpdir as '/users/dbbak';

导出数据:
expdp system/*** directory=expdpdir dumpfile=expdpdata_%U.dmp logfile=expdp.log schemas=dyaccountmanage20,dycommondatabase20,dylogeventmanage20,dyuserverifydb20,dynetman20 parallel=4
使用了并行导出,并行度为4

创建对应的表空间


create tablespace dyaccountman2011;
create tablespace dycommondatabase2011;
create tablespace dylogeventman2011;
create tablespace dyuserverify2011;
create tablespace dynetmanage2011;

执行导入
impdp system/**** directory=expdpdir dumpfile=expdpdata_%U.dmp logfile=impdp.log exclude=table_data remap_tablespace=dyaccountmanage20:dyaccountman2011,dycommondatabase20:dycommondatabase2011,dylogeventmanage20:dylogeventman2011,dyuserverifydb20:dyuserverify2011,dynetman20:dynetmanage2011 remap_schema=dyaccountmanage20:dyaccountman2011,dycommondatabase20:dycommondatabase2011,dylogeventmanage20:dylogeventman2011,dyuserverifydb20:dyuserverify2011,dynetman20:dynetmanage2011 parallel=4
这里使用了并行度为4的并行导入,通过remap_tablespace和remap_schemas参数将表空间和用户导入到不同的目标中。exclude=table_data指定了不导入的对象类型,这里是表数据。在10.2.0.2中有个bug,需要将table_statistics也排除在导入的数据类型之外,否则可能会报错。

到了这一步,基本就完成了。但还有一个地方需要修改:由于手动指定了导入的用户,这些用户的密码需要重新设定,否则应用程序将无法连接。
这里写了一个存储过程来将这些用户的密码改成与用户名相同的值

set serverout on
begin
  for x in(select username from dba_users where username like '%2011')loop
    execute immediate 'alter user '||x.username||' identified by '||******;
    dbms_output.put_line(x.username||' has been altered successfully');
  end loop;
end;
/


 回归的第一篇博客,小小测试一下功能。还不错,比公司的破BBS好用多了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值