Oracle11g 字符集 AL32UTF8 修改为ZHS16GBK详解

此问题发生在数据库迁移过程中。源数据库:自己笔记本上win7 64位系统的oracle11g个人版,字符集ZHS16GBK ;目标数据库,HP的sqlserver2008 系统 64位数据库服务器,字符集AL32UTF8 。

今天下午在部署HP的一台数据库服务器时,装的oracle11g 企业版默认字符集为AL32UTF8,

而我本地电脑装的oracle11g 个人版数据库字符集server端默认是ZHS16GBK,所以在我把我本机导出的数据库.dmp文件导入到Hp的数据库时,报

imp错误并且错误描述信息为中文乱码。然后经过我上网查阅资料得知 如果要解决乱码问题必须满足下面条件:

目标数据库的服务端和客户端字符集以及要从我本地导入源数据库的dmp文件中的字符集格式必须一样。而我本地源数据库字符集是ZHS16GBK,目标服务器端字符集是AL32UTF8 ,显然不满足以上条件。

然后我首先尝试下面方式更改HP服务器数据库字符:

尝试方法一:在sys/sys 下面执行下面语句:(失败)

注:SQL> alter database CHARACTER SET ZHS16GBK;

alter database CHARACTER SET ZHS16GBK

结果报下面错误:

ERROR 位于第 1 行:

ORA-12712: 新字符集必须为旧字符集的超集。

注:超集解释:如果s1集合包含s2集合中的每一个元素,并且s1集合中有可能包含s2集合中不含有的元素时,那么称s1是s2的超级。说明AL32UTF8包含ZHS16GBK。

尝试方法二:用scott/tiger 登陆 sqlplus 然后connect sys/sys
as sysdba,然后输入命令即可,文中标红的请用自己设置的密码。(此方法测试后成功!)

然后在sqlplus界面依次执行以下sql语句:

若此时数据库服务器已启动,则先执行SHUTDOWN IMMEDIATE命令关闭数据库服务器,然后执行以下命令:注:每条sql语句都会有相应的提示,请输入时务必仔细。

  SQL>STARTUP MOUNT;

  SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;

  SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

  SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;

  SQL>ALTER DATABASE OPEN;

  SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK; //跳过超子集检测

  SQL>ALTER DATABASE national CHARACTER SET INTERNAL ZHS16GBK;

这一行不起作用,执行后出错ORA-00933: SQL 命令未正确结束,不过执行上一行命令已经生效,其他文章里未提到本行。

  SQL>SHUTDOWN IMMEDIATE;

  SQL>STARTUP

最后重启oracle11g监听和服务,重新登录PL/SQL developer ,

执行select userenv(‘language‘) nls_lang from dual; 发现目标数据库字符集如下,已经正确修改为SIMPLIFIED      。CHINESE_CHINA.ZHS16GBK。

NLS_LANG

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

SIMPLIFIED CHINESE_CHINA.ZHS16GBK

然后再执行相应的imp ldpssts/[email protected] fromuser=lspss touser=ldpssts file=D:\imp\ldpssts.dmp log=D:\imp\ldpssts.log  ,导入执行成功。瞬间感觉很爽,哈哈!

时间: 2024-12-19 02:19:05

Oracle11g 字符集 AL32UTF8 修改为ZHS16GBK详解的相关文章

Oracle11g字符集AL32UTF8修改为ZHS16GBK详解

此问题发生在数据库迁移过程中.源数据库:自己笔记本上win7 64位系统的oracle11g个人版,字符集ZHS16GBK :目标数据库,HP的sqlserver2008 系统 64位数据库服务器,字符集AL32UTF8 . 今天下午在部署HP的一台数据库服务器时,装的oracle11g 企业版默认字符集为AL32UTF8, 而我本地电脑装的oracle11g 个人版数据库字符集server端默认是ZHS16GBK,所以在我把我本机导出的数据库.dmp文件导入到Hp的数据库时,报 imp错误并且

Centos时间查看修改命令date详解

