日期:2014-05-16  浏览次数:20436 次

我的首次oracle导入DMP
删除用户
drop user monitor cascade;
删除表空间和数据文件
drop tablespace monitor_ts including contents and datafiles;



创建用户
create user monitor identified by monitor;
创建表空间
create tablespace ts_wangf datafile 'C:\oracle\product\10.2.0\tablespaceBIMS\monitor-data.dbf' size 100m autoextend on;
将表空间分配给用户
alter user monitor default tablespace monitor_ts;
给用户授权
//grant create session,create table,create view,unlimited tablespace to wangf;
grant dba to monitor;



//============================imp导入DMP文件到指定表空间所需作的操作=============================================================================================
找了一个几百万行数据的库,准备导入的本地Oracle中:
SAM用户的缺省表空间是SAM,但是数据却导入到了system表空间。Google了一下,应该这样做:
1.收回unlimited tablespace权限revoke unlimited tablespace from sam;
2.设置缺省表空间alter user sam default tablespace sam;
3.设置SAM表空间的unlimited配额alter user sam quota unlimited on sam;
4.设置其他表空间的0配额alter user sam quota 0 on system;

最后在cmd中执行(不要进入sqlplus):imp wangf/wangf@orcl file='D:\1\内部资源\河北联通BMIS管理平台\数据库结构\BimsManager.DMP' fromuser=monitor touser=wangf
//===============================================================================================================================================================





我将公司oracle9i中的BimsManager数据库导入我自己的10G的数据库,所做的事:
1、查看了导出的日志文件,为全库导出,即full=y,而fromuser=monitor
2、创建BimsManager数据库
3、创建用户monitor
create user monitor identified by monitor;
4、创建表空间(必须要 autoextend on,不然报出表空间配额不够的错,估计是因为导出时的表空间比较大)
create tablespace monitor_ts datafile 'C:\oracle\product\10.2.0\tablespaceBIMS\monitor-data.dbf' size 100m autoextend on;
  5、将表空间分配给用户
  alter user monitor default tablespace monitor_ts;
  分配之后查看:
  select username,default_tablespace from dba_users;
  6、给用户monitor授予dba的权限(因为导出时的monitor用户貌似是dba权限)
  grant dba to monitor;
  7、接下来的三条语句都与将DMP文件导入到指定表空间(monitor的表空间monitor_ts)有关
  revoke unlimited tablespace from monitor;
  alter user monitor quota unlimited on monitor_ts;
  alter user monitor quota 0 on system;
  8、很重要的一步:删除sysman用户的一个JOB,不然导入的时候最后会报一个违反唯一性约束的错
  因为导出的9i中的monitor用户占了JOB_ID为1,而10G中sysman占用了JOB_ID是1
 
  查看系统job:select job from dba_jobs:
  删除job:以sysman登录sqlplus,首先执行:exec dbms_job.remove(1);
                                 再执行:commit;
 
  9、最后在cmd中执行(不要进入sqlplus):
  imp monitor/monitor@bimsmana file='D:\1\内部资源\河北联通BMIS管理平台\数据库结构\BimsManager.DMP' fromuser=monitor touser=monitor
 
 
  最后说一句:oracle的提示“成功终止导入”其实意思是“成功完成导入”,终止是完成的意思。。。。。。。。。。。。