Chinaunix首页 | 论坛 | 博客
  • 博客访问: 80222
  • 博文数量: 13
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 177
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-16 11:14
文章分类

全部博文(13)

文章存档

2014年(1)

2013年(12)

我的朋友

分类: Oracle

2013-09-29 15:16:39

从一个数据库将一个用户导出再将其导入到另外一个数据库

1. 导出用户 例:导出cms用户

exp cms/cms@orcl grants=n feedback=10000 file=e:\cms.dmp owner=cms

只要在本机设置了TNS——orcl,知道system用户名和密码就可以导出数据到本地

 

grants=n 表示不导出权限

feedback表示10000条记录反馈一次——表现在终端就是一个黑点

file就是导出的文件存放在哪

owner指明从哪个用户下导出,这里是cms

orcl上导出数据文件到指定目录(目录名称自己定义,只要自己能找到就行,和用户名没有关系)

2. 导入用户

imp file=e:\cms.dmp fromuser=cms touser=cms userid=cms/cms@orac

 

这里要注意几个问题:

 

1.在机器orcl上查看用户默认表空间,以便导入时创建一样的表空间

select username,default_tablespace from dba_users where username ='CMS';

 

2.查看用户使用的表空间

select DISTINCT owner ,tablespace_name from dba_extents where owner like 'CMS';

 

3.查看表空间对应的数据文件,以便在B上创建大小合适的数据文件。

select file_name,tablespace_name from dba_data_files where tablespace_name in ('WORK01');

 

4.检查B机器的表空间,看是否存在work01表空间

select name from v$tablespace where name = ‘WORK01’;

查找不到,说明没有这个两个表空间,需要创建

 

5.要导入数据的server没有work01表空间,创建:

create tablespace work01

datafile '/u01/oradata/orac/work01.dbf'

size 200m

autoextend on

next 20m

maxsize unlimited

extent management local;

 

 

6. 在要导入的数据库上查找用户是否已经存在

select username from dba_users where username='CMS';

 

如果存在:

drop user cms cascade; --(删除用户及其拥有的所有对象)

 

-- 此时如果这个用户在连接,drop会出错,必须先杀掉用户的session,然后再drop

SELECT 'alter system kill session '''||SID||','||SERIAL#||''' immediate;'

FROM V$SESSION

WHERE USERNAME='CMS';

 

alter system kill session '93,56387' immediate;

alter system kill session '100,18899' immediate;

alter system kill session '135,24910' immediate;

alter system kill session '149,3' immediate;

alter system kill session '152,3' immediate;

alter system kill session '156,7' immediate;

alter system kill session '159,45889' immediate;

alter system kill session '160,1' immediate;

alter system kill session '161,1' immediate;

alter system kill session '162,1' immediate;

alter system kill session '163,1' immediate;

 

--再复制这些语句,粘贴到sqlplus中执行,来杀掉Test2session

 

如果不存在cms用户:

create user cms identified bycms default tablespace work01 temporary tablespace temp;

 

不管存不存在都应该给cms授权

grant connect,resource to cms;

 

7.最后将数据导入

下面在windowscmd下将用户导进去

imp file=e:\cms.dmp fromuser=cms touser=cms userid=cms/cms@orac

 

这里要注意的是之前我是用cms用户将数据导出来的,这个cms具有dba权限,那么这里导入的时候用的userid后面的cms也必须具有这个权限不然会报错

这里我们可以临时给cms赋予dba权限,最后回收他,但是回收之后,记得再给cms赋予resource权限。

 

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