[20161219]关于LANGUAGE_MISMATCH.txt

[20161219]为什么光标不共享(LANGUAGE_MISMATCH).txt

--生产系统看看那种情况出现比较多,写一个脚本:
select
sum(decode(UNBOUND_CURSOR,'Y',1,0))    UNBOUND_CURSOR,
sum(decode(SQL_TYPE_MISMATCH,'Y',1,0))    SQL_TYPE_MISMATCH,
sum(decode(OPTIMIZER_MISMATCH,'Y',1,0))    OPTIMIZER_MISMATCH,
sum(decode(OUTLINE_MISMATCH,'Y',1,0))    OUTLINE_MISMATCH,
sum(decode(STATS_ROW_MISMATCH,'Y',1,0))    STATS_ROW_MISMATCH,
sum(decode(LITERAL_MISMATCH,'Y',1,0))    LITERAL_MISMATCH,
sum(decode(FORCE_HARD_PARSE,'Y',1,0))    FORCE_HARD_PARSE,
sum(decode(EXPLAIN_PLAN_CURSOR,'Y',1,0))    EXPLAIN_PLAN_CURSOR,
sum(decode(BUFFERED_DML_MISMATCH,'Y',1,0))    BUFFERED_DML_MISMATCH,
sum(decode(PDML_ENV_MISMATCH,'Y',1,0))    PDML_ENV_MISMATCH,
sum(decode(INST_DRTLD_MISMATCH,'Y',1,0))    INST_DRTLD_MISMATCH,
sum(decode(SLAVE_QC_MISMATCH,'Y',1,0))    SLAVE_QC_MISMATCH,
sum(decode(TYPECHECK_MISMATCH,'Y',1,0))    TYPECHECK_MISMATCH,
sum(decode(AUTH_CHECK_MISMATCH,'Y',1,0))    AUTH_CHECK_MISMATCH,
sum(decode(BIND_MISMATCH,'Y',1,0))    BIND_MISMATCH,
sum(decode(DESCRIBE_MISMATCH,'Y',1,0))    DESCRIBE_MISMATCH,
sum(decode(LANGUAGE_MISMATCH,'Y',1,0))    LANGUAGE_MISMATCH,
sum(decode(TRANSLATION_MISMATCH,'Y',1,0))    TRANSLATION_MISMATCH,
sum(decode(BIND_EQUIV_FAILURE,'Y',1,0))    BIND_EQUIV_FAILURE,
sum(decode(INSUFF_PRIVS,'Y',1,0))    INSUFF_PRIVS,
sum(decode(INSUFF_PRIVS_REM,'Y',1,0))    INSUFF_PRIVS_REM,
sum(decode(REMOTE_TRANS_MISMATCH,'Y',1,0))    REMOTE_TRANS_MISMATCH,
sum(decode(LOGMINER_SESSION_MISMATCH,'Y',1,0))    LOGMINER_SESSION_MISMATCH,
sum(decode(INCOMP_LTRL_MISMATCH,'Y',1,0))    INCOMP_LTRL_MISMATCH,
sum(decode(OVERLAP_TIME_MISMATCH,'Y',1,0))    OVERLAP_TIME_MISMATCH,
sum(decode(EDITION_MISMATCH,'Y',1,0))    EDITION_MISMATCH,
sum(decode(MV_QUERY_GEN_MISMATCH,'Y',1,0))    MV_QUERY_GEN_MISMATCH,
sum(decode(USER_BIND_PEEK_MISMATCH,'Y',1,0))    USER_BIND_PEEK_MISMATCH,
sum(decode(TYPCHK_DEP_MISMATCH,'Y',1,0))    TYPCHK_DEP_MISMATCH,
sum(decode(NO_TRIGGER_MISMATCH,'Y',1,0))    NO_TRIGGER_MISMATCH,
sum(decode(FLASHBACK_CURSOR,'Y',1,0))    FLASHBACK_CURSOR,
sum(decode(ANYDATA_TRANSFORMATION,'Y',1,0))    ANYDATA_TRANSFORMATION,
sum(decode(PDDL_ENV_MISMATCH,'Y',1,0))    PDDL_ENV_MISMATCH,
sum(decode(TOP_LEVEL_RPI_CURSOR,'Y',1,0))    TOP_LEVEL_RPI_CURSOR,
sum(decode(DIFFERENT_LONG_LENGTH,'Y',1,0))    DIFFERENT_LONG_LENGTH,
sum(decode(LOGICAL_STANDBY_APPLY,'Y',1,0))    LOGICAL_STANDBY_APPLY,
sum(decode(DIFF_CALL_DURN,'Y',1,0))    DIFF_CALL_DURN,
sum(decode(BIND_UACS_DIFF,'Y',1,0))    BIND_UACS_DIFF,
sum(decode(PLSQL_CMP_SWITCHS_DIFF,'Y',1,0))    PLSQL_CMP_SWITCHS_DIFF,
sum(decode(CURSOR_PARTS_MISMATCH,'Y',1,0))    CURSOR_PARTS_MISMATCH,
sum(decode(STB_OBJECT_MISMATCH,'Y',1,0))    STB_OBJECT_MISMATCH,
sum(decode(CROSSEDITION_TRIGGER_MISMATCH,'Y',1,0))    CROSSEDITION_TRIGGER_MISMATCH,
sum(decode(PQ_SLAVE_MISMATCH,'Y',1,0))    PQ_SLAVE_MISMATCH,
sum(decode(TOP_LEVEL_DDL_MISMATCH,'Y',1,0))    TOP_LEVEL_DDL_MISMATCH,
sum(decode(MULTI_PX_MISMATCH,'Y',1,0))    MULTI_PX_MISMATCH,
sum(decode(BIND_PEEKED_PQ_MISMATCH,'Y',1,0))    BIND_PEEKED_PQ_MISMATCH,
sum(decode(MV_REWRITE_MISMATCH,'Y',1,0))    MV_REWRITE_MISMATCH,
sum(decode(ROLL_INVALID_MISMATCH,'Y',1,0))    ROLL_INVALID_MISMATCH,
sum(decode(OPTIMIZER_MODE_MISMATCH,'Y',1,0))    OPTIMIZER_MODE_MISMATCH,
sum(decode(PX_MISMATCH,'Y',1,0))    PX_MISMATCH,
sum(decode(MV_STALEOBJ_MISMATCH,'Y',1,0))    MV_STALEOBJ_MISMATCH,
sum(decode(FLASHBACK_TABLE_MISMATCH,'Y',1,0))    FLASHBACK_TABLE_MISMATCH,
sum(decode(LITREP_COMP_MISMATCH,'Y',1,0))    LITREP_COMP_MISMATCH,
sum(decode(PLSQL_DEBUG,'Y',1,0))    PLSQL_DEBUG,
sum(decode(LOAD_OPTIMIZER_STATS,'Y',1,0))    LOAD_OPTIMIZER_STATS,
sum(decode(ACL_MISMATCH,'Y',1,0))    ACL_MISMATCH,
sum(decode(FLASHBACK_ARCHIVE_MISMATCH,'Y',1,0))    FLASHBACK_ARCHIVE_MISMATCH,
sum(decode(LOCK_USER_SCHEMA_FAILED,'Y',1,0))    LOCK_USER_SCHEMA_FAILED,
sum(decode(REMOTE_MAPPING_MISMATCH,'Y',1,0))    REMOTE_MAPPING_MISMATCH,
sum(decode(LOAD_RUNTIME_HEAP_FAILED,'Y',1,0))    LOAD_RUNTIME_HEAP_FAILED,
sum(decode(HASH_MATCH_FAILED,'Y',1,0))    HASH_MATCH_FAILED,
sum(decode(PURGED_CURSOR,'Y',1,0))    PURGED_CURSOR,
sum(decode(BIND_LENGTH_UPGRADEABLE,'Y',1,0))    BIND_LENGTH_UPGRADEABLE,
sum(decode(USE_FEEDBACK_STATS,'Y',1,0))    USE_FEEDBACK_STATS
from v$sql_shared_cursor ;

