exp导出时遇到不能识别的字符集错误,高手请进 http://www.vipcn.com/InfoView/Article_2923.html 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我看有必要重新设置一下数据库的字符集。通过ALTER DATABASE CHARACTER SET 新的字符集进行以上语句时,先要进行备份。我们服务器上的字符集为ZHS16GBK例:ALTER DATABASE CHARACTER SET ZHS16GBK; 怎么样查看数据库字符集 [A]数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。 客户端字符集环境select * from nls_instance_parameter,其来源于v$parameter, 表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表 会话字符集环境 select * from nls_session_parameter,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameter一致。 客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件 字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。1. 2服务器指定字符集与客户字符集相同,与加载数据字符集不一致。 ---- 这类问题一般发生在ORACLE版本升级或重新安装系统时选择了与原来服务器端不同的字符集,而恢复加载的备份数据仍是按原字符集卸出的场合,以及加载从其它使用不同字符集的ORACLE数据库卸出的数据的情况。这两种情况中,不管服务器端和客户端字符集是否一致都无法显示汉字。解决办法见2.2。 2.2 强制加载数据字符集与服务器端字符集一致 ---- 假设要加载数据从原ORACLE数据库卸出时的字符集为US7ASCII,当前ORACLE服务器字符集为WE8ISO8859P1。 ---- 下面提供三种解决方法: ---- (1) 服务器端重新安装ORACLE ---- 在重新安装ORACLE 时选择与原卸出数据一致的字符集(本例为US7ASCII)。 ---- 加载原卸出的数据。 ---- 这种情况仅仅使用于空库和具有同一种字符集的数据。 ---- (2)强行修改服务器端ORACLE当前字符集 ---- 在用imp命令加载数据前,先在客户端用sql*plus登录system DBA用户,执行下列SQL语句进行当前ORACLE数据库字符集修改: SQL > create database character set US7ASCII * create database character set US7ASCII ERROR at line 1: ORA-01031: insufficient privileges ---- 你会发现语句执行过程中,出现上述错误提示信息,此时不用理会,实际上ORACLE数据库的字符集已被强行修改为US7ASCII,接着用imp命令装载数据。等数据装载完成以后,shutdown 数据库,再startup 数据库,用合法用户登录ORACLE数据库,在sql>命令提示符下,运行select * from V$NLS_PARAMETERS,可以看到ORACLE数据库字符集已复原,这时再查看有汉字字符数据的表时,汉字已能被正确显示。 ---- (3)利用数据格式转储,避开字符集限制 ---- 这种方法主要用于加载外来ORACLE数据库的不同字符集数据。其方法如下: ---- 先将数据加载到具有相同字符集的服务器上,然后用转换工具卸出为foxbase 格式或access格式数据库,再用转换工具转入到不同字符集的ORACLE数据库中,这样就避免了ORACLE字符集的困扰。目前数据库格式转换的工具很多,象power builder5.0以上版本提供的pipeline,Microsoft Access数据库提供的数据导入/导出功能等。转换方法参见有关资料说明。. 我在服务器端执行exp导出也是出这个错误,我现在不敢更改服务器的字符集,因为不能把数据导出 sqlldr 导入成功,但是数据库里没有值???在线等。。。 SQL 截取和替换 一个临时表的问题? 挑战性问题!期待高手或oracle技术支持! 求助一个oracle sql语句 请教,如何用SQL 语句实现数字频次,及文字频次的查询?? 能帮我把这个SQL进行优化吗? 简单sql问题,在线等!谢 请各位高手帮忙! 这个触发器,不知道为什么出错,急 英国大学作业求助,急死!!!!!! 我的这门课过不过就看大家帮助了,给100分 关于SQL语句的解析问题。专家们看看。 Oracle在安装后,字符集可否进行更改(版本8.0.5)?
通过ALTER DATABASE CHARACTER SET 新的字符集
进行以上语句时,先要进行备份。我们服务器上的字符集为ZHS16GBK
例:ALTER DATABASE CHARACTER SET ZHS16GBK;
[A]数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。
客户端字符集环境select * from nls_instance_parameter,其来源于v$parameter,
表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表
会话字符集环境 select * from nls_session_parameter,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameter一致。
客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件
字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。1. 2服务器指定字符集与客户字符集相同,与加载数据字符集不一致。 ---- 这类问题一般发生在ORACLE版本升级或重新安装系统时选择了与原来服务器端不同的字符集,而恢复加载的备份数据仍是按原字符集卸出的场合,以及加载从其它使用不同字符集的ORACLE数据库卸出的数据的情况。这两种情况中,不管服务器端和客户端字符集是否一致都无法显示汉字。解决办法见2.2。 2.2 强制加载数据字符集与服务器端字符集一致 ---- 假设要加载数据从原ORACLE数据库卸出时的字符集为US7ASCII,当前ORACLE服务器字符集为WE8ISO8859P1。 ---- 下面提供三种解决方法: ---- (1) 服务器端重新安装ORACLE ---- 在重新安装ORACLE 时选择与原卸出数据一致的字符集(本例为US7ASCII)。 ---- 加载原卸出的数据。 ---- 这种情况仅仅使用于空库和具有同一种字符集的数据。 ---- (2)强行修改服务器端ORACLE当前字符集 ---- 在用imp命令加载数据前,先在客户端用sql*plus登录system DBA用户,执行下列SQL语句进行当前ORACLE数据库字符集修改: SQL > create database character set US7ASCII
* create database character set US7ASCII
ERROR at line 1:
ORA-01031: insufficient privileges
---- 你会发现语句执行过程中,出现上述错误提示信息,此时不用理会,实际上ORACLE数据库的字符集已被强行修改为US7ASCII,接着用imp命令装载数据。等数据装载完成以后,shutdown 数据库,再startup 数据库,用合法用户登录ORACLE数据库,在sql>命令提示符下,运行select * from V$NLS_PARAMETERS,可以看到ORACLE数据库字符集已复原,这时再查看有汉字字符数据的表时,汉字已能被正确显示。 ---- (3)利用数据格式转储,避开字符集限制 ---- 这种方法主要用于加载外来ORACLE数据库的不同字符集数据。其方法如下: ---- 先将数据加载到具有相同字符集的服务器上,然后用转换工具卸出为foxbase 格式或access格式数据库,再用转换工具转入到不同字符集的ORACLE数据库中,这样就避免了ORACLE字符集的困扰。目前数据库格式转换的工具很多,象power builder5.0以上版本提供的pipeline,Microsoft Access数据库提供的数据导入/导出功能等。转换方法参见有关资料说明。.