1.通过TRC文件,发现是执行以下语句.使用下面的SQL语句,看会不会报错
conn internal/oracle
SELECT "DRUG_PRESC_MASTER"."PRESC_NO", "DRUG_PRESC_MASTER"."DISPENSARY", "DRUG_PRESC_MASTER"."PATIENT_ID", "DRUG_PRESC_MASTER"."VISIT_ID", "DRUG_PRESC_MASTER"."NAME", "DRUG_PRESC_MASTER"."NAME_PHONETIC", "DRUG_PRESC_MASTER"."BABY_NO", "DRUG_PRESC_MASTER"."SEX", "DRUG_PRESC_MASTER"."AGE", "DRUG_PRESC_MASTER"."IDENTITY", "DRUG_PRESC_MASTER"."CHARGE_TYPE", "DRUG_PRESC_MASTER"."UNIT_IN_CONTRACT", "DRUG_PRESC_MASTER"."PRESC_TYPE", "DRUG_PRESC_MASTER"."PRESC_SOURCE", "DRUG_PRESC_MASTER"."REPETITION", "DRUG_PRESC_MASTER"."COUNT_PER_REPETITION", "DRUG_PRESC_MASTER"."COSTS", "DRUG_PRESC_MASTER"."PAYMENTS", "DRUG_PRESC_MASTER"."ORDERED_BY", "DRUG_PRESC_MASTER"."PRESCRIBER", "DRUG_PRESC_MASTER"."ENTERED_BY", "DRUG_PRESC_MASTER"."ENTERED_DATETIME", Upper( "DRUG_PRESC_MASTER"."DISPENSING_PROVIDER") dispensing_provider, "DRUG_PRESC_MASTER"."DISPENSING_DATETIME", "DRUG_PRESC_MASTER"."MEMO", "DRUG_PRESC_MASTER"."RETURN_INDICATOR", "DRUG_PRESC_MASTER"."RCPT_NO", "DRUG_PRESC_MASTER"."RETURN_PRESC_NO"
FROM "DRUG_PRESC_MASTER" WHERE "DRUG_PRESC_MASTER"."DISPENSARY" = '430301' AND ((DRUG_PRESC_MASTER.DISPENSING_PROVIDER = 'YFB') or (DRUG_PRESC_MASTER.DISPENSING_PROVIDER = 'yfb')) AND (DRUG_PRESC_MASTER.DISPENSING_DATETIME >= TO_DATE('2008-02-15 00:00','YYYY-MM-DD HH24:MI')) AND (DRUG_PRESC_MASTER.DISPENSING_DATETIME <= TO_DATE('2008-02-15 23:59','YYYY-MM-DD HH24:MI')) AND (RETURN_INDICATOR<>1 OR RETURN_INDICATOR IS NULL);
2.如果不报错。 执行下面的分析语句,也没有报任何错误。
ANALYZE TABLE pharmacy.DRUG_PRESC_MASTER VALIDATE STRUCTURE CASCADE;
看来表数据是好的
3. 重新创建索引 ,执行下边语句,然后在打开c:\pharmacy.txt,拷贝出里边所以的alter index 开头的语句,在sql> 下在运行一遍。
set pagesize 200
spool c:\pharmacy.txt
select 'alter index '||index_name||' rebuild;' from dba_indexes
where owner=upper('pharmacy') ;
spool off
我的故障到此解决,以下步骤记录转载备查。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.如果。重建索引后,问题依旧。
根据METALINK上的说明,设置10078事件,问题依旧
Set event 10078
At session level
SQL> Alter session set events '10078 trace name context forever'
SQL> alter system flush shared_pool;
Run the select query failing with ORA-00600[12700]
具体参见Note:337631.1
5.根据Note:155933.1的说法,应该是ROWID找不到了,因此,我想到重建建立一个表来测试一下。
Create Table cq.Physicalconnection_bak As Select * From cq.Physicalconnection
再执行: Select Id, Avertexid, Avertextype, Zvertexid, Zvertextype From cq.Physicalconnection_bak Where (Avertextype = 'C' And Avertexid In (840402))
Or (Zvertextype = 'C' And Zvertexid In (840402))
执行以上语句无问题。
因此,决定通过重新创建表语句来解决这个问题。
四、解决问题 通过Create Table cq.Physicalconnection_bak As Select * From cq.Physicalconnection,再把这个cq.Physicalconnection表删除,
再改名改表即可,问题解决,后续权限交给相关开发人员解决。
阅读(1484) | 评论(0) | 转发(0) |