oracle (不同用户不同表空间)中导入大字段

lob 字段特殊,在建表存储的时候系统就特殊处理 lob 字段的存储,所以导入导出的时候不按通常表来处理,真够郁闷的。
现在只好想别的办法了,表很多,挨个在新表空间建表多麻烦啊,还要找建表的 sql 。可是先导入再用工具改或者用 move  命令,都一样,一百多个 lob 字段的表啊 !! 还有 toad 只找到试用版,不知道改变表的表空间的功能可不可以用。
后来想起自己常用的 PLSQL Developer 是不是也有这样的功能,就去看了看,好像没有改变表空间的功能,但是有导出当前用户所有 Object 的功能,生成的是所有 object (表和视图)的 create sql 文件。
导出选项如图


在新用户下执行导出的sql文件,再在sqlplus下将老用户导出的备份覆盖导入新表空间,
然后我进去查询,发现一切 OK 啦.
总结过程:
1.
建立新的表空间
2.
建立新用户,默认表空间为刚建立的新的表空间
3.
设定用户权限, quota 还是要设定一下。
4.
从原用户导出数据:
exp username/password file=filename owner=username rows=y grants=y ;
 
5.
从原用户那里,用 PLSQL Developer (其他的工具也可以)导出原用户的所有 object ,生成 sql 文件。
6.
编辑 sql 文件,替换所有的旧表空间为新表空间。
7.
用新用户登录,并执行 sql 文件,生成表结构
8.
执行 Imp 导入数据:
imp newusername/password file=filename log=logfile fromuser=olduser touser=newuser ignore=y
 
9.
查看新用户下的表的存储情况,确定完全存放在新的表空间下面:

 

select table_name,tablespace_name from user_tables;
 

如果没有lob字段的表,不用执行567三步。

猜你喜欢

转载自mxm910821.iteye.com/blog/2020372