rowid查询数据疑惑
数据库版本:Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production
归档未开
操作系统 window 2003 32
事件:数据库重启后,数据库中的两个数据文件被彻底删除了,未能找回来,处理的方式alter database datafile 26 offline drop,打开数据库。在查询hysqd时,报
ORA-00376: 此时无法读取文件 26
ORA-01110: 数据文件 26: 'Z:\ORACLE\ORA92\DQYY\KT_HMISW2003_7_NEW.ORA'
现在的处理模式
通过rowid去排除26后文件中的内容
处理过程
SQL> SELECT data_object_id FROM DBA_OBJECTS WHERE OBJECT_NAME='HYSQD' AND OBJE
_TYPE='TABLE' AND OWNER='HMISW2003'
2 ;
DATA_OBJECT_ID
--------------
36868
SQL> select block_id,blocks from dba_extents Where RELATIVE_Fno='26' and seG
nt_type='TABLE' AND SEGMENT_NAME='HYSQD' ORDER BY BLOCK_ID asc
2 ;
BLOCK_ID BLOCKS
---------- ----------
4233 128
SQL> SELECT dbms_rowid.rowid_create(1,36868,26,4233,0) FROM DUAL
2 ;
DBMS_ROWID.ROWID_C
------------------
AAAJAEAAaAAABCJAAA
SQL> select /*+ ROWID(b) */ count(*) FROM hmisw2003.HYSQD b WHERE ROWId<'AAA
EAAaAAABCJAAA'
2 ;
select /*+ ROWID(b) */ count(*) FROM hmisw2003.HYSQD b WHERE ROWId<'AAAJAEAA
AABCJAAA'
*
第 1 行出现错误:
ORA-00376: 此时无法读取文件 26
ORA-01110: 数据文件 26: 'Z:\ORACLE\ORA92\DQYY\KT_HMISW2003_7_NEW.ORA'
SQL> EXPLAIN PLAN FOR
2 select /*+ ROWID(b) */ count(*) FROM hmisw2003.HYSQD b WHERE ROWId<'AAA
EAAaAAABCJAAA';
已解释。
SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY());
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------
----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost |
----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 7 | 455 |
| 1 | SORT AGGREGATE | | 1 | 7 | |
| 2 | TABLE ACCESS BY ROWID RANGE| HYSQD | 19260 | 131K| 455 |
----------------------------------------------------------------------------
Note: cpu costing is off, 'PLAN_TABLE' is old version
已选择10行。
1、没有搞清楚,rowid为什么没有把26文件过滤掉。
2、遇到文件被删除后,无法恢复,让oracle不要是检索这个文件中的数据,还有别的方式嘛
补充:hysqd的表结构
页:
[1]