oracle ORA-12899错误的解决方法_ora12899_blue-blue-blue的博客-程序员宅基地

技术标签: 后端框架  oracle  java  数据库  

出现ORA-12899,是字符集引起的:
       中文在UTF-8中占3个字节,ZHS16GBK中占2个字节,源dmp文件字符集是ZHS16GBK库里倒出来的数据,
现在要导入到目标字符集为UTF-8的库里,所以会出现ORA-12899。
 
所以只要修改一下ORACLE 的字符集就可以很好的解决这个问题。
 
修改办法:
数据库字符集在创建后原则上不能更改。不过有3种方法可行。
 
1.增加表字段的长度(这个方法是自己试出来的,下边的两个方法来自网络文章)。
 
比如:原来的表字段长度为varchar2(20),把它增加到varchar(30)即可。如果还不行,就继续增大,直到成功为止。

2. 如果需要修改字符集,通常需要导出数据库数据,重建数据库,再导入数据库数据的方式来转换。

3. 通过ALTER DATABASE CHARACTER SET语句修改字符集,但创建数据库后修改字符集是有限制的,
 
只有新的字符集是当前字符集的超集时才能修改数据库字符集,例如UTF8是US7ASCII的超集,修改数据库字符集可使用ALTER DATABASE CHARACTER SET UTF8。
 
开始-->运行-->cmd,之后输入:"sqlplussys/oracle@IP地址/orcl as SYSDBA"
如果不能正常进入,那就需要你手动输入用户名和密码,进入之后会出现
"SQL>"的提示,
按照下面给出的命令依次执行就可以了,
SQL>SHUTDOWN IMMEDIATE

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 ZHS16GBK ;
ALTER DATABASE CHARACTER SET ZHS16GBK
*ERROR at line 1:
ORA-12712: new character set must be a superset of old character set

报字符集不兼容,此时下INTERNAL_USE指令不对字符集超集进行检查:

SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP

这时候,这个ORA-12899就已经彻底解决了,就可以进行数据的导入了...

 
 
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013538390/article/details/46739103

智能推荐

Ansible运维_资产或许不支持ansible-程序员宅基地

Ansible运维第 1 章 Ansible 介绍及安装1.1 介绍 Ansible 是一个 IT 自动化工具。它能配置系统、部署软件、编排更复杂的 IT 任务,如连续部署或零停机时间滚动更新。Ansible 用 Python 编写,尽管市面上已经有很多可供选择的配置管理解决方案(例如 Salt、Puppet、Chef等),但它们各有优劣,而Ansible的特点在于它的简洁。让 Ansible 在主流的配置管理系统中与众不同的一点便是,它并不需要你在想要配置的每个节点上安装自己的组件。同时提供的_资产或许不支持ansible

oracle 取指定两行记录差值sql_orcale sql 计算两条记录相同字段差值-程序员宅基地

