LONG作为一种数据类型,在LOB大对象出现之后就不再推荐使用了。Oracle对LONG的态度是废弃,以至于一些新的工具对LONG类型的支持也并不好。
例如10g中推出的数据泵功能data pump expdp/impdp,在2个字符集完全一致(ZHS16GBK AL16UTF16)的数据库间导入、导出LONG 字段也可能存在乱码,这个现象在10g中比较常见。
对于该expdp/impdp long字段产生乱码的问题, Workaroud 的是用 exp/imp 传统导入导出工具来替代expdp /impdp,虽然export/import工具的速度不如data pump,但是因为是传统工具所以对于LONG这种近乎废弃的数据类型支持较好。
在11g上测试了一下,该乱码问题似乎已经得到修复:
SQL*Plus: Release 11.2.0.3.0 Production on 星期五 2月 22 06:13:53 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
SQL> conn maclean/oracle
Connected.
SQL>
SQL>
SQL>
SQL>
SQL> create table tlong (t1 int, t2 long);
Table created.
SQL> insert into tlong values(1,'Maclean的测试');
1 row created.
SQL> commit;
Commit complete.
SQL> select t2 from tlong;
T2
--------------------------------------------------------------------------------
Maclean的测试
1* select name,value$ from sys.props$ where name like '%CHARACTERSET%'
SQL> /
NAME VALUE$
------------------------------ --------------------------------------------------
NLS_CHARACTERSET AL32UTF8
NLS_NCHAR_CHARACTERSET UTF8
[oracle@vmac1 ~]$ expdp maclean/oracle dumpfile=tmp:tlong.dmp tables=maclean.tlong
Export: Release 11.2.0.3.0 - Production on 星期五 2月 22 06:18:55 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
启动 "MACLEAN"."SYS_EXPORT_TABLE_01": maclean/******** dumpfile=tmp:tlong.dmp tables=maclean.tlong
正在使用 BLOCKS 方法进行估计...
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 64 KB
处理对象类型 TABLE_EXPORT/TABLE/TABLE
. . 导出了 "MACLEAN"."TLONG" 5.421 KB 1 行
已成功加载/卸载了主表 "MACLEAN"."SYS_EXPORT_TABLE_01"
******************************************************************************
MACLEAN.SYS_EXPORT_TABLE_01 的转储文件集为:
/tmp/tlong.dmp
作业 "MACLEAN"."SYS_EXPORT_TABLE_01" 已于 06:19:14 成功完成
[oracle@vmac1 ~]$ impdp dumpfile=tmp:tlong.dmp remap_table=maclean.tlong:tlong1
Import: Release 11.2.0.3.0 - Production on 星期五 2月 22 06:21:34 2013
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Username: maclean
Password:
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
已成功加载/卸载了主表 "MACLEAN"."SYS_IMPORT_FULL_01"
启动 "MACLEAN"."SYS_IMPORT_FULL_01": maclean/******** dumpfile=tmp:tlong.dmp remap_table=maclean.tlong:tlong1
处理对象类型 TABLE_EXPORT/TABLE/TABLE
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
. . 导入了 "MACLEAN"."TLONG1" 5.421 KB 1 行
作业 "MACLEAN"."SYS_IMPORT_FULL_01" 已于 06:21:39 成功完成
SQL> select * from tlong1;
T1
----------
T2
--------------------------------------------------------------------------------
1
Maclean的测试