在学习“统计信息”的过程中遇到了一个奇怪的问题,初步怀疑是Oracle 10g sqlplus 的Bug。

记录如下:

-- 1。找个测试用户建一个
create table table01 as
with seq as (select level num from dualconnect by level<=250
) ,
testdata as (select s2.num,rpad('killkill',100,'*') dummy fromseq s1 , seq s2where s1.num <= s2.num
)
select * from testdata ;-- 2。发出几条 select 的sql,提示 oracle 收集这两个列的统计信息:
select count(*) from table01 where num=1;
select count(*) from table01 where num=10;
select count(*) from table01 where num=100;
select count(*) from table01 where num=200;
select count(*) from table01 where dummy='1';
select count(*) from table01 where dummy='10';
select count(*) from table01 where dummy='100';
select count(*) from table01 where dummy='200';--  在 num 列上建立索引,这个貌似不影响结果,就不做了。-- 3。做一个样本为 100% 的统计信息收集
exec dbms_stats.gather_table_stats( user , 'TABLE01' , estimate_percent => 100 , cascade=>true );--  4。看看列的统计信息,这句出问题了:
select utl_raw.cast_to_number( low_value) as  low_value ,utl_raw.cast_to_number(high_value) as high_value ,num_distinct ,density,histogram ,num_buckets,SAMPLE_SIZE
from user_tab_col_statistics
where table_name='TABLE01'
and column_name in ('NUM','DUMMY')

以下是 10g 的 sqlplus的结果:

LOW_VALUE HIGH_VALUE NUM_DISTINCT    DENSITY HISTOGRAM       NUM_BUCKETS SAMPLE_SIZE
---------- ---------- ------------ ---------- --------------- ----------- -----------1        250          250 .000015936 FREQUENCY               250       31375
>>>>> sqlplus 卡在这,完全无视 Ctrl+C         以下是 11g 的 sqlplus 的结果
LOW_VALUE HIGH_VALUE NUM_DISTINCT    DENSITY HISTOGRAM       NUM_BUCKETS SAMPLE_SIZE
---------- ---------- ------------ ---------- --------------- ----------- -----------1        250          250 .000015936 FREQUENCY               250       313751 .000015936 FREQUENCY                 1       31375

Linux TOP的输出:

top - 17:01:37 up 248 days,  1:16,  2 users,  load average: 0.74, 1.50, 1.81
Tasks: 170 total,   2 running, 168 sleeping,   0 stopped,   0 zombie
Cpu0  :  0.0% us,  0.0% sy,  0.0% ni, 100.0% id,  0.0% wa,  0.0% hi,  0.0% si
Cpu1  :  0.0% us,  0.0% sy,  0.0% ni, 100.0% id,  0.0% wa,  0.0% hi,  0.0% si
Cpu2  :  0.0% us,  0.0% sy,  0.0% ni, 100.0% id,  0.0% wa,  0.0% hi,  0.0% si
Cpu3  : 100.0% us,  0.0% sy,  0.0% ni,  0.0% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   8165004k total,  8116256k used,    48748k free,    23328k buffers
Swap:  2031608k total,   110732k used,  1920876k free,  6977144k cachedPID USER      PR  NI %CPU    TIME+  %MEM  VIRT  RES  SHR S COMMAND
29504 oracle    25   0  100   0:23.39  0.1 37160  11m 7560 R sqlplus
24161 root      16   0    2 179:17.39  0.7  167m  57m  19m S vmware-hostd
29872 oracle    15   0    2   0:00.08  0.0  6292 1208  848 R top 1 root      16   0    0   0:56.28  0.0  4756  548  456 S init     

Solaris 10 prstat 的命令输出:

   PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP
19124 ora10g     27M   11M cpu18   20    0   0:01:06  24% sqlplus/1
19214 root     5616K 3784K cpu2    59    0   0:00:00 0.1% prstat/1
26928 ora11g    401M  236M sleep   59    0   0:36:17 0.0% oracle/1
19194 ora11g    401M  279M sleep   59    0   0:00:00 0.0% oracle/1
19169 ora10g   2567M 1619M sleep   59    0   0:00:02 0.0% oracle/11
26916 ora11g    400M  235M sleep  101    -   0:40:35 0.0% oracle/1
19196 ora11g    400M  275M sleep   59    0   0:00:00 0.0% oracle/1
25333 ora11g    451M  347M sleep   59    0   0:07:34 0.0% java/50167 root     9480K 3672K sleep   59    0   0:03:30 0.0% nscd/32

sqlplus cpu使用率 100% ,唯有 kill pid 才能结束。

找了几台机器测试:
受影响的sqlplus:
Oracle 10.2.0.1 on CentOS 4.6/5.2 的 sqlplus (相当 RHEL 4.6/5.2)
Oracle 10.2.0.2 on CentOS 4.7 的 sqlplus
Oracle 10.2.0.4 on Solaris 10(SPARC) 的 sqlplus
sqlplus on windows 2003 32bit 的 sqlplus

不受影响的sqlplus:
Oracle 11.2.0.1 on CentOS 4.6 的 sqlplus

从测试来看 10g 的sqlplus 存在问题,而 11g 的sqlplus 不存在这个问题。