--结果如下:
Record View
As of: 2016/12/19 15:06:48

OPTIMIZER_MISMATCH:             12
STATS_ROW_MISMATCH:             1
AUTH_CHECK_MISMATCH:            63
BIND_MISMATCH:                  422
LANGUAGE_MISMATCH:              5642
TRANSLATION_MISMATCH:           11
BIND_EQUIV_FAILURE:             235
INSUFF_PRIVS_REM:               52
INCOMP_LTRL_MISMATCH:           10
USER_BIND_PEEK_MISMATCH:        9
TOP_LEVEL_RPI_CURSOR:           9
BIND_UACS_DIFF:                 153
PLSQL_CMP_SWITCHS_DIFF:         1
TOP_LEVEL_DDL_MISMATCH:         9
MULTI_PX_MISMATCH:              2
ROLL_INVALID_MISMATCH:          1
OPTIMIZER_MODE_MISMATCH:        13
LOAD_OPTIMIZER_STATS:           73
HASH_MATCH_FAILED:              26
PURGED_CURSOR:                  25
BIND_LENGTH_UPGRADEABLE:        1657
USE_FEEDBACK_STATS:             1340

--//注:删除等于0的行,不然太长了.可以发现主要问题集中在LANGUAGE_MISMATCH.测一下这个产生的原因.