1.查看.修改Linux时区与时间 一.linux时区的查看与修改 1,查看当前时区date -R 2,修改设置时区方法1:tzselect 方法2:仅限于RedHat Linux 和 CentOStimeconfig 方法3:适用于Debiandpkg-reconfigure tzdata 3,复制相应的时区文件,替换系统时区文件:或者创建链接文件cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime 在中国可以使用:cp /usr/share/zone

Android修改TitleBar标题栏详解

最近项目中把一个activity的theme设成了Dialog弹出框样式,发现标题栏高度和字体都太小,于是查了相关的资料和源码,总结了修改方法.高度是通过修改android:windowTitleSize,字体大小通过style修改. Android程序默认的Activity标题栏只能显示一段文字,而且不能改变它的布局.颜色.标题栏的高度等.如果想要在标题栏加上个图标. button.输入框.进度条.修改标题栏颜色等,只能使用自定义的标题栏.自定义标题栏可以通过在onCreate函数中添加以下代

cenos修改ip地址详解

一.CentOS 修改IP地址 修改对应网卡的IP地址的配置文件 # vi /etc/sysconfig/network-scripts/ifcfg-eth0   电信 # vi /etc/sysconfig/network-scripts/ifcfg-eth0:1 网通 修改以下内容 DEVICE=eth0 #描述网卡对应的设备别名,例如ifcfg-eth0的文件中它为eth0 BOOTPROTO=static #设置网卡获得ip地址的方式,可能的选项为static,dhcp或bootp,分别

JavaScript修改注册表详解

来自森大科技官方博客http://www.cnsendblog.com/index.php/?p=245GPS平台.网站建设.软件开发.系统运维,找森大网络科技!http://cnsendnet.taobao.com 本实例主要通过WshShell 对象的相关方法实现.WshShell对象是WSH(WSH是Windows Scripting Host的缩写,内嵌于Windows操作系统中的脚本语言工作环境)的内建对象,主要负责程序的本地运行.处理注册表.创建快捷方式.获取系统文件夹信息及处理环境

字符型弄详解

char和varchar分别称为定长和变长类型 对于定长char(N) 不论够不够长度,实际都占据N个长度 如果不够N个长度,用空格在末尾补到N个长度 而对于varchar不用空格补齐,但列内容前,有1-2个字节来标志该列的内容长度 char(M) 宽度在 0<=M<=255 varchar(M) 宽度在 0<=M<=65535 定长速度快些 mysql> create table test( mysql> ca char(6) not null default '',

修改字符集时source使其生效详解

==版权声明: # 本文的所有内容均来自作者刘春凯的学习总结,未经本人许可,禁止私自转发及使用.QQ:1151887353E-mail:[email protected]      [email protected] ####################################################################== 修改字符集时source使其生效详解 1.1 查看系统当前字符集 [[email protected] ~]# echo $LANG en_

oracle11g 修改字符集 修改为ZHS16GBK

转:http://www.cnblogs.com/jay-xu33/p/5210098.html oracle11g 修改字符集 修改为ZHS16GBK1.cmd下,cd到oracle数据库软件的服务器端 如:D:\app\Administrator\product\11.2.0\dbhome_1\BIN 2.输入set ORACLE_SID=你想进入的数据库的那个sid 3.输入 sqlplus /nolog 4.将数据库启动到RESTRICTED模式下做字符集更改: SQL> conn /a

【WebService】wsdl配置详解以及使用注解修改wsdl配置

WebService系列文章: [WebService]带你走进webservice的世界 [WebService]自定义WebService服务及其调用 前面分析了一下关于ws的基本知识,我们知道,wsdl是ws中很重要的文档,我们可以通过解析该wsdl文档获取ws的相关信息,其实,如果不了解该文档结构的话,问题也不大,只要会解析即可进行开发.但是如果想要生成一个符合自己项目的,或者比较人性化的一个wsdl的话,或者从可读性角度来说,就需要在编写ws代码时进行一些相应的配置了,比如说ws名称,