当前位置:数据库 > Oracle >>

oracle 10g的dmp如何导入9i

oracle 10g的dmp如何导入9i
 
问题描述:如何将oracle 10g中的数据库对象迁移到9i中.这个10g和9i的服务器分别搭建在局域网的两个机器上,可以相互访问.
 
问题分析:在网上查了一些资料,表明要想将10g导出的dmp文件导入到9i中,是不可实现的.只能实现9i往10g中导.如果想要把10g中的数据导入到9i中,可以先到9i那台服务器上配置一个tnsnames.ora串,用于访问10g数据库,之后在9i服务器中用9i客户端提供的exp命令实现导出,再用imp命令实现导入.
10g导出的dmp往9i中导入,可能会报以下错误.
在安装有9i客户端执行导入命令时会报:
Sql代码  
Import started on 2013-3-13 14:17:13  
E:\oracle\ora92\bin\IMP.EXE log=C:\DOCUME~1\wangzh\LOCALS~1\Temp\plsimp.log file=D:\yusj\dqjz\dqjz20130308.dmp userid=dqjz/dqjz@ORCL buffer=30720 commit=no full=yes grants=yes ignore=yes indexes=yes rows=yes show=no constraints=yes  
  
连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production  
With the Partitioning, OLAP and Oracle Data Mining options  
JServer Release 9.2.0.1.0 - Production  
  
IMP-00010: 不是有效的导出文件,标题验证失败  
IMP-00000: 未成功终止导入  
  
Import finished on 2013-3-13 14:17:13  
 
在安装有10g客户端执行导入命令时会报:
 
Sql代码  
Import started on 2013-3-13 上午 11:13:02  
D:\oracle\product\10.2.0\db_1\bin\imp.exe log=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\plsimp.log file=C:\dqjz20130308.dmp userid=dqjz/dqjz@ORCL_232 buffer=30720 commit=no full=yes grants=yes ignore=yes indexes=yes rows=yes show=no constraints=yes  
  
IMP-00058: 遇到 ORACLE 错误 6550  
ORA-06550: 第 1 行, 第 33 列:   
PLS-00302: 必须说明 'SET_NO_OUTLINES' 组件  
ORA-06550: 第 1 行, 第 7 列:   
PL/SQL: Statement ignored  
IMP-00000: 未成功终止导入  
  
Import finished on 2013-3-13 上午 11:13:03  
 
问题解决:
1. 在安装有9i客户端的机器中配置tnsnames.ora,保证可以正常连接到10g数据库.
2. 在安装有9i客户端的机器中执行exp命令导出dmp文件之前,需要解决一个问题,那就是对BLOB的支持,如果要导出的表中含有BLOB字段,那么在执行exp命令的时候会报EXP-00003错误,解决方法如下:需要先连接到10数据库,用sys用户登录,找到exu9tne视图(view),备份出来.再把执行下面SQL语句:
Sql代码  
CREATE OR REPLACE VIEW SYS.EXU9TNE  
(tsno, fileno, blockno, length)  
AS  
SELECT ts#, segfile#, segblock#, length  
FROM sys.uet$  
WHERE ext# = 1  
UNION ALL  
SELECT "TSNO","FILENO","BLOCKNO","LENGTH" FROM SYS.EXU9TNEB;  
注意,在导出完数据之后,一个要把这个view恢复到初始值. 
我本地的初始值为:
Sql代码  
CREATE OR REPLACE VIEW SYS.EXU9TNE  
(tsno, fileno, blockno, length)  
AS  
SELECT  ts#, segfile#, segblock#, length  
        FROM    sys.uet$  
        WHERE   ext# = 1;  
 
3. 在安装有9i客户端的机器中执行imp命令,完成导入操作(注意在导入之前一定要先建立相应的表空间,用户等).
 
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,