oracle数据库升级失败怎么办,【案例】Oracle报错ORA-00918 数据库升级后遇到SQL BUG 5368296...
天萃荷净
运维DBA反映生产数据库10.2.0.1存在BUG导致SQL无法使用,在升级到10.2.0.5后执行SQL报错ORA-00918,分析原因为BUG修复后要修改SQL语句,升级数据库到10.2.0.5遭遇ORA-00918: column ambiguously defined
一个数据库从10201升级到10205之后,出现ORA-00918错误,查询mos发现在以前版本中是bug,Oracle好像在10205中把它修复了,结果就是以前应用的sql无法正常执行.这次升级的结果就是客户晚上3点联系开发商紧急修改程序。再次提醒:再小的系统数据库升级都需要做,功能测试,SPA测试,确保升级后功能和性能都正常.
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
PL/SQL Release 10.2.0.5.0 - Production
CORE 10.2.0.5.0 Production
TNS for 64-bit Windows: Version 10.2.0.5.0 - Production
NLSRTL Version 10.2.0.5.0 - Production
1.执行报错ORA-00918
多个表JOIN连接,由于在select中的列未指定表名,而且该列在多个表中有,因此在10205中报ORA-00918错误,Oracle认为在以前的版本中是 Bug 5368296: SQL NOT GENERATING ORA-918 WHEN USING JOIN. 升级到10.2.0.5, 11.1.0.7 and 11.2.0.2版本,需要注意此类问题。修复bug没事,但是修复了之后导致系统需要修改sql才能够运行,确实让人很无语
SQL> set autot trace
SQL> set lines 100
SQL> SELECT yz_id, item_code, DECODE (yzlx, 0, '长期医嘱', '临时医嘱') yzlx,
2 item_name, gg, sl || sldw sl, zyjs, yf, a.pc, zbj, zbh,
3 TO_CHAR (dcl, 'fm9999990.009') || dcldw dcl, a.bz, lb, zyh,ch,xm,
4 bq, cfh, lrysdm, lrysxm, lrrq, hdrdm, hdrxm, hdrq, sender_code,
5 sender_name, send_date, tzysdm, tzysxm, tzrq, ksrq, zxfy,
6 lb_yp_yl, zsq_code
7 FROM op.yz a LEFT OUTER JOIN op.pc b
8 ON NVL (TRIM (UPPER (a.pc)), ' ') = NVL (TRIM (UPPER (b.pc)), ' ')
9 LEFT JOIN op.zy p ON a.zyh = p.zyh
10 WHERE p.cy='在院' AND p.new_patient='1'
11 AND upper(nvl(p.bj,1))<> 'Y'
12 AND (state = '已核对')
13 AND is_in_bill IS NULL
14 ORDER BY ksrq, yz_id ;
bq, cfh, lrysdm, lrysxm, lrrq, hdrdm, hdrxm, hdrq, sender_code,
*
ERROR at line 4:
ORA-00918: column ambiguously defined
SQL> select COLUMN_NAME,TABLE_NAME from DBA_tab_columns where column_name='BQ'
2 AND TABLE_NAME IN('YZ','ZY','PC');
COLUMN_NAME TABLE_NAME
------------------------------ ------------------------------
BQ ZY
BQ YZ
10.2.0.1中执行正常
E:\>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 1月 3 14:09:51 2015
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> set autot trace
SQL> set lines 100
SQL> SELECT yz_id, item_code, DECODE (yzlx, 0, '长期医嘱', '临时医嘱') yzlx,
2 item_name, gg, sl || sldw sl, zyjs, yf, a.pc, zbj, zbh,
3 TO_CHAR (dcl, 'fm9999990.009') || dcldw dcl, a.bz, lb, zyh,ch,xm
,
4 bq, cfh, lrysdm, lrysxm, lrrq, hdrdm, hdrxm, hdrq, sender_code,
5 sender_name, send_date, tzysdm, tzysxm, tzrq, ksrq, zxfy,
6 lb_yp_yl, zsq_code
7 FROM op.yz a LEFT OUTER JOIN op.pc b
8 ON NVL (TRIM (UPPER (a.pc)), ' ') = NVL (TRIM (UPPER (b.pc)), '
')
9 LEFT JOIN op.zy p ON a.zyh = p.zyh
10 WHERE p.cy='在院' AND p.new_patient='1'
11 AND upper(nvl(p.bj,1))<> 'Y'
12 AND (state = '已核对')
13 AND is_in_bill IS NULL
14 ORDER BY ksrq, yz_id ;
已选择19804行。
执行计划
----------------------------------------------------------
ERROR:
ORA-00604: 递归 SQL 级别 2 出现错误
ORA-16000: 打开数据库以进行只读访问
SP2-0612: 生成 AUTOTRACE EXPLAIN 报告时出错
统计信息
----------------------------------------------------------
1 recursive calls
0 db block gets
41945 consistent gets
0 physical reads
0 redo size
2075973 bytes sent via SQL*Net to client
14989 bytes received via SQL*Net from client
1322 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
19804 rows processed
10.2.0.5库中同名列增加表名前缀执行OK
1
SQL> set autot trace
SQL> set lines 100
SQL> SELECT yz_id, item_code, DECODE (yzlx, 0, '长期医嘱', '临时医嘱') yzlx,
2 item_name, gg, sl || sldw sl, zyjs, yf, a.pc, zbj, zbh,
3 TO_CHAR (dcl, 'fm9999990.009') || dcldw dcl, a.bz, lb,zyh,ch,xm,
4 a.bq, cfh, lrysdm, lrysxm, lrrq, hdrdm, hdrxm, hdrq, sender_code,
5 sender_name, send_date, tzysdm, tzysxm, tzrq, ksrq, zxfy,
6 lb_yp_yl, zsq_code
7 FROM op.yz a LEFT OUTER JOIN op.pc b
8 ON NVL (TRIM (UPPER (a.pc)), ' ') = NVL (TRIM (UPPER (b.pc)), ' ')
9 LEFT JOIN op.zy p ON a.zyh = p.zyh
10 WHERE p.cy='在院' AND p.new_patient='1'
11 AND upper(nvl(p.bj,1))<> 'Y'
12 AND (state = '已核对')
13 AND is_in_bill IS NULL
14 ORDER BY ksrq, yz_id ;
20629 rows selected.
Execution Plan
----------------------------------------------------------
Plan hash value: 3468887510
--------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 10 | 2580 | 2968 (2)| 00:00:36 |
| 1 | SORT ORDER BY | | 10 | 2580 | 2968 (2)| 00:00:36 |
|* 2 | HASH JOIN OUTER | | 10 | 2580 | 2967 (2)| 00:00:36 |
|* 3 | TABLE ACCESS BY INDEX ROWID| YZ | 3 | 672 | 42 (0)| 00:00:01 |
| 4 | NESTED LOOPS | | 10 | 2390 | 2963 (2)| 00:00:36 |
|* 5 | TABLE ACCESS FULL | ZY | 3 | 45 | 2917 (2)| 00:00:36 |
|* 6 | INDEX RANGE SCAN | DZBLYZ_ZYH | 118 | | 2 (0)| 00:00:01 |
| 7 | TABLE ACCESS FULL | PC | 33 | 627 | 3 (0)| 00:00:01 |
--------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access(NVL(TRIM(UPPER("A"."PC")),' ')=NVL(TRIM(UPPER("B"."PC"(+))),' '))
3 - filter("A"."STATE"='已核对' AND "A"."IS_IN_BILL" IS NULL)
5 - filter("P"."CY"='在院' AND UPPER(NVL("P"."BJ",'1'))<>'Y' AND
"P"."NEW_PATIENT"='1')
6 - access("A"."ZYH"="P"."ZYH")
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
42121 consistent gets
0 physical reads
0 redo size
2181383 bytes sent via SQL*Net to client
15617 bytes received via SQL*Net from client
1377 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
20629 rows processed
Bug 5368296: SQL NOT GENERATING ORA-918 WHEN USING JOIN
Bug 12388159 : SQL REPORTING ORA00918 AFTER UPGRADE TO 10.2.0.5.0
再次提醒:再小的系统数据库升级都需要做,功能测试,SPA测试,确保升级后功能和性能都正常.
--------------------------------------ORACLE-DBA----------------------------------------
最权威、专业的Oracle案例资源汇总之【案例】Oracle报错ORA-00918 数据库升级后遇到SQL BUG 5368296
oracle数据库升级失败怎么办,【案例】Oracle报错ORA-00918 数据库升级后遇到SQL BUG 5368296...相关推荐
- linux ora 01157,案例:Oracle报错ORA-01157 ORA-01110 数据启动报错RMAN恢复数据库思路
天萃荷净 rman从多份备份中还原操作,运维DBA工程师反映数据库在进行恢复时报错ORA-01157 ORA-01110,分析原因为11号数据文件需要recover 1.数据恢复ORA错误 RMAN& ...
- oracle 未明确列义,案例:Oracle缺少同义词DDL语句无法执行 ORA-00604 ORA-00942
天萃荷净 在执行DDL语句时无法执行,报错ORA 00604 ORA 00942,通过隐含参数来解决同义词问题 在最近的一个客户案例中,因为缺少dual同义词,导致ddl语句无法执行.这里_syste ...
- oracle加as报错,【Oracle】-【sqlplus / as sysdba登录报错问题】-新用
[Oracle]-[sqlplus / as sysdba登录报错问题]-新用户使用sqlplus / as sysdba登录报错解决 [Oracle]-[sqlplus / as sysdba登录报 ...
- linux还原数据库报错,RMAN还原数据库报错问题解决案例
报错1.数据库开启block change tracking ,恢复完成后打开因文件不存在报错. RMAN> alter database open resetlogs; RMAN-00571: ...
- linux oracle 11g x86,Oracle 11g在Linux6下安装及报错 C [ld-linux-x86-64.so.2+0x14d70]的解决方...
Oracle 11g在Linux6下安装及报错 C [ld-linux-x86-64.so.2+0x14d70]的解决方法 首页 → 数据库技术 背景: 阅读新闻 Oracle 11g在Linux6下 ...
- oracle 监听服务正常,连接报错 ora 12541
问题描述: 数据库监听服务正常运行,使用sql plus 连接数据库超级慢或无法连接,时不时报错 ORA 12541 问题原因: oracle 数据库监听服务日志过大 解决办法 将监听停止掉 删除 $ ...
- 【数据库】报错ora 12154 解决方法
Oracle报错 ora 12154 解决办法: 1.确认服务器监听正确打开: 2.确认别名前无空格.
- mysql远程一会不用卡住_连接远程MySQL数据库项目启动时,不报错但是卡住不继续启动的,...
连接远程MySQL数据库项目启动时,不报错但是卡住不继续启动的, 2018-03-12 17:08:52.532DEBUG[localhost-startStop-1]o.s.beans.factor ...
- 解决金仓数据库安装时安装VC++2013报错问题:不受信任提供程序信任的根证书中终止
解决金仓数据库安装时安装VC++2013报错问题:不受信任提供程序信任的根证书中终止 安装微软的信任证书: 1.点击链接下载微软证书:http://download.microsoft.com/dow ...
最新文章
- 阿里centos7 yum源
- conn.execute参数
- 2018年python薪资_2018年国内就业薪资高的7大编程语言排行
- python读取日期_从文件中读取日期和数据(Python)
- LINUX查看文件系统
- 实时时钟DS1302
- 极简网页设计技巧,打造简约之美
- 跟二项分布相关的统计检验方法
- b51显微镜_1112-揭开微观世界的奥秘--显微镜发明的科学历程
- 计算机底层是如何访问显卡的?
- 加州房价模型(住房价格中位数)
- 百度文件下载慢怎么办?~教你百度网盘无需VIP离线下载大文件
- CTFlearn-misc(fore/prog)-wp(3)
- python 括号 中 不需要 反斜杠_如何消除反斜杠后的空白(Python3.4)
- 鸿蒙系统碰一碰,华为正式发布鸿蒙手机操作系统 “碰一碰”就可实现设备互联...
- ARM工控主板在驾考驾培智能终端的使用
- 【python】实现SIMM算法
- Muti-bin的一些相关函数和设置
- python进阶练习题:馏分类【难度:2级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
- 网络私有制行得通吗?
热门文章
- 交换机的背板带宽计算方式
- 苹果已无敌手:华为留下的高端市场被iPhone吃下,国产旗舰机难撼地位
- 【C++】string转为TCHAR
- oracle 18c 18.3 学习之五 unplug drop plug pdb
- mysql mvcc_MySQL MVCC介绍
- device(device)
- seo揭秘:关键词如何批量优化
- pickle使用方法
- Spring查找方法注入(Lookup method injection)的底层实现原理
- oracle小型机叹号灯亮,一个黄圆圈加一个感叹号 汽车叹号故障灯图解