首先确保字符集一致,这样才不会出现乱码。
查看字符集: A、oracle server 端 字符集查询 select userenv(‘language’) from dual eg: SQL> select userenv('language') from dual;
USERENV('LANGUAGE') ---------------------------------------------------- AMERICAN_AMERICA.AL32UTF8 其中NLS_CHARACTERSET 为server端字符集 NLS_LANGUAGE 为 server端字符显示形式
B、查询oracle client端的字符集 $echo $NLS_LANG eg: oracle@q:~> echo $NLS_LANG AMERICAN_AMERICA.AL32UTF8 oracle@q:~> 如果发现你select 出来的数据是乱码,请把client端的字符集配置成与linux操作系统相同的字符集。 如果还是有乱码,则有可能是数据库中的数据存在问题,或者是oracle服务端的配置存在问题。
修改字符集: sqlplus /nolog; SQL>conn / as sysdba; SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP MOUNT; SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; SQL> ALTER DATABASE OPEN; SQL> ALTER DATABASE CHARACTER SET ZHS16GBK; (这一步一般会出错,所以需要重复执行上面从SHUTDOWN IMMEDIATE开始的所有语句) SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK; Database altered. SQL> select * from v$nls_parameters; SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP;
其次,利用sqlplus自带的export和Tools/import tables 工具完成数据的导出和导入,
导出数据库:选择sql inserts界面,将deletes records,disable triggers选项勾掉。单击export按钮即可导出
导入数据库:选择Tools/import tables菜单,选择sql inserts界面,点击import即可
|