标签云
asm恢复 bbed bootstrap$ dul In Memory kcbzib_kcrsds_1 kccpb_sanity_check_2 MySQL恢复 ORA-00312 ORA-00607 ORA-00704 ORA-00742 ORA-01110 ORA-01555 ORA-01578 ORA-01595 ORA-08103 ORA-600 2131 ORA-600 2662 ORA-600 3020 ORA-600 4000 ORA-600 4137 ORA-600 4193 ORA-600 4194 ORA-600 16703 ORA-600 kcbzib_kcrsds_1 ORA-600 KCLCHKBLK_4 ORA-15042 ORA-15196 ORACLE 12C oracle dul ORACLE PATCH Oracle Recovery Tools oracle加密恢复 oracle勒索 oracle勒索恢复 oracle异常恢复 Oracle 恢复 ORACLE恢复 ORACLE数据库恢复 oracle 比特币 OSD-04016 YOUR FILES ARE ENCRYPTED 勒索恢复 比特币加密文章分类
- Others (2)
- 中间件 (2)
- WebLogic (2)
- 操作系统 (103)
- 数据库 (1,768)
- DB2 (22)
- MySQL (77)
- Oracle (1,609)
- Data Guard (52)
- EXADATA (8)
- GoldenGate (24)
- ORA-xxxxx (166)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (15)
- ORACLE 21C (3)
- Oracle 23ai (8)
- Oracle ASM (69)
- Oracle Bug (8)
- Oracle RAC (54)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (29)
- Oracle备份恢复 (591)
- Oracle安装升级 (97)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (86)
- PostgreSQL (30)
- pdu工具 (6)
- PostgreSQL恢复 (9)
- SQL Server (32)
- SQL Server恢复 (13)
- TimesTen (7)
- 达梦数据库 (3)
- 达梦恢复 (1)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (39)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (22)
-
最近发表
- ORA-600 kokiasg1故障分析(obj$中核心字典序列全部被恶意删除)
- ORA-00756 ORA-10567故障数据0丢失恢复
- 数据库文件变成32k故障恢复
- tcp连接过多导致监听TNS-12532 TNS-12560 TNS-00502错误
- 文件系统格式化MySQL数据库恢复
- .sstop勒索加密数据库恢复
- 解决一次硬件恢复之后数据文件0kb的故障恢复case
- Error in invoking target ‘libasmclntsh19.ohso libasmperl19.ohso client_sharedlib’问题处理
- ORA-01171: datafile N going offline due to error advancing checkpoint
- linux环境oracle数据库被文件系统勒索加密为.babyk扩展名溯源
- ORA-600 ksvworkmsgalloc: bad reaper
- ORA-600 krccfl_chunk故障处理
- Oracle Recovery Tools恢复案例总结—202505
- ORA-600 kddummy_blkchk 数据库循环重启
- 记录一次asm disk加入到vg通过恢复直接open库的案例
- CHECKDB 发现了 N 个分配错误和 M 个一致性错误
- 达梦数据库dm.ctl文件异常恢复
- Oracle Recovery Tools修复ORA-00742、ORA-600 ktbair2: illegal inheritance故障
- 可能是 tempdb 空间用尽或某个系统表不一致故障处理
- 11.2.0.4库中遇到ORA-600 kcratr_nab_less_than_odr报错
分类目录归档:Oracle
记录一次AIX 4.3.0+ORACLE 8.0.5恢复过程
最近接手一个AIX下面ORACLE 8.0.5恢复需求.这个需求要从2个月前说起.2个月前有客户提出需求,帮他们恢复8.0.5的库(该库被9.2.0.4的ORACLE强制拉过,但是未成功).当我准备去恢复的时候,客户和我说数据库的存储找不到了,暂时不用处理.本来这个事情到此也就算结束了,最多算一个笑话(找人数据库恢复,发现数据库丢了).前几天又接到关于这个恢复的请求,说他们还有磁带的备份(备份方式:begin tablespace backup+cp+archivelog),让我去协助恢复.按照客户的描述,他们购买了国外的读磁带机器可以读取磁带到硬盘,他们解压好数据文件,然后我去恢复,而且数据文件,控制文件,归档日志都存在.我当时认为这个是一个简单的恢复,顺利的话,一个小时就可以搞定.这里告诉我们:哪怕是N久的备份,也可能是最后的救命数据(2004年的磁带备份),一定要做好备份
今天到达现场,客户第一句话:文件没有解压,第二句话:归档日志没有恢复出来.听到这里,我有点感觉情况很不妙.
详细一问:文件没有解压是因为AIX 4.3.0默认的是文件系统格式是jfs,最大支持lv的大小为20g(估计和客户参数有关系),现在如果解压需要分到多个目录中(数据库原始运行就是按照该模式进行的,如:oradata001,oradata002等分别放几个数据文件),需要我去给他们做规划,如果存放这些文件.大脑一晕,dba原来真的什么活都要干啊.本身就对AIX不熟悉,还要去想办法处理这些问题,而且是从来没有见过的AIX 4.3.0.最后通过我和客户的一起努力终于解决了这个问题:使用其他技巧在AIX 4.3中建立jfs2文件系统(先划分小的LV,使用jfs系统,然后修改系统为jfs2,然后增加lv大小),解决以前jfs文件系统限制,解压的时候需要规划文件目录的体力活.这个问题告诉我们:有时候解决问题需要学会变通
归档日志没有恢复出来的原因:因为连续几天的恢复,加上客户本身工作繁忙,可能实在是太累,在最后一盘磁带的恢复的时候(一盘磁带15小时,一共4盘),客户敲错了命令tar -xvf输入成了-cvf,使得磁盘头被覆盖,磁带原则上报废,从而使得归档日志无法恢复出来.这一点点的事故告诉我们:越疲劳越容易出错,越到最后越容易出错,一定要小心谨慎
到这一步,没有解压(已经解决文件系统问题,接下来的解压问题不大),没有归档(修改scn原则上可以解决),这些东西总的来说问题都不大,当我安装好AIX FOR ORACLE 8.0.5,启动数据库到mount状态,核对恢复出来的数据文件和控制文件中的数据文件的时候,发现少了好几个,这下不能容忍了(能够open库,但是可能丢失需要数据,这个太不划算[因为用户还有该备份的前几天的备份]),寻找出现数据文件从磁带中丢失原因:1.因为jfs文件系统限制,不停的mv到其他目录导致丢失.2.uncompress解压丢失.3.最后一盘磁带损坏导致丢失.一切原因都是浮云,解决了jfs2文件系统,客户根据当前的情况,决定使用其他的备份再次从磁带中导出,然后进行恢复
AIX 4.3安装ORACLE 8.0.5
--检查内存 lsattr -El sys0 -a realmem --检查交换分区 lsps -a --检查临时目录 df -k /tmp --检查操作系统位数 getconf HARDWARE_BITMODE bootinfo -y --检查操作系统版本号 oslevel -r --检查软件包 lslpp -l bos.adt.base, bos.adt.libm --检查补丁包 instfix -i | grep IX71948 --升级aix smit install_latest smit update_all 增加用户: useradd oracle 增加组: mkgrp dba 更改用户所属组: usermod -g dba oracle 更改用户密码: passwd oracle pwdadm oracle --关于用户 smit mkuser 建立用户 smit lsuser 列出所有用户的属性 lsuser ALL smit chuser 改变用户属性 rmuser -p * 删除用户* smit rmuser 只删除用户,但是不删除所属目录,等于rmuser smit passwd 修改密码 smit lockuser 给用户加锁 --关于用户组 smit mkgroup 建立新组 smit lsgroup 显示所有组的属性 smit chgroup 修改组的属性 smit rmgroup 删除*组 rmgroup * 配置shell limits( smit chuser) soft FILE size -1 soft CPU time -1 soft DATA segment -1 soft STACK size -1 新建目录: mkdir /u01 更改目录属主: chown oracle /u01 更改目录所属组: chgrp dba /u01 vi /home/oracle/.profile export LINK_CNTRL=L_PTHREADS_D7 export NLS_LANG=american_america.zhs16cgb231280 export ORACLE_OWNER=oracle export ORACLE_TERM=vt100 #export ORACLE_TERM=xterm export ORACLE_BASE=/oracle export ORACLE_HOME=$ORACLE_BASE/product/8.0.5 export ORACLE_SID=ora8 export LD_LIBRARY_PATH=$/ORACLE_HOME/lib:$LD_LIBRARY_PATH export LIBPATH=$ORACLE_HOME/lib:$LIBPATH export ORA_NLS32=$ORACLE_HOME/ocommon/nls/admin/data export PATH=$ORACLE_HOME/bin:$PATH export TMPDIR=/tmp export DISPLAY=172.100.1.2:0.0 set -o vi umask 022 --Mount产品光盘 $ su root -查看光驱 $ lsdev -Cc cdrom # mkdir /cdrom # chmod 777 /cdrom # /etc/mount -rv cdrfs /dev/cd0 /cdrom # exit --运行rootpre.sh脚本。 $ su root # cd /cdrom/orainst # ./rootpre.sh # exit --运行安装程序 $ cd /cdrom/orainst -图形 $ ./orainst /m -字符 $ ./orainst /c # cd $ORACLE_HOME/orainst # ./root.sh
建立密码文件
cd $ORACLE_HOME/dbs orapwd file=orapw$ORACLE_SID password=oracle
创建pfile文件
vi $ORACLE_HOME/dbs/init.ora db_name=ORCL db_files = 5000 control_files = /oradata/ctl1ORCL.ora db_file_multiblock_read_count = 8 db_block_buffers = 100000 shared_pool_size = 115343360 log_checkpoint_interval = 10000 processes = 590 parallel_max_servers = 5 log_buffer = 163840 sequence_cache_entries = 100 sequence_cache_hash_buckets = 90 max_dump_file_size = 102400 global_names = TRUE background_dump_dest=/oracle/trace user_dump_dest=/oracle/trace db_block_size = 4196 remote_login_passwordfile = shared text_enable = TRUE job_queue_processes = 2 job_queue_interval = 10 job_queue_keep_connections = false distributed_lock_timeout = 300 distributed_transactions = 5 open_links = 4
操作8.0.5数据库
--结果测试与win,linux/unix使用svrmgrl命令 C:\oracle\ora80\BIN>SVRMGR30.EXE Oracle Server Manager Release 3.0.5.0.0 - Production (c) Copyright 1997, Oracle Corporation. All Rights Reserved. Oracle8 Release 8.0.5.0.0 - Production PL/SQL Release 8.0.5.0.0 - Production SVRMGR> connect system/manager Connected. SVRMGR> select * from v$version; BANNER ---------------------------------------------------------------- Oracle8 Release 8.0.5.0.0 - Production PL/SQL Release 8.0.5.0.0 - Production CORE Version 4.0.5.0.0 - Production TNS for 32-bit Windows: Version 8.0.5.0.0 - Production NLSRTL Version 3.3.2.0.0 - Production 5 rows selected. SVRMGR> connect internal/oracle Connected. SVRMGR> archive log list Database log mode No Archive Mode Automatic archival Disabled Archive destination %RDBMS80%\ Oldest online log sequence 3 Current log sequence 6 SVRMGR> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SVRMGR> startup mount; ORACLE instance started. Total System Global Area 15077376 bytes Fixed Size 49152 bytes Variable Size 12906496 bytes Database Buffers 2048000 bytes Redo Buffers 73728 bytes Database mounted. SVRMGR> alter database archivelog; Statement processed. SVRMGR> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination C:\oracle\ora80\RDBMS80\ Oldest online log sequence 3 Next log sequence to archive 6 Current log sequence 6
发表在 Oracle备份恢复
一条评论
通过awr指标评估会话建立是否频繁
有朋友问我,通过awr怎么来判断系统这个时间段的会话建立情况,也就是说如果中间件或者客户端程序发生异常,过多的连接数据库.
我这里有个例子,用户的数据库大概在每秒钟建立10个连接左右(相对而言比较频繁)
[oracle@xifenfei tmp]$ grep "18-JUL-2012 18:40:03" listener.log |wc -l 9 [oracle@xifenfei tmp]$ grep "18-JUL-2012 18:40:04" listener.log |wc -l 7 [oracle@xifenfei tmp]$ grep "18-JUL-2012 18:41:04" listener.log |wc -l 12 [oracle@xifenfei tmp]$ grep "18-JUL-2012 18:40" listener.log |wc -l 554 [oracle@xifenfei tmp]$ grep "18-JUL-2012 18:50" listener.log |wc -l 598 [oracle@xifenfei tmp]$ grep "18-JUL-2012 19:00" listener.log |wc -l 597
我们分析这个时间段的awr,看那些地方是可以表明用户会话建立频繁
awr汇总信息
通过这个信息我们可以发现awr报告时间段(120分钟),和数据库在起点和终点的会话数
说明:该数据库问题很多,出现负载高,不全是会话建立频繁导致,这里只分析建立会话相关情况
Load Profile信息
通过这里的Logons为36对于这样的系统来说,明显异常
Top 5 Timed Events
这里的latch: session allocation等待就是比较明显的建立会话时候出现的等待
Time Model Statistics
Time Model Statistics中的connection management call elapsed time大家都明白的,建立会话花费时间
Dictionary Cache Stats
dc_usernames和dc_users请求值偏大
总结说明
在实际工作中:遇到过因为session建立太频繁导致监听繁忙,tnsping延迟比较严重案例,也遇到因为会话建立频繁导致系统内存被消耗完的案例.
在遇到会话建立过于频繁的案例,最有力的说明证据是监听日志,因为awr中的相关数据没有绝对标准(而且awr本身也是一个相对性的东西),而且一般客户对awr中我刚刚列举的数据概念性不强,所以一般只能作为分析的辅助工具,或者为进一步分析监听日志提供理由依据.
发表在 Oracle性能优化
评论关闭
CURSOR_SHARING=SIMILAR引起的悲剧
一个客户反馈说有一系统经常性负载比较高,让我帮忙分析原因
系统负载情况
[oracle@zwq-kfdialdb ~]$ top -c top - 17:11:06 up 78 days, 1:12, 5 users, load average: 124.83, 125.90, 112.13 Tasks: 836 total, 152 running, 684 sleeping, 0 stopped, 0 zombie Cpu(s): 98.1%us, 0.1%sy, 0.0%ni, 1.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 132070908k total, 90494280k used, 41576628k free, 1147384k buffers Swap: 67108856k total, 0k used, 67108856k free, 79109904k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 12179 oracle 15 0 32.5g 142m 139m R 39.0 0.1 6:09.20 oracleahdial (LOCAL=NO) 11530 oracle 16 0 32.5g 469m 466m R 36.1 0.4 11:14.23 oracleahdial (LOCAL=NO) 11816 oracle 15 0 32.5g 467m 463m R 36.1 0.4 6:33.86 oracleahdial (LOCAL=NO) 11577 oracle 15 0 32.5g 480m 477m R 34.7 0.4 7:15.98 oracleahdial (LOCAL=NO) 12136 oracle 16 0 32.5g 455m 452m R 31.9 0.4 9:07.88 oracleahdial (LOCAL=NO) 11237 oracle 16 0 32.5g 997m 992m R 31.2 0.8 20:53.50 oracleahdial (LOCAL=NO) 11427 oracle 16 0 32.5g 137m 135m R 31.2 0.1 11:50.16 oracleahdial (LOCAL=NO) 12051 oracle 16 0 32.5g 459m 456m R 31.2 0.4 6:12.67 oracleahdial (LOCAL=NO) [oracle@zwq-kfdialdb ~]$ vmstat 3 10 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 137 0 0 41566600 1147384 79109888 0 0 0 3 0 0 0 0 99 0 0 146 0 0 41567548 1147384 79109888 0 0 0 47 1058 32190 98 0 2 0 0 150 0 0 41568056 1147384 79109888 0 0 0 39 1081 31543 98 0 2 0 0 12 0 0 41568464 1147384 79109888 0 0 0 23 1056 32111 98 0 2 0 0 62 0 0 41568776 1147384 79109888 0 0 0 11 1067 31474 98 0 2 0 0 108 0 0 41568304 1147384 79109888 0 0 0 39 1059 31193 98 0 2 0 0 140 0 0 41569280 1147384 79109888 0 0 0 48 1063 31171 98 0 2 0 0 140 0 0 41569444 1147384 79109888 0 0 0 40 1075 30508 98 0 2 0 0
通过top和vmstat看出系统现在负载很高,主要都是用户进程导致.
查询等待事件
SQL> select event from v$session where wait_class#<>6; EVENT ---------------------------------------------------------------- cursor: mutex S SQL> / EVENT ---------------------------------------------------------------- cursor: mutex S SQL> / EVENT ---------------------------------------------------------------- cursor: mutex S SQL> / EVENT ---------------------------------------------------------------- cursor: mutex S SQL> SELECT a.*, s.sql_text 2 FROM v$sql s, 3 (SELECT sid, 4 event, 5 wait_class, 6 p1 cursor_hash_value, 7 p2raw Mutex_value, 8 TO_NUMBER (SUBSTR (p2raw, 1, 8), 'xxxxxxxx') hold_mutex_x_sid 9 FROM v$session_wait 10 WHERE event LIKE 'cursor%') a 11 WHERE s.HASH_VALUE = a.cursor_hash_value 12 / no rows selected SQL> select event from v$session where wait_class#<>6; EVENT ---------------------------------------------------------------- SQL*Net message to client
数据库开始的等待事件只有cursor: mutex S,等该等待事件消失后系统负载也恢复正常
再次查看系统负载
[oracle@zwq-kfdialdb ~]$ top -c -i10 top - 17:13:51 up 78 days, 1:15, 6 users, load average: 12.57, 78.21, 96.45 Tasks: 702 total, 2 running, 700 sleeping, 0 stopped, 0 zombie Cpu(s): 0.5%us, 0.2%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 132070908k total, 86477808k used, 45593100k free, 1147500k buffers Swap: 67108856k total, 0k used, 67108856k free, 79116036k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 15045 oracle 16 0 13136 1476 724 R 10.6 0.0 0:00.12 top -c -i10 10010 root 10 -5 0 0 0 D 0.0 0.0 0:00.68 [kondemand/4] 10019 root 10 -5 0 0 0 D 0.0 0.0 1:41.58 [kondemand/13] 10020 root 10 -5 0 0 0 D 0.0 0.0 1:52.28 [kondemand/14] 10021 root 10 -5 0 0 0 R 0.0 0.0 2:01.54 [kondemand/15] 12166 root 24 0 10084 300 216 D 0.0 0.0 0:00.00 /opt/VRTSgab/gablogd [oracle@zwq-kfdialdb ~]$ vmstat 3 10 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 45484264 1147528 79117360 0 0 0 3 0 0 0 0 99 0 0 2 0 0 45468452 1147528 79117456 0 0 4 161 1372 5369 2 2 97 0 0 3 0 0 45463712 1147528 79117584 0 0 4 187 1602 7253 6 0 93 0 0 1 0 0 45458220 1147528 79117648 0 0 1 99 1358 5821 2 0 98 0 0 0 0 0 45475168 1147528 79117712 0 0 0 41 1321 5321 2 0 98 0 0 0 0 0 45473624 1147528 79117744 0 0 3 104 1378 5455 2 0 98 0 0 2 0 0 45474656 1147528 79117776 0 0 0 55 1196 4872 1 0 99 0 0 0 0 0 45474376 1147532 79117824 0 0 8 113 1170 4990 2 0 98 0 0 1 0 0 45475440 1147532 79117872 0 0 1 56 1187 5301 3 0 97 0 0 1 0 0 45475824 1147532 79117888 0 0 3 99 1083 4643 3 0 97 0 0
结合上面的等待事件查询,我们可以大概评估出来,当cursor: mutex S等待消失后,系统负载也恢复正常,现在已经不存在环境,如果要找出问题只能够是借助AWR和ASH
分析ASH
Top User Events
Top SQL with Top Events
Activity Over Time
通过对ASH分析,可以大概确定,在这段时间内,引起系统负载高主要是cursor: mutex S导致
分析AWR
awr整体信息(从这里看数据库是相当的繁忙)
Load Profile(从这里看数据库业务比较小)
Top 5 Timed Foreground Events(主要等待事件cursor: mutex S,和前面分析相符)
OS LOAD(虽然和系统看到有一定出入,但是整体还是展示系统负载较高)
SQL ordered by Version Count(出现cursor: mutex S,因为load profile中解析不多,所以想到高版本问题,这里确实非常高)
通过这里的一些列分析,我们已经基本上可以确定,该数据库因为高版本问题导致cursor: mutex S以及library cache 相关等待严重,从而出现系统负载过高.
找出高版本原因
高版本相关信息和查询请见:关于High Versions Count总结
SQL> select * from table(version_rpt('f8b9tba7sfsb5')); COLUMN_VALUE -------------------------------------------------------------------------------- Version Count Report Version 3.2.1 -- Today's Date 19-jul-12 18:13 RDBMS Version :11.2.0.1.0 Host: zwq-kfdialdb Instance 1 : ahdial ================================================================== Addr: 000000080FA4CEA0 Hash_Value: 2408014181 SQL_ID f8b9tba7sfsb5 Sharable_Mem: 206315729 bytes Parses: 48689 Stmt: 0 select count(*) as col_0_0_ from TBL_SP_SALES_RECORDS tblspsales 1 0_ where tblspsales0_.SALES_RECORDS_STATUS=:"SYS_B_0" and tblsps 2 ales0_.MOBILE_TELE_NO=:"SYS_B_1" 3 COLUMN_VALUE -------------------------------------------------------------------------------- Versions Summary ---------------- AUTH_CHECK_MISMATCH :4 TRANSLATION_MISMATCH :4 ROLL_INVALID_MISMATCH :10219 PURGED_CURSOR :9 Total Versions:10219 Plan Hash Value Summary ----------------------- COLUMN_VALUE -------------------------------------------------------------------------------- Plan Hash Value Count =============== ===== 791727930 920 2820478500 9300 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Details for AUTH_CHECK_MISMATCH : # of Ver PARSING_USER_ID PARSING_SCHEMA_ID PARSING_SCHEMA_NAME ========== =============== ================= =================== 10218 75 75 HOLLYSP COLUMN_VALUE -------------------------------------------------------------------------------- 2 107 107 HOLLYSP_TEST ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Details for TRANSLATION_MISMATCH : Summary of objects probably causing TRANSLATION_MISMATCH Object# Owner.Object_Name ========= ================= 76737 HOLLYSP.TBL_SP_SALES_RECORDS HOLLYSP.TBL_SP_SALES_RECORDS HOLLYSP_TEST.TBL_SP_SALES_RECORDS COLUMN_VALUE -------------------------------------------------------------------------------- 107043 HOLLYSP_TEST.TBL_SP_SALES_RECORDS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Details for ROLL_INVALID_MISMATCH : No details available ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Details for PURGED_CURSOR : No details available #### To further debug Ask Oracle Support for the appropiate level LLL. COLUMN_VALUE -------------------------------------------------------------------------------- alter session set events 'immediate trace name cursortrace address 2408014181, level LLL'; To turn it off do use address 1, level 2147483648 ================================================================ 59 rows selected. SQL> select * from table(version_rpt('6zhjf3qh8gyp9')); COLUMN_VALUE -------------------------------------------------------------------------------- Version Count Report Version 3.2.1 -- Today's Date 19-jul-12 18:15 RDBMS Version :11.2.0.1.0 Host: zwq-kfdialdb Instance 1 : ahdial ================================================================== Addr: 00000007FD46D2A8 Hash_Value: 2693266089 SQL_ID 6zhjf3qh8gyp9 Sharable_Mem: 111904227 bytes Parses: 4880 Stmt: 0 select count(*) as col_0_0_ from TBL_SP_SALES_RECORDS tblspsales 1 0_ where tblspsales0_.SALES_RECORDS_STATUS=:"SYS_B_0" and tblsps 2 ales0_.CAMPAIGN_ID=:"SYS_B_1" and tblspsales0_.IS_CONN=:"SYS_B_2 3 " and tblspsales0_.SALES_TIME>=:"SYS_B_3" and tblspsales0_.SALES 4 _PERSON=:"SYS_B_4" COLUMN_VALUE -------------------------------------------------------------------------------- 5 Versions Summary ---------------- BIND_MISMATCH :4804 INCOMP_LTRL_MISMATCH :372 HASH_MATCH_FAILED :4936 Total Versions:4935 Plan Hash Value Summary COLUMN_VALUE -------------------------------------------------------------------------------- ----------------------- Plan Hash Value Count =============== ===== 1645985080 3 2040125427 4933 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Details for BIND_MISMATCH : Consolidated details for : BIND_MISMATCH,USER_BIND_PEEK_MISMATCH,BIND_UACS_DIFF and COLUMN_VALUE -------------------------------------------------------------------------------- BIND_EQUIV_FAILURE (Mislabled as ROW_LEVEL_SEC_MISMATCH BY bug 6964441 in 11gR1) from v$sql_bind_capture COUNT(*) POSITION MIN(MAX_LENGTH) MAX(MAX_LENGTH) DATATYPE (PRECISION,SCALE) ======== ======== =============== =============== ======== ================ 4936 1 32 32 1 (,) 4936 2 32 32 1 (,) 4936 3 32 32 1 (,) 4936 4 32 32 1 (,) 4936 5 32 32 1 (,) COLUMN_VALUE -------------------------------------------------------------------------------- SUM(DECODE(column,Y, 1, 0) FROM V$SQL IS_OBSOLETE IS_BIND_SENSITIVE IS_BIND_AWARE IS_SHAREABLE =========== ================= ============= ============ 0 4309 0 4309 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Details for INCOMP_LTRL_MISMATCH : No details available ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Details for HASH_MATCH_FAILED : COLUMN_VALUE -------------------------------------------------------------------------------- No details available #### To further debug Ask Oracle Support for the appropiate level LLL. alter session set events 'immediate trace name cursortrace address 2693266089, level LLL'; To turn it off do use address 1, level 2147483648 ================================================================ 62 rows selected.
根据经验,出现这么多的高版本情况,很可能是cursor_sharing参数设置问题
--对应sql语句 select count(*) as col_0_0_ from TBL_SP_SALES_RECORDS tblspsales0_ where tblspsales0_.SALES_RECORDS_STATUS=:"SYS_B_0" and tblspsales0_.CAMPAIGN_ID=:"SYS_B_1" and tblspsales0_.IS_CONN=:"SYS_B_2" and tblspsales0_.SALES_TIME>=:"SYS_B_3" and tblspsales0_.SALES_PERSON=:"SYS_B_4" --cursor_sharing参数 SQL> show parameter cursor_sharing; NAME TYPE VALUE ------------------------------------ -------------------------------- ---------------- cursor_sharing string SIMILAR
根据oracle官方建议在11g中不推荐使用cursor_sharing=SIMILAR,其实在所有版本中都不推荐,设置为该值很容易导致高版本问题.而且该值会出现莫名其妙的,无法解释的高版本问题.而且根据oracle相关文档,在即将发布的12c版本中,将除掉SIMILAR值.对于客户库的该问题,因为很多sql未绑定参数,为了减少硬解析,建议在业务低谷时设置cursor_sharing=FORCE,并刷新shared pool.
发表在 Oracle性能优化
2 条评论