技术开发 频道

Oracle导入导出工具实现数据库移植

    此单位拥有Oracle数据库版本有Oracle 8.1.6 For NT、Oracle 8.0.5 For NT、Oracle 8.0.4 For Digital Unix、Oracle 7.3 For NT。

    考虑到Oracle 8.0.4 For Digital Unix运行在小型机上、单位的备份系统也是针对此小型机,决定将Oracle 8.1.6 For NT、Oracle 8.0.5 For NT、Oracle 7.3 For NT的数据库都移植到Oracle 8.0.4 For Digital Unix上。 

    1、Oracle 8.0.5 For NT移植

    因版本相差甚小,开始直接用Oracle8.0.5的exp80导出数据库的转储文件,然后用FTP(binary传输模式)直接上传至Oracle 8.0.4 所在的小型机,再用Oracle 8.0.4的imp导入一直有字符集的问题,即存有汉字的字段显示的都是”??????”, 移植失败。后发现,在Oracle8.0.5服务器上直接用Oracle8.0.5的imp80对exp80导出的转储文件进行远程导入,字符集的问题解决,移植成功。
    对于使用Oracle 8.0.4 For Digital Unix的用户,提醒一句,最好不要用Oracle 8.0.4 For Digital Unix的exp、imp工具做备份,而应用此版本的Windows客户端程序exp80、imp80。本人曾做过实验:在Oracle 8.0.4 for Digital UNIN数据库上新建一用户(user)和一个表格(table)通过sql plus客户端在表格的列中插入一些中文行,提交后,用exp 数据导出,再用imp数据导入,用sql plus客户端查看,表中的中文值显示为”???”)。

    2、Oracle 7.3 移植

    直接用Oracle7.3的export导出数据库的转储文件,拷至Oracle8.0.5服务器,然后用Oracle8.0.5服务器的imp80直接导入至Oracle 8.0.5数据库。此移植就变成了Oracle 8.0.5 For NT移植至Oracle 8.0.4 For Digital Unix的移植。

    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:>Imp80 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)除了可进行数据库逻辑备份、数据库移植还可以用来提高数据库的性能,对数据库进行一次导入/导出操作能重新组织数据,消除数据库的碎片,从而使数据库的性能有较大的提高。

0
相关文章