原数据库环境:windows 2008,oracle 11.2
现需要将此库整库导出,再导入到新数据库,
新数据库环境:HP-UNIX,oracle 11.2中,要求导入到新数据库指定空间,如:xt_dbspace1中
原数据库就不用了,请各位大侠指点
------解决方案--------------------
用expdp/impdp
导入时指定remap_tablespace参数来转换表空间
------解决方案--------------------
LZ可以考虑只导有用的schema,全库导会有很多错误。
------解决方案--------------------
全库导入是会导致很多问题,建议按用户来导入,每次导入一个用户下的对象
------解决方案--------------------
1. 创建directory
在两端数据库都要创建一个目录,用来操作dump file
例如,用system用户
create directory dmpdir as 'd:\';
在不同的机器上文件路径要改成对应的,并确认路径存在,且oracle对应的用户拥有操作权限
2. 导出。
找出对应的用户
select username from dba_users order by created;
找出需要的表空间
select tablespace_name from dba_tablespaces;
在要导出的那台服务器上(数据泵expdp/impdp都需要在数据库服务器端进行)
执行以下命令(在dos中,%要用%%来代替。schemas后面的参数用要导出的用户的用户名代替,多个用户间用逗号隔开)
expdp system/密码 directory=dmpdir dumpfile=DBDATA_%U.DMP logfile=expdp.log schemas=用户1,用户2.... parallel=4
3. 将生成的dmp文件拷贝到目标数据库服务器上,并且存放到这个数据库中创建的directory 对应的路径里,保证用户有文件上的操作权限
4. 执行导入
impdp system/密码 directory=dmpdir dumpfile=DBDATA_%U.DMP logfile=impdp.log remap_tablespace=原表空间1:对应要导入的表空间1,原表空间2:对应要导入的表空间2... parallel=4
如果两边数据库的小版本不一致,则最好在语句中增加一个参数version,例如version=10.2.0.3.0
值用两个数据库中版本较低的那个
------解决方案--------------------
LZ可以用dba_table, dba_objects, 看看应用用的表,索引都是在那个用户下。
------解决方案--------------------
为什么整库导出,要换表空间名?
------解决方案--------------------
如果同版本之间的操作,问题不大。
------解决方案--------------------
顶一个..........