此问题发生在数据库迁移过程中。源数据库:自己笔记本上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语句都会有相应的提示,请输入时务必仔细。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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 命令未正确结束,不过执行上一行命令已经生效,其他文章里未提到本行。

1
2
3
4
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/ldpssts@orcl fromuser=lspss touser=ldpssts file=D:\imp\ldpssts.dmp log=D:\imp\ldpssts.log ,导入执行成功。

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

  1. Oracle11g字符集AL32UTF8修改为ZHS16GBK详解【转】

    ------感谢作者,确实解决了问题.分享下,希望帮到更多人 此问题发生在数据库迁移过程中.源数据库:自己笔记本上win7 64位系统的oracle11g个人版,字符集ZHS16GBK :目标数据库, ...

  2. 修改字符集AL32UTF8修改为ZHS16GBK详解

    登陆sqlplus,在命令行输入 sqlplus sys/sys as sysdba;//登陆sqlplus SQL>SHUTDOWN IMMEDIATE; SQL>STARTUP MOU ...

  3. Mysql修改表结构详解

    添加字段: alter table `user_movement_log`Add column GatewayId int not null default 0 AFTER `Regionid` (在 ...

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

    1.查看.修改Linux时区与时间 一.linux时区的查看与修改 1,查看当前时区date -R 2,修改设置时区方法1:tzselect 方法2:仅限于RedHat Linux 和 CentOSt ...

  5. Oracle 11g修改字符集AL32UTF8为ZHS16GBK

    oracle11g更改字符集AL32UTF8为ZHS16GBK当初安装oracle的时候选择的默认安装,结果字符集不是以前经常用的16GBK,要改字符集,从网上找到了方法并试了一下,果然好用! 具体如 ...

  6. MySQL字符集详解

    Reference:  https://www.cnblogs.com/wcwen1990/p/6917109.html MySQL字符集详解   一.字符集和校验规则 字符集是一套符合和编码,校验规 ...

  7. ORCALE字符集AL32UTF8和ZHS16GBK的互相转换

    AL32UTF8转成ZHS16GBK cmd中输入“SQLPLUS”,回车,然后再在用户名下输入“SYS AS SYSDBA”,回车 密码后面输入“SYS”,回车.这里输入密码是隐式的,所以看不见,只 ...

  8. Linux命令:修改文件权限命令chmod、chgrp、chown详解

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权 限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而 ...

  9. ASP.NET 操作Cookie详解 增加,修改,删除

    ASP.NET 操作Cookie详解 增加,修改,删除 Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密).定义于RFC2109.它 ...

随机推荐

  1. WPF 自定义ContextMenu且为左键点击显示

    <Button Click="Button_Click_3" Style="{StaticResource NormalButtonStyle}"> ...

  2. python 数据类型---列表使用之三

    1. 判断列表中是否存在一个元素: "in" 的使用 list = ['Frank', 99, 'is',78, 7,3,4,'smart'] print(99 in list) ...

  3. WEB项目会话集群的三种办法

    web集群时session同步的3种方法 在做了web集群后,你肯定会首先考虑session同步问题,因为通过负载均衡后,同一个IP访问同一个页面会被分配到不同的服务器上, 如果session不同步的 ...

  4. Jquery元素选取、常用方法

    一:常用的选择器:(李昌辉) 基本选择器 $("#myDiv") //匹配唯一的具有此id值的元素 $("div") //匹配指定名称的所有元素 $(" ...

  5. SpringMVC类型转换器、属性编辑器

    对于MVC框架,参数绑定一直觉得是很神奇很方便的一个东西,在参数绑定的过程中利用了属性编辑器.类型转换器 参数绑定流程 参数绑定:把请求中的数据,转化成指定类型的对象,交给处理请求的方法 请求进入到D ...

  6. mui scroll和上拉加载/下拉刷新

    mui中 scroll和上拉加载/下拉刷新同时存在会出现两个滚动条 把/*   */ /* //mui页面鼠标拖动代码: mui('.mui-scroll-wrapper').scroll({ dec ...

  7. 无法解决“Microsoft.SharePoint.Security, Version=15.0.0.0,”与“Microsoft.SharePoint.Security, Version=14.0.0.0”之间的冲突

    VisualStudio 2013创建控制台项目,.NetFramework选为4.5.生成目标平台:x64.然后添加对Microsoft.SharePoint.dll的引用. 生成项目时," ...

  8. js实现发送验证码倒计时按钮

    在写注册页面时,有时候需要发送注册邮件来获取验证码,但是为了防止多次重复发送邮件, 必须让按钮隔一段时间后才能再次使用. 代码如下: <html> <head> <met ...

  9. js内存泄露的几种情况详细探讨

    内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束.在C++中,因为是手动管理内存,内存泄露是经常出现的事情.而现在流行的C#和Java等语言采用了自动垃圾回收方法管理内存,正常使 ...

  10. 怎么修改与设置.jsp文件属性?

    1.首先  打开  >>  Myeclipse或Eclipse.(我用的是Myeclipse) 2.打开  >>  Window  >>  Preferences  ...