IT忍者神龟之数据库备份还原技术总结(三)

2014-11-24 14:25:57 · 作者: · 浏览: 2
使导出/导入在不同的字符集的数据库上转换数据。这里

需要一个 2 进制文件编辑工具即可,如 uedit32。用编辑方式打开导出的 dmp 文件,获

取 2、3 字节的内容,如 00 01,先把它转换为 10 进制数,为 1,使用函数

NLS_CHARSET_NAME 即可获得该字符集:

SQL> select nls_charset_name(1) fromdual;

NLS_CHARSET_NAME(1)

-------------------

US7ASCII

可以知道该 dmp 文件的字符集为 US7ASCII,如果需要把该 dmp 文件的字符集换

成 ZHS16GBK,则需要用 NLS_CHARSET_ID 获取该字符集的编号:

SQL> select nls_charset_id('zhs16gbk')from dual;

NLS_CHARSET_ID('ZHS16GBK')

--------------------------

852

把 852 换成 16 进制数,为 354,把 2、3 字节的 00 01 换成 03 54,即完成了把该

dmp 文件字符集从 us7ascii 到 zhs16gbk 的转化,这样,再把该dmp 文件导入到 zhs16gbk

字符集的数据库就可以了。

2. 版本问题

Exp/Imp 很多时候,可以跨版本使用,如在版本 7 与版本 8 之间导出导入数据,但

这样做必须选择正确的版本,规则为:

总是使用 IMP 的版本匹配数据库的版本,如果要导入到 816,则使用 816 的导入工

具。

总是使用 EXP 的版本匹配两个数据库中低的那个版本,如在 815 与 816 之间互导,

则使用 815 的 EXP 工具。

imp 和 exp 版本不能往上兼容: imp可以导入低版本 exp 生成的文件, 不能导入高

版本 exp 生成的文件