当前位置: 代码迷 >> Oracle管理 >> oracle整库导出导入解决办法
  详细解决方案

oracle整库导出导入解决办法

热度:38   发布时间:2016-04-24 04:18:59.0
oracle整库导出导入
原数据库环境: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, 看看应用用的表,索引都是在那个用户下。
------解决方案--------------------
为什么整库导出,要换表空间名?

------解决方案--------------------
如果同版本之间的操作,问题不大。
------解决方案--------------------
引用:
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
值用两个数据库中版本较低的那个

顶一个..........
  相关解决方案