|
Basic elements
There are channels for feedback, HIS software in the data saved, prompted ORA-600 errors, detailed error information is as follows:
[Microsoft] [ODBC driver forOracle] [Oracle] ORA-20999: ORA-00600: internal error code, arguments: [kcbz_check_objd_typ], [0], [0], [1], [], [], [], [], [], [], [], []
ORA-06512: at "ZLHIS.ZL_ERRORCENTER", line 73
ORA-06512: at "ZLHIS.ZL_ patient XX Print _UPDATE", line 231
ORA-06512: at line 1
This error can not be skipped, resulting in service can not function properly.
problem analysis
Step one: Follow the prompts analysis 'stored procedures'
Logically, this tip is quite clear, the judge may be based on experience ZL_ patient XX print _UPDATE may be a problem, combined with ORA-06512 error, try to re-create the process and synonyms perform the above operation problem persists.
Step Two: Analysis ora-600 error
Next Analysis ORA-600 [kcbz_check_objd_typ] bug in accordance with the interpretation on Baidu is due to Oracle in the inspection data in memory block, object number found on the data block is wrong, throws this error message, further analysis of the problem found in access (print patient XX) table when an error is thrown, we analyze the table separately, we the table full-table queries, suggesting ora-08103 errors, but only if the query part of the table, the query correctly.
We then troubleshoot the structure of the table, find the index of the table it is similar to the name of the BIN $, prove that the table is carried out by way of flashback recovery operation, here we finally located the problem lies.
The root cause of the problem is because the operator misuse of patient care print a drop table operation, and then the way the flashback recovery, but for some reason, could lead to data recovery, but the database dictionary table content appears error (or called mismatch), thus resulting in the database table to do anything, will prompt an error, as we ZLHIS user statistics collection
Resolution process
Step one: error renaming the table, a new table of the same name
By rename operation, (patient XX print) to rename the table, and then re-built a (patient XX print) table by inserting statements to insert data into a new table, we should pay attention here, because there is a problem accessing the old table so we have to use cycle insertion mode, as follows:
l rename the table
rename patient to patient XX XX print original print _
l create a new table
create table print patient XX XX patient as select * from the original print _ where 1 = 2
/
Step two: The process data of the original table into the new table
In the insert, we can not access through a full table scan to access the original table, but fortunately, they can access the ROWID through the whole table, we will create a table holding ROWID original table, and then one by one by matching ROWID inserted into the new table ,as follows
l create a save rowid table
create table print patient XX XX patient _rowid asselect rowed from the original print _
l process one by one insert
begin
for cursor_rowid in (select rrowid from patient XX Print _rowid) loop
begin
insert into select * from print patient XX XX patient original print _ where rowid = CHARTOROWID (cursir_rowid.rrowid);
commit;
end;
end loop;
end;
/
By the above operation, the last nearly 30 records can not be transferred to the new table, but does not affect use. |
|
|
|