折腾了一下午..........(原谅我这个oracle菜鸟).......
首先说一下oracle导入
导入前需先创建用户,表空间,并赋予权限
创建用户:create user rc2 identified by 123;
赋予权限:
GRANT RESOURCE,CONNECT,DBA to rc2;
GRANT CREATE TABLESPACE TO rc2 WITH ADMIN OPTION;
GRANT CREATE TRIGGER TO rc2 WITH ADMIN OPTION;
GRANT DEBUG CONNECT SESSION TO rc2 WITH ADMIN OPTION;
GRANT EXECUTE ANY TYPE TO rc2 WITH ADMIN OPTION;
GRANT UNLIMITED TABLESPACE TO rc2 ;
创建表空间
create tablespace rc2
datafile '+DATA/sirac_new/datafile/zhrc.dbf'
size 1500M
autoextend on next 5M maxsize 3000M;
修改默认表空间
alter user rc2 default tablespace rc2;
完成后,进行dmp导入
运行cmd进入dos窗口后,输入命令:
imp 用户名/密码@服务名 file=d:/test.dmp log=d:/test123.log fromuser=rc1 touser=rc2
导入成功后发现表空间使用的还是导出的dmp所在的表空间
(原因为数据库存在dmp文件的表空间,在导入的时候应该制定表空间的,当时菜鸟不知道啊!!!
指定表空间:
imp 用户名/密码@服务名 file=d:/test.dmp log=d:/test123.log tablespaces =表空间名 fromuser=rc1 touser=rc2
)
那怎么办?将错就错,看有没有不就措施(百度中google一下.....
参考一下链接:
http://www.cnblogs.com/gw811/p/4120109.html
http://www.360doc.cn/article/4571_25193919.html
在当前新建用户下修改表所在表空间
alter table db01 move tablespace rc2;
或进行批量修改:select 'alter table '|| table_name ||' move tablespace rc2 ;' from user_tables;
修改索引所在表空间
alter index PK_ZP10 rebuild tablespace rc2;
或进行批量修改:select 'alter index '|| index_name ||' rebuild tablespace rc2 ;' from user_indexes;
涉及到blob的表时,特殊处理一下:
ALTER TABLE 表名 MOVE LOB(涉及blob字段名) STORE AS log_segment( ---log_segment 对应dba_lobs表中segment_name字段
TABLESPACE rc2 --新建的表空间
ENABLE STORAGE IN ROW --如果DISABLE这个属性,那么lob数据会在行外存储,行内只存储该lob值得指针,而且这个属性在表
--创建后只能在MOVE表时才可以被改变
CHUNK 8192 --是一个很特别的属性,对一次LOB数据的操作(插入或更新),因该分配多少存储空间,
--指定的值最好是数据库块的倍数,而且指定的值不能大于表空间区间中NEXT的值,
--要不然ORACLE会return一个错误,如果以前已经设置这个值了,那么在后期指定的值是不能被改变的。
RETENTION --应用了automatic undo mode中的undo_retention通过时间来管理lob镜像空间.
--FREEPOOLS --给LOG segment指定free list.RAC环境下integer为实例的个数.单实例环境下为1.
--在automatic undo mode下oracle默认采用
NOCACHE);
到此!问题解决!
oracle菜鸟还有很多知识要学啊.......