1.环境:

SCOTT@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

--从LANGUAGE_MISMATCH看应该与语言环境设置有关.

2.设置2种情况下环境变量:

set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

alter system flush shared_pool;
alter system flush shared_pool;

--分别登录,然后执行:select * from dept where deptno=10;确定sql_id='4xamnunv51w9j'.

SCOTT@book> select executions,sql_id,child_number from v$sql where  sql_id='4xamnunv51w9j';
EXECUTIONS SQL_ID        CHILD_NUMBER
---------- ------------- ------------
         2 4xamnunv51w9j            0

--奇怪可以发现光标是共享的.为什么?

3.换成字符参数看看:

--分别登录,然后执行:Select * from dept where DNAME='ACCOUNTING';确定sql_id='727p30dc2pq3z'

SCOTT@book> select executions,sql_id,child_number from v$sql where  sql_id='727p30dc2pq3z';
EXECUTIONS SQL_ID        CHILD_NUMBER
---------- ------------- ------------
         1 727p30dc2pq3z            0
         1 727p30dc2pq3z            1

SCOTT@book> @ &r/share 727p30dc2pq3z
SQL_TEXT                       = Select * from dept where DNAME='ACCOUNTING'
SQL_ID                         = 727p30dc2pq3z
ADDRESS                        = 000000007D691210
CHILD_ADDRESS                  = 000000007DB178A0
CHILD_NUMBER                   = 0
REASON                         = <ChildNode><ChildNumber>0</ChildNumber><ID>45</ID><reason>NLS Settings(0)</reason><size>2x4</size><SessionLengthSemantics>0</SessionLengthSemantics><CursorLengthSemantics>0</CursorLengthSemantics></ChildNode>
--------------------------------------------------
SQL_TEXT                       = Select * from dept where DNAME='ACCOUNTING'
SQL_ID                         = 727p30dc2pq3z
ADDRESS                        = 000000007D691210
CHILD_ADDRESS                  = 000000007D1A6D70
CHILD_NUMBER                   = 1
LANGUAGE_MISMATCH              = Y
REASON                         =
--------------------------------------------------
PL/SQL procedure successfully completed.

--可以发现如果字符字段不能共享就出现了.

4.很明显我们系统在实施安装时存在2种设置环境,各个安装人员的安装方式不统一,现在要纠正困难重重.
--当然也与我们的以前的旧系统有关,以前我们使用字符集是AMERICAN_AMERICA.US7ASCII.

--我能否有视图查询环境呢?我跟一下视图定义,最后x$nls_parameters,但是这个是单个会话的,不是全部的.

时间: 2024-10-19 19:31:33

[20161219]关于LANGUAGE_MISMATCH.txt的相关文章

[20161216]关于library cache lock.txt

[20161216]关于library cache lock.txt --这几天一直在关注这个链接,http://www.itpub.net/thread-2073170-1-1.html --就是library cache lock导致挂死业务,一般引起这个问题编译包,而应用正好在使用执行这个包,以及11g口令大小写导致无法登录的问题, --我自己很久以前也遇到过一些,那时的系统是10g,http://www.itpub.net/thread-1842463-1-1.html,但是只要分析某个

[20161216]toad下显示真实的执行计划.txt

