采用 expdp备份,impdp还原。
注意这二者不等同于exp和imp。oracle 10g以前,可以采用exp、imp,10g及以后,expdp + impdp矣。据说10g里面,如果采用exp,没有记录的空表是导不出来的。
现在,想将源服务器A的某个数据库实例中的一些schema复制到目标服务器B。
有关oracle的schma、user、tablespace的关系,可以参照以下文章:
ORACLE 中SCHEMA的概念以及数据库,表空间,数据文件等的区别(转)
1、备份
在源服务器A下:
命令行方式下,登录sqlplus
sqlplus sys/pwd@dbInstantName as sysdba
sqlplus下
sql>create directory dbbak as ‘c:\bak’;
sql> grant read,write on directory dbbak to public;
退出sqlplus,回到命令行:
Expdp ‘sys/pwd@dbInstantName as sysdba’ directory=dbbak dumpfile=bak.dmp schemas=(sde,hydg)
参数说明
Expdp 导出数据泵
system/orcl 连接参数
directory=dbbak 存放导出文件的逻辑盘,指向刚才用户创建的文件夹
dumpfile=bak.dmp 导出的DMP文件名
schemas(sde,hydg) 导出的schema
2、还原
在目标服务器下:
1)假定目标数据库还不存在相应的schema、表空间,那么创建之
--创建用户hydg及默认表空间、赋权限
create tablespace hydg datafile 'E:\chenqu\db\oracle\hydgts2\hydgts2\hydg.ora' size 500m autoextend on;
create user hydg identified by hydg default tablespace hydg;
grant connect, resource,dba to hydg;
--创建用户sde及默认表空间、赋权限
create tablespace sde datafile 'E:\chenqu\db\oracle\hydgts2\hydgts2\sde.ora' size 500m autoextend on;
create user sde identified by sde default tablespace sde;
grant connect, resource,dba to sde;
2)、impdp
将导出的dmp文件拷贝到目标服务器,比如存放在e:\temp下。同样,也要创建一个逻辑文件夹,指向此dmp文件:
登录sqlplus
注意主机字符串很别扭
SQL> create or replace directory db_bak as ‘e:\temp’;
目录已创建。
SQL> grant read,write on directory db_bak to public;
授权成功。
然后在DOS命令行方式下:
impdp ‘sys/pwd@hydgts as sysdba’ DIRECTORY=db_bak DUMPFILE=bak.dmp SCHEMAS=(sde,hydg);
然后我们就可以拿根甘蔗坐在电脑旁边啃边看结果了。
版权声明:本文为博主原屙文章,喜欢你就担走。