在获取指定两行的差值,我以前都是两个表进行join,再相减,偶尔获得下面的sql,感觉很不错. 例如下面的sql,这里使用了sum, 其中case那里如果是指定是减数则为正数,指定被减数的使用负数,然后再进行sum,那么就是+负数也就是相减,也就获取到指定两行的差值,非常有创意SELECT stat_name, ROUND(sum(case ..._orcale sql 计算两条记录相同字段差值

7 great Android apps for notes and tasks-程序员宅基地

Wunderlist is but one of many great Android apps for creating, managing, and sharing tasks.(Credit: 6 Wunderkinder GmbH)From day one, Android has provided a number of applications to help users stay m

python函数拟合不规则曲线_如何在Python中做指数和对数曲线拟合?我发现只有多项式拟合...-程序员宅基地

我有一组数据,我想比较哪一种曲线可以最好地描述它(不同阶的多项式,指数或对数)。我使用Python和Numpy,多项式拟合有一个函数polyfit()。但是我没有发现这样的指数和对数拟合函数。有没有?或者如何解决呢?最佳解决思路为了拟合y = A + B log x,只需要将y代入(log x)。>>> x = numpy.array([1, 7, 20, 50, 79])>>> y = nump..._对数拟合和指数拟合

Py之argparse:Python库之argparse(命令行解析)简介、安装、使用方法之详细攻略_argparse安装-程序员宅基地

Py之argparse:Python库之argparse(命令行解析)简介、安装、使用方法之详细攻略导读python中的命令行解析最简单最原始的方法是使用sys.argv来实现,更高级的可以使用argparse这个模块。argparse从python 2.7开始被加入到标准库中,所以如果你的python版本还在2.7以下,那么需要先手动安装。除了这两种之外,还有其他框架的命令行解析法,比如..._argparse安装

CompletableFuture 使用详解-程序员宅基地

1、 runAsync 和 supplyAsync方法CompletableFuture 提供了四个静态方法来创建一个异步操作。public static CompletableFuture<Void> runAsync(Runnable runnable)public static CompletableFuture<Void> runAsync(Runnable runnable, Executor executor)public static <U&g._completablefuture

随便推点

pycharm专业版配置ssh连接服务器-程序员宅基地

只有pycharm专业版才有ssh通能配置最后一步同步项目到远程服务器上时,目录不要选择/tmp目录,会被清除,如果不是root用户不要用/mnt目录,因为只有root用户才有写入权限,一般放在用户的目录下即可,既不会被清除,也不会有权限问题。这种情况一般是在使用学校的服务器时多见。远程服务器的话一般直接给的root用户,那么一定要使用/mnt目录,防止项目别清除!参考:https://www.matpool.com/supports/doc-pycharm-connect-matpool/...

WHU 2013 Summer Team Contest #18 - 2013 Multi University 4 [xioumu]_whu2013-程序员宅基地

暑假集训最后一场。之前装系统把硬盘装跪了,于是一直没来写题解。A: 队友写的B: 波利亚计数,我把64种选择全模拟出来,求方案数,不知道为啥错了,还没改[undo]C: 队友看到[undo]D: 先缩点,把所有联通分量分为三类,一类入度为0,出度为0的,一类都不为0。可以证明最后连出来的图,只会剩下第一类和第二类联通分量,其他的会连边加入这两类点数的那类中。然后贪心尽量_whu2013

ElasticSearch学习笔记七(映射参数)_es中analyzer的作用-程序员宅基地

概述在映射Mapping中,前面我们已经学习过type参数,它使用于描述字段类型,详见:ElasticSearch学习笔记五(映射mapping)。除了type参数,Mapping中还有另外27种映射参数。有些参数对于所有字段类型都是通用的,例如boost权重参数。而有些参数则只适用于特定字段,例如analyzer参数只能作用于text字段。下面来看看,es中常用的一些映射参数。参考官方文旦:https://www.elastic.co/guide/en/elasticsearch/referen_es中analyzer的作用

Mac brew 安装iTerm2_brew 安装iiterr2-程序员宅基地

直接命令brew cask install iterm2_brew 安装iiterr2

ld.lld: error: the .gnu.hash section is not compatible_ld.lld: error: ../startup\fc7300_flash.ld:116: at -程序员宅基地

原因:该CPU架构或操作系统不支持此属性(hash-style)解决方案:修改hash-style属性值将--hash-style=gnu 修改为--hash-style=sysv注: 修改文件中所有的hash-style可以通过grep 和 find 查找,然后修改,太多就用sed或ctrl+H如:grep -R "hash-style" `find -na..._ld.lld: error: ../startup\fc7300_flash.ld:116: at least one side of the expr

Swift 设置 tabbar 字体颜色和字体大小_tabbar字体大小_EIamor的博客-程序员宅基地

效果图 代码如下// 在第一个控制器中添加如下代码self.title = "改变字体颜色" tabBarItem.image = UIImage(named: "home_black_icon") tabBarItem.selectedImage = UIImage(named: "home_line_icon")?.withRenderingMode(.al_tabbar字体大小