分类: Oracle
2006-04-03 17:41:22
Oracle数据库作为目前市场的主流数据库之一,许多应用都在其上进行开发,由于Oracle数据库更新换代的原因和不同的应用程序提供商,可能会造成在一个单位的应用中存在Oracle的几种版本,如Oracle 7、Oracle 8、Oracle 8i,甚至Oracle 9i.。而考虑到数据库集中、维护、备份的方便性和避免设备的重复投资,在应用能兼容的情况下,将几个版本的Oracle数据库移植到一个主流版本上是数据库管理员的一个较优的选择。
这就存在从Oracle数据库的低版本移植到高版本和从Oracle数据库的高版本移植到低版本的问题,甚至包括系统平台的迁移如从Windows NT系统迁移到Unix系统。利用Oracle导入/导出工具(Export/Import)能比较方便实现上述移植操作。
Oracle导入/导出工具(Export/Import)主要是用来对数据库进行逻辑备份,利用Export导出数据库的转储二进制文件作为数据库Import输入从而达到移植的目的。有二个规则可以参考:
规则一:从Oracle 低版本的Export数据可以Import到Oracle高版本中,但限于Oracle的相邻版本,如从Oracle 7 到 Oracle 8。对于两个不相邻版本间进行转换,如从Oracle 6 到 Oracle 8,则应先将数据输入到中间版本—Oracle 7,再从中间数据库转入更高版本。
规则二:Oracle的Export/Import工具只能连接到拥有更高或者一样的Export/Import版本的数据库。如Oracle
利用上面两个规则,下面就本人在为一单位用Oracle的导入/导出工具(Export/Import)进行此种移植碰到的问题,提出来与大家分享,希望能起到抛砖引玉的作用。
此单位拥有Oracle数据库版本有Oracle
考虑到Oracle
1、Oracle
因版本相差甚小,开始直接用Oracle
对于使用Oracle
2、Oracle 7.3 移植
直接用Oracle7.3的export导出数据库的转储文件,拷至Oracle
3、Oracle 8.1.6 For NT移植
初步设想也通过Oracle 8.0.5进行过度。因其版本比Oracle 8.0.5高、下面对参考的规则进行一些校验。
3.1高版本的Export导出来的转储文件,低版本的Import读不了
在Oracle 8.1.6数据库服务器导出转储二进制文件:ora816.dmp。
在Oracle 8.0.5数据库服务器上用Imp80进行导入。
D:>Imp 80 house/password file=d:\ ora816.dmp log=d:\ora816.log full=y
/*日志显示*/
已连接到:Oracle8 Release 8.0.5.0.0 – Production
PL/SQL Release 8.0.5.0.0 – Production
IMP-00010: 不是有效的导出文件,标题检验失败
IMP-00021: 操作系统错误 - 错误代码(十进制2,十六进制0x2)
IMP-00000: 未成功终止导入
3.2 Oracle的Export/Import工具只能连接到拥有更高或者一样的Export/Import版本的数据库
a)Oracle 8.1.6远程数据导入
在Oracle 8.1.6数据库服务器导出转储二进制文件:ora816.dmp。
在Oracle 8.1.6数据库服务器向Oracle8.0.5数据库进行数据远程导入
D:>Imp house/password@orclfrom816to805 file=d:\ ora816.dmp log=d:\ora816.log full=y
(orclfrom816to805为数据库连接字符串由Oracle8.1.6数据库指向 Oracle8.0.5数据库)
/*日志显示*/
连接到: Oracle8 Release 8.0.5.0.0 – Production
PL/SQL Release 8.0.5.0.0 – Production
经由常规路径导出由EXPORT:V08.01.06创建的文件
已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入
IMP-00003: ORACLE 错误2248出现
ORA-02248: 无效的 ALTER SESSION 选项
IMP-00000: 未成功终止导入
b)在Oracle 8.0.5数据库服务器上用exp80对Oracle 8.1.6数据库进行远程导出。
D:>exp80 house/password@orclfrom805to816 file=d:\ora816.dmp log=d:\ora816.log
(orclfromfrom805to816为数据库连接字符串由Oracle8.0.5数据库指向Oracle8.1.6数据库)
/*日志显示*/
连接到:Oracle8i Enterprise Edition Release 8.1.6.0.0 – Production
With the Partitioning option
JServer Release 8.1.6.0.0 – Production
已导出ZHS16GBK字符集和ZHS16GBK NCHAR 字符集
即将导出指定的用户...
在没有警告的情况下成功终止导出。
再对远程导出的转储文件在Oracle 8.0.5数据库服务器上用imp80导入。
D:>imp80 house/password file=d:\ora816.dmp full=y log=d:\ora816 _i.log
显示成功导入
此刻此移植就变成了Oracle 8.0.5 For NT移植至Oracle 8.0.4 For Digital Unix的移植。
利用Oracle的Oracle导入/导出工具(Export/Import)除了可进行数据库逻辑备份、数据库移植还可以用来提高数据库的性能,对数据库进行一次导入/导出操作能重新组织数据,消除数据库的碎片,从而使数据库的性能有较大的提高。