分类: Oracle
2012-08-22 16:48:25
从一个数据库将一个用户导出再将其导入到另外一个数据库
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中执行,来杀掉Test2的session。
如果不存在cms用户:
create user cms identified bycms default tablespace work01 temporary tablespace temp;
不管存不存在都应该给cms授权
grant connect,resource to cms;
7.最后将数据导入
下面在windows的cmd下将用户导进去
imp file=e:\cms.dmp fromuser=cms touser=cms userid=cms/cms@orac
这里要注意的是之前我是用cms用户将数据导出来的,这个cms具有dba权限,那么这里导入的时候用的userid后面的cms也必须具有这个权限不然会报错
这里我们可以临时给cms赋予dba权限,最后回收他,但是回收之后,记得再给cms赋予resource权限。