oracle 从一个oracle导数据到另外一个oracle

用exp和imp导出导入数据

导出:exp OSMPPORTAL/PORTAL@10.130.24.133:1521/omsp file=/home/oracle/osmpportal.dmp

参数:owner=(system,sys)两个用户,tables=table1,table2 只要表结构不要数据:rows=n

导入:imp ccod/ccod@192.168.30.20:1521/ccpbs16 file=/home/oracle/osmpportal.dmp fromuser=OSMPPORTAL touser=osmpportal

参数:imp 登陆的(有相应权限的)用户名/密码@oracle的ip:端口/sid file=文件目录 fromuser=导出时的用户 touser=要导入的用户

ignore=y有的表已经存在会报错,忽略


expdp和impdp

一  关于expdp和impdp     使用EXPDP和IMPDP时应该注意的事项:
EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。
expdp或impdp命令时,可暂不指出用户名/密码@实例名 as 身份,然后根据提示再输入,如:
expdp schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;

expdp OSMPPORTAL/PORTAL@ccpbszq DUMPFILE=osmpportaldp.dmp SCHEMAS=OSMPPORTAL

http://www.cnblogs.com/huacw/p/3888807.html


ORA-01031: insufficient privileges

原因:没有赋予相应权限

一:查看数据量

1.查询是否有用户:select * from dba_users where  username='OSMPPORTAL'

2.查询当前用户总数据量:select sum(t.num_rows) from user_tables t

3.查询当前用户下各个表的数据量:select t.table_name,t.num_rows from user_tables t ORDER BY NUM_ROWS DESC

4.查询表空间对应的数据文件:select tablespace_name,file_name from dba_data_files

5.查询表空间对应的数据大小:select tablespace_name ,sum(bytes) / 1024 / 1024 as MB from dba_data_files group by tablespace_name;
6.查询数据量:select  SEGMENT_NAME,s.BYTES/1024/1024/1024 as Gb from user_segments s  where s.BYTES  is not null  order by s.BYTES desc
二:新建用户
1.新建用户:create user username identified by pwd
   注:默认表空间:default tablespace hxzg_data;
2.修改密码:alter user username identified by newpwd
3.新建的用户也没有任何权限,必须授予权限
   grant create session to zhangsan;//授予zhangsan用户创建session的权限,即登陆权限

 grant unlimited tablespace to zhangsan;//授予zhangsan用户使用表空间的权限

 grant create table to zhangsan;//授予创建表的权限

 grante drop table to zhangsan;//授予删除表的权限

 grant insert table to zhangsan;//插入表的权限

 grant update table to zhangsan;//修改表的权限

 grant all to public;//这条比较重要,授予所有权限(all)给所有用户(public)

4.drop user username;                        //删除用户

5.赋权限:grant resource,connect to db_hxzg;

6.给其他用户访问权限(db_hxzg以DBA权限登录)

grant select any table to sun;


几个问题
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权限NFO,USER_PROJECT_INFO) file=/home/oracle/osmp2.dmp


  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值