sqlplus hang住的时候,从v$session_wait 可以查到如下信息:

       SID       SEQ# EVENT                           WAIT_TIME SECONDS_IN_WAIT STATE
---------- ---------- ------------------------------ ---------- --------------- -------------------141         82 SQL*Net message from client             0             252 WAITING

转载于:https://www.cnblogs.com/killkill/archive/2010/09/08/1821603.html

[?]Oracle 10g sqlplus 的Bug?相关推荐

  1. oracle 10g sqlplus登录显示问号,oracle sqlplus 连接时,connection to 显示的是问号

    linux下面是用sqlplus操作数据库,出现问号: [oracle@rac2 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Produc ...

  2. oracle 10g磁盘管理,Oracle 10g UNDO表空间过大导致磁盘空间不足的解决

    在Oracle 10g数据库的应用中,出现了UNDO表空间过大导致磁盘空间不足而崩溃的现象(ORA-30036: unable to extend segment by 8 in undo table ...

  3. Oracle 10g 应用补丁PSU 10.2.0.5.180717

    最近测试了一下在Oracle 10g下面(单实例下面)升级.应用补丁PSU 10.2.0.5.180717,打这个补丁的主要原因是 Oracle 将于 2019年6月启用新的SCN兼容性,并且由于Bi ...

  4. CentOS 6.3(x86_64)下安装Oracle 10g R2

    CentOS 6.3(x86_64)下安装Oracle 10g R2 目 录 一.硬件要求 二.软件 三.系统安装注意 四.安装Oracle前的系统准备工作 五.安装Oracle,并进行相关设置 六. ...

  5. Debian Squeeze AMD64安装Oracle 10g x86_64 10.2.0....

    2019独角兽企业重金招聘Python工程师标准>>> 服务器操作系统为Debian Squeeze AMD64,没有安装X,通过ssh远程访问.客户端为debian testing ...

  6. 在linux中安装oracle中文包,在Linux命令行下安装Oracle 10g

    Oracle 10g支持在命令行下用静默模式(Silent)安装,给那些没有安装图形界面的Linux系统提供了极大的便利. 下面以Fedora Core 6为例,介绍在命令行下安装OracleOrac ...

  7. (超详细)Oracle 10g RAC 添加节点实验操作总结

    Oracle 10g RAC 添加节点实验操作总结 目  录   RAC物理结构...3 一. 安装前准备及OS安装配置... 4 1.安装并配置新节点的虚拟机...4 2.节点三(dbi)的网络配置 ...

  8. Oracle 10G重建EM DB Control.

    Oracle 10G R2重建EM DB Control.如果安装后没有修改过IP地址或机器名字,可以跳过下面1和2两步. 1.drop configuration files and reposit ...

  9. oracle 257,ORACLE 10g SYSAUX表空间快速增长之WRH$_ACTIVE_SESSION_HISTORY篇

    近一段时间监控生产数据库的表空间使用情况,发现SYSAUX表空间非常大(17g之多),而且每天都有几十M的增长,看到此现象后,认为这很不正常,分析SYSAUX表空间那些segments占用空间比较大: ...

最新文章

  1. 解救被困传销女演员 助人减肥找老婆 蚂蚁森林又现神功能
  2. linux shell sed 添加空行
  3. linux修改权限后不能开机,打造完美Linux系统:疑难杂症的解决(转)
  4. 2.6.24及以上版本内核裁剪后启动黑屏的解决办法
  5. jsp 构建单页应用_如何使用服务器端Blazor构建单页应用程序
  6. 无状态shiro认证组件(禁用默认session)
  7. fiddler启动文件_如何成为Fiddler大神,请看这里!
  8. micropython中文教程.pdf_micropython中文教程
  9. java 8 lamda,Java8中你可能不知道的一些地方之Lambda表达式实战
  10. python第八十八天----dom js
  11. 向量空间的基和维数例题_线性空间的基和维数
  12. yapi 数据库隔天数据就全没了_Yapi 部署
  13. PRSice-2软件安装教程
  14. 街头篮球一直提示服务器维护怎么解决,街头篮球为什么进不去 街头篮球进不去怎么办...
  15. 村上春树的那些扎心语录!请细细品味!
  16. html5经纬度定位 源码_利用HTML5定位功能获取经纬度,在根据经纬度利用百度地图获取位置信息...
  17. idea中GIT版本回退、
  18. c语言二级指针开辟空间
  19. 大数据开发认知--spark
  20. 计算机操作系统计算题及答案(5),5计算机操作系统练习题及答案.doc

热门文章

  1. csmar eco research
  2. msf principle
  3. 如何在大学和工作后让自己逐渐变强?
  4. aliyun tianchi ai contest meeting note
  5. 远程桌面中指定在用户登录时启动的程序
  6. 338. Counting Bits_比特位计数_简单动态规划
  7. 实际应用中git(合并本地与服务器项目)
  8. skynet 报错 skynet 服务缺陷 Lua死循环
  9. 第28天:js-Tab栏切换封装函数
  10. 《Android App开发入门:使用Android Studio 2.X开发环境》——1-2 在计算机的仿真器上执行 App...