[?]Oracle 10g sqlplus 的Bug?
在学习“统计信息”的过程中遇到了一个奇怪的问题,初步怀疑是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?相关推荐
- oracle 10g sqlplus登录显示问号,oracle sqlplus 连接时,connection to 显示的是问号
linux下面是用sqlplus操作数据库,出现问号: [oracle@rac2 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Produc ...
- oracle 10g磁盘管理,Oracle 10g UNDO表空间过大导致磁盘空间不足的解决
在Oracle 10g数据库的应用中,出现了UNDO表空间过大导致磁盘空间不足而崩溃的现象(ORA-30036: unable to extend segment by 8 in undo table ...
- Oracle 10g 应用补丁PSU 10.2.0.5.180717
最近测试了一下在Oracle 10g下面(单实例下面)升级.应用补丁PSU 10.2.0.5.180717,打这个补丁的主要原因是 Oracle 将于 2019年6月启用新的SCN兼容性,并且由于Bi ...
- CentOS 6.3(x86_64)下安装Oracle 10g R2
CentOS 6.3(x86_64)下安装Oracle 10g R2 目 录 一.硬件要求 二.软件 三.系统安装注意 四.安装Oracle前的系统准备工作 五.安装Oracle,并进行相关设置 六. ...
- Debian Squeeze AMD64安装Oracle 10g x86_64 10.2.0....
2019独角兽企业重金招聘Python工程师标准>>> 服务器操作系统为Debian Squeeze AMD64,没有安装X,通过ssh远程访问.客户端为debian testing ...
- 在linux中安装oracle中文包,在Linux命令行下安装Oracle 10g
Oracle 10g支持在命令行下用静默模式(Silent)安装,给那些没有安装图形界面的Linux系统提供了极大的便利. 下面以Fedora Core 6为例,介绍在命令行下安装OracleOrac ...
- (超详细)Oracle 10g RAC 添加节点实验操作总结
Oracle 10g RAC 添加节点实验操作总结 目 录 RAC物理结构...3 一. 安装前准备及OS安装配置... 4 1.安装并配置新节点的虚拟机...4 2.节点三(dbi)的网络配置 ...
- Oracle 10G重建EM DB Control.
Oracle 10G R2重建EM DB Control.如果安装后没有修改过IP地址或机器名字,可以跳过下面1和2两步. 1.drop configuration files and reposit ...
- oracle 257,ORACLE 10g SYSAUX表空间快速增长之WRH$_ACTIVE_SESSION_HISTORY篇
近一段时间监控生产数据库的表空间使用情况,发现SYSAUX表空间非常大(17g之多),而且每天都有几十M的增长,看到此现象后,认为这很不正常,分析SYSAUX表空间那些segments占用空间比较大: ...
最新文章
- 解救被困传销女演员 助人减肥找老婆 蚂蚁森林又现神功能
- linux shell sed 添加空行
- linux修改权限后不能开机,打造完美Linux系统:疑难杂症的解决(转)
- 2.6.24及以上版本内核裁剪后启动黑屏的解决办法
- jsp 构建单页应用_如何使用服务器端Blazor构建单页应用程序
- 无状态shiro认证组件(禁用默认session)
- fiddler启动文件_如何成为Fiddler大神,请看这里!
- micropython中文教程.pdf_micropython中文教程
- java 8 lamda,Java8中你可能不知道的一些地方之Lambda表达式实战
- python第八十八天----dom js
- 向量空间的基和维数例题_线性空间的基和维数
- yapi 数据库隔天数据就全没了_Yapi 部署
- PRSice-2软件安装教程
- 街头篮球一直提示服务器维护怎么解决,街头篮球为什么进不去 街头篮球进不去怎么办...
- 村上春树的那些扎心语录!请细细品味!
- html5经纬度定位 源码_利用HTML5定位功能获取经纬度,在根据经纬度利用百度地图获取位置信息...
- idea中GIT版本回退、
- c语言二级指针开辟空间
- 大数据开发认知--spark
- 计算机操作系统计算题及答案(5),5计算机操作系统练习题及答案.doc
热门文章
- csmar eco research
- msf principle
- 如何在大学和工作后让自己逐渐变强?
- aliyun tianchi ai contest meeting note
- 远程桌面中指定在用户登录时启动的程序
- 338. Counting Bits_比特位计数_简单动态规划
- 实际应用中git(合并本地与服务器项目)
- skynet 报错 skynet 服务缺陷 Lua死循环
- 第28天:js-Tab栏切换封装函数
- 《Android App开发入门:使用Android Studio 2.X开发环境》——1-2 在计算机的仿真器上执行 App...