Oracle的备份DMP导入其他表空间的办法

Oracle备份数据导入到其他的表空间(只设置默认表空间无效) 
 
我们在导入一个Oracle备份的数据文件(*.dmp)到另外一个数据库的用户下时,如果需要更换表空间,可以采用下几个办法。
假设导出用户名:EXP_USER 表空间为:EXP_TSPACE
导入用户名:IMP_USER 表空间为:IMP_TSPACE
1、设置导入用户的默认表空间以及权限。 
a)建表语句如下:
create user IMP_USER
Sql代码  
identified by "密码" 
default tablespace IMP_TSPACE 
temporary tablespace TEMP(临时表空间) 
identified by "密码"
default tablespace IMP_TSPACE
temporary tablespace TEMP(临时表空间)
b)只是设置表空间,还是解决不了问题。你会发现,在使用imp命令导入时,导入的表还是建立在EXP_TSPACE表空间上。
原因是:导入的数据库也存在EXP_TSPACE表空间,同时IMP_SPACE也存在该表空间的使用权限。
可能原因IMP_USER用户的权限含有含有unlimited tablespace权限。(角色resource、dba包含此权限)。
i. 已存在用户,不改变其他权限
a) 不改变原有角色或权限,仅去掉无限表空间权限。
命令:revoke unlimited tablespace from IMP_USER;
b)添加对IMP_TSPACE权限。
命令:alter user qcui quota unlimited on IMP_USER;
ii. 新建用户,给予最低权限
a) 以下是开发用户最低权限跟角色的参考:
角色:connect、exp_full_database、imp_full_database
权限:debug connect session(调试存储过程使用,非必须)
a) 命令语句参考:
Sql代码  
create user IMP_USER 
identified by "密码" 
default tablespace IMP_TSPACE 
temporary tablespace TEMP 
profile DEFAULT 
quota unlimited on IMP_TSPACE; 
-- Grant/Revoke role privileges 
grant connect to IMP_USER; 
grant exp_full_database to IMP_USER; 
grant imp_full_database to IMP_USER; 
-- Grant/Revoke system privileges 
grant debug connect session to IMP_USER; 
create user IMP_USER
 identified by "密码"
 default tablespace IMP_TSPACE
 temporary tablespace TEMP
 profile DEFAULT
 quota unlimited on IMP_TSPACE;
-- Grant/Revoke role privileges 
grant connect to IMP_USER;
grant exp_full_database to IMP_USER;
grant imp_full_database to IMP_USER;
-- Grant/Revoke system privileges 
grant debug connect session to IMP_USER;
2、 直接修改dmp文件(不推荐)
a) 使用UE等文本工具软件,可打开并查看DMP文件内容。除部分数据或命令是二进制乱码外,普通的create table、insert语句都是明文。
b) 批量修改建表语句中的表空间名称。即:tablespace EXP_TSPACE替换为:tablespace IMP_TSPACE
 
另一方法:
1.创建表空间
create tablespace example_tablespace datafile 'e:\****.dbf' size 10m reuse autoextend on next 1m maxsize unlimited;

2.创建用户,指定表空间,临时表空间

create user username identified by password default tablespace usertablespace temporary tablespace temp;
3.IMP导入数据库文件注意
grant dba to username;DBA权限是必需的
一般默认导入的表空间是导出时候的表空间
revoke unlimited tablespace from username;
alter user username quota 0 on users;表空间限额设置
alter user username quota unlimited on user_define_tablespace;
imp username/password file='e:\***.dbf' tablespaces=tbs fromuser=sourcename touser=targetname log='e:\a.txt'
 
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值