0
回答
将一个用户old在users表空间的表导入另一个用户new下的new表空间
注册华为云得mate10,2.9折抢先购!>>>   

将一个用户old在users表空间的表导入另一个用户new下的newsp表空间。

注意 :  假如old用户下的表还有在oldsp表空间中的,也想导入newsp表空间,用

如下的方法是导不成功的。

可以先将old用户在oldsp表空间中的表使用如下的sql语句

alter table old_table move tablespace users   修改表空间到users

如果需要修改的表很多的话显然上面的方法是不适用的,我只是给大家

一个思路,具体怎么做自己去想吧!


下面是操作步骤:

1. 先将old用户数据导出

    exp  old/old@oracle  file=d:\old owner=old

2. 创建表空间

CREATE TABLESPACE "newsp"
LOGGING
--路径要换成你自己oracle 的安装路径
DATAFILE 'C:\oracle\product\10.2.0\oradata\oracle\newsp.ora' SIZE 50M  EXTENT   
MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT  AUTO

3. 创建new用户

CREATE USER "new"  PROFILE "DEFAULT"
IDENTIFIED BY "new" DEFAULT TABLESPACE "newsp"
TEMPORARY TABLESPACE "TEMP"
ACCOUNT UNLOCK;

4. 授权

注意只要有connect imp_full_database,resoure就能导入用户的数据,不要赋予DBA权限
GRANT "CONNECT" TO "new";
GRANT "RESOURCE" TO "new";
GRANT "IMP_FULL_DATABASE" TO "new";

回收用户无限制的权限;
revoke unlimited tablespace from newsp;
在USERS表空间的配额为0
alter user new quota 0 on USERS;
在用户自己的缺省表空间内配额为无限的
alter user new quota unlimited on newsp;

5. 导入数据

    imp new/new@oracle file=d:\old.dmp fromuser=old touser=new

以上

请大家指点一下

举报
南北024
发帖于7年前 0回/546阅
顶部