[20161216]toad下显示真实的执行计划.txt --大家都应该知道使用explain plan看执行计划,有时候显示的执行计划不是真实的执行计划.现在我虽然使用它看,仅仅作为参考. --昨天看链接: http://www.toadworld.com/platforms/oracle/b/weblog/archive/2016/12/13/toad-explain-plan-tip-returning-actual-sql-execution-explain-plan --才知道toad

wince下,使用C# ,把数据写入txt文件中

问题描述 wince下,使用C# ,把数据写入txt文件中 各位高手大家好,我在wince下,使用C# ,把数据写入txt文件中,所有的代码都执行完成,也没有发生任何错误,但是我打开txt里面是空白的,没有任何数据,不知其解,望高手不吝指教,谢谢.写入txt的代码如下: FileStream fs = null; StreamWriter sw = null; try { fs = new FileStream(fileName, FileMode.Append, FileAccess.Writ

教你快速将多个TXT文档合并成一个

网上下载的文件常常会分割成好几个文件,阅读起来非常不便,本教程为大家介绍如何快速将多个txt文件合并. 文档合并成一个-快速合并word文档"> 同时选定需要合并的txt文档进行压缩 步骤1:首先选中需要合并的多个TXT文档,然后单击鼠标右键,在弹出的菜单中选中"Win-RAR-添加到压缩文件"命令,这时会出现"压缩文件名和参数"窗口,在"常规"标签页中对压缩文件进行命名,并将"压缩方式"下拉框中的"

txt文件-c++如何控制文件输出的行数?

问题描述 c++如何控制文件输出的行数? 我有一个几千行的txt文件,里面都是ascall字符,我想每次读取30行在控制台显示然后清屏,延迟0.1s后再输出接下来的30行,也就是第一次控制台输出1-30行,清屏,第二次输出31-60行,这样一直下去,直到文件末尾 1. 我希望在每次在控制台显示的时候一次性显示30行的字符,必须一次性显示30行,肉眼不能察觉到是一行一行显示出来的. 解决方案 自己做个计数就好了,30行后,计数清零,重新计数 解决方案二: #include #include #in

如何在java中实现读取一个txt文档中的随机一行

问题描述 如何在java中实现读取一个txt文档中的随机一行 如题,如何在java中实现读取一个txt文档中的随机一行? 主要就是怎么随机读取 解决方案 根据楼上的说法,来总结一下吧,总体来说,就是将文件全部都读取出来,每一行存储到一个数组或集合中,然后再通过产生随机数,来对这个数组或是 集合进行随机的访问.这样一来就解决了 解决方案二: 文本文件只能顺序读,不能随机读.你的需求只能是读取文本文件每一行到一个arraylist,然后得到下标范围,产生一个随机数,取那一行 解决方案三: http:

Word文档批量转换成TXT格式的技巧

使用Word编辑文档的时候,不仅可以保存成Word格式,也可以保存为其它格式.但有的时候需要将大批的已经编辑完成的Word文档转换成文本格式或其他格式文档,怎么办?如果通过"另存为"将是一件十分费时费力的事情. 可能有人说了利用第三方工具软件吧,那是另一话题.在这里笔者要告诉大家的是:批量转换文档格式不求"人",完全可以借助Word本身自带的功能就可以完成批量转换文档格式的工作.为了叙述方便,专家以将Word文档格式批量转换成TXT文本格式为例来介绍其转换过程,具体

C++ 怎么向一个txt文件的指定位置添加文本而不覆盖原有的内容?

问题描述 C++ 怎么向一个txt文件的指定位置添加文本而不覆盖原有的内容? 比如说有一个有文本的txt文件,我要在文本中间添加新文本,怎么做才能不覆盖原来的文本? 解决方案 文件追加,append 解决方案二: http://wenwen.sogou.com/z/q553022171.htmhttp://bbs.csdn.net/topics/390533611 这里有两个链接你看看对你有没有帮助 解决方案三: 以append方式打开 如果是想在一段内容中插入新的内容,就必须先保留插入位置以后

mfc 如何把变量的值用txt输出zzzz,,,,,,,,,,,

问题描述 mfc 如何把变量的值用txt输出zzzz,,,,,,,,,,, mfc 如何把变量的值用txt输出,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 解决方案 char* pszFileName="x:\text.txt; CStdioFile myFile; CFileException fileException; if( myFile.Open(pszFileName,CFile::typeText|CFile::modeCreate|CFile::mo