Oracle 9.2.0.8 , RAC , 2 Nodes, x86-64bit .
通过trace文件中的ORA-07445: exception encountered: core dump [pfrrun()+785] [SIGSEGV] [Address not mapped 在oracle metalink针对9208版本查询不到相关bug信息 。
下面是查询 ORA-08103: object no longer exists 得出的一些信息 。
symptom: Error performing a SELECT statement
symptom: ORA-08103: object no longer exists
symptom: Table is being truncated by other session
symptom: Analyze table validate structure cascade returns no errors
cause:
This ORA-08103 occurs on the next block read after the truncate command.
The LOCK TABLE IN EXCLUSIVE MODE does not prevent the table from being
SELECTED from. Thus, when the query has started and while this query runs
and the truncate occurs, this ORA-08103 may surface on the next block read.
This is considered intended behavior.
When a TRUNCATE occurs the DATAOBJ# in OBJ$ gets increased by one and thus
may lead to this ORA-08103 'object no longer exists'
fix:
Possible solutions are:
- Use DELETE instead of TRUNCATE
- Use SELECT FOR UPDATE as this will try to lock the table
检查及确认(1,2最好在非生产阶段作业) :
1. analyze table table_name validate structure ; (正在操作而报错的table)
2. $ dbv file=xxxxx.dbf blocksize=8192 feedback=200 (可能坏块检查)
3. 报错时操作的这个表是否是临时表
4. 是否是物化视图(mv,因为全刷新时会truncate表)
5. 是否是视图(view), 视图的基表被修改或删除可能报错
6. 是否有人为truncate这个正在被操作的表
7. 针对出现错误时操作的表,是否有大量并发的update或其他操作。
--转自