Oracle 10g Toad查看 表空间 报错 ORA-00600 internal error code arguments [ktfbhget-4], [6], [5]
Toad 10.6 去查Oracle 10g 的表空间,在Toad 返回页面提示信息是:
selectprivileges on following are required:DBA_DATA_FILES,DBA_FREE_SPACE,V$TEMP_SPACE_HEADER,v$TEMP_EXTENT_POOL,DBA_TEMP_FILES.
查看了一下DB 的alert log:
Fri Jun 3 00:05:46 2011
Errors in file/u01/app/oracle/admin/dave1/udump/dave1_ora_21187.trc:
ORA-00600: internal error code, arguments:[ktfbhget-4], [6], [5], [], [], [], [], []
Fri Jun 300:09:37 2011
ORA-1000 encountered when generating server alertSMG-3503
Fri Jun 300:10:41 2011
Errors in file /u01/app/oracle/admin/dave1/udump/dave1_ora_21187.trc:
ORA-00600: internal error code, arguments:[ktfbhget-4],[6], [5], [], [], [], [], []
Fri Jun 3 00:12:48 2011
Errors in file/u01/app/oracle/admin/dave1/udump/dave1_ora_21187.trc:
ORA-00600: internal error code, arguments:[ktfbhget-4], [6], [5], [], [], [], [], []
Fri Jun 3 00:16:40 2011
ORA-1000 encountered whengenerating server alert SMG-3503
看一下trace 文件:
[oracle@db1 bdump]$ head -100 /u01/app/oracle/admin/dave1/udump/dave1_ora_21187.trc
/u01/app/oracle/admin/dave1/udump/dave1_ora_21187.trc
Oracle Database 10g Enterprise EditionRelease 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Miningoptions
ORACLE_HOME =/u01/app/oracle/product/10.2.0/db_1
System name: Linux
Node name: db1
Release: 2.6.18-164.el5xen
Version: #1 SMP Tue Aug 18 16:06:30 EDT 2009
Machine: i686
Instance name: dave1
Redo thread mounted by this instance: 1
Oracle process number: 17
Unix process pid: 21187, image:oracledave1@db1
*** ACTION NAME:() 2011-06-03 00:05:46.731
*** MODULE NAME:(TOAD 10.6.0.42) 2011-06-0300:05:46.731
*** SERVICE NAME:(dave1) 2011-06-0300:05:46.731
*** SESSION ID:(151.46) 2011-06-0300:05:46.731
*** 2011-06-03 00:05:46.731
ksedmp: internal or fatalerror
ORA-00600:internal error code, arguments: [ktfbhget-4], [6], [5], [], [], [], [], []
Current SQL statement for this session:
select a.tablespace_name,
round(a.bytes_alloc / 1024 / 1024)megs_alloc,
round(nvl(b.bytes_free, 0) / 1024 /1024) megs_free,
round((a.bytes_alloc - nvl(b.bytes_free, 0))/ 1024 / 1024) megs_used,
round((nvl(b.bytes_free, 0) /a.bytes_alloc) * 100) Pct_Free,
100 - round((nvl(b.bytes_free, 0) /a.bytes_alloc) * 100) Pct_used,
round(maxbytes/1048576) Max
from ( select f.tablespace_name,
sum(f.bytes) bytes_alloc,
sum(decode(f.autoextensible,'YES',f.maxbytes,'NO', f.bytes)) maxbytes
from dba_data_files f
group by tablespace_name) a,
( select f.tablespace_name,
sum(f.bytes) bytes_free
from dba_free_space f
group by tablespace_name) b
where a.tablespace_name =b.tablespace_name (+)
union all
select h.tablespace_name,
round(sum(h.bytes_free + h.bytes_used) /1048576) megs_alloc,
round(sum((h.bytes_free + h.bytes_used)- nvl(p.bytes_used, 0)) / 1048576) megs_free,
round(sum(nvl(p.bytes_used, 0))/1048576) megs_used,
round((sum((h.bytes_free + h.bytes_used)- nvl(p.bytes_used, 0)) / sum(h.bytes_used + h.bytes_free)) * 100) Pct_Free,
100 - round((sum((h.bytes_free +h.bytes_used) - nvl(p.bytes_used, 0)) / sum(h.bytes_used + h.bytes_free)) *100) pct_used,
round(sum(f.maxbytes) / 1048576) max
from sys.v_$TEMP_SPACE_HEADER h, sys.v_$Temp_extent_poolp, dba_temp_files f
where p.file_id(+) = h.file_id
and p.tablespace_name(+) = h.tablespace_name
and f.file_id = h.file_id
and f.tablespace_name = h.tablespace_name
group by h.tablespace_name
ORDER BY 1
----- Call Stack Trace-----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- ---------------------------- ----------------------------
ksedst()+27 call ksedst1() 0 ? 1 ?
ksedmp()+557 call ksedst() 0 ? BF000000 ? 0 ? 0 ?
BFE161C8 ? 9749978 ?
...
--先看ORA-1000的错误
[oracle@db1 u01]$ oerr ora 1000
01000, 00000, "maximum open cursorsexceeded"
// *Cause:
// *Action:
SQL> show parameter open_cursors
NAME TYPE VALUE
----------------------------------------------- ------------------------------
open_cursors integer 300
SQL>
SQL> select name,value,display_valuefrom v$parameter where name like '%cursor%';
NAME VALUE DISPLAY_VALUE
----------------------- --------------------------
cursor_space_for_time FALSE FALSE
session_cached_cursors 20 20
cursor_sharing EXACT EXACT
open_cursors 5000 5000
SQL> select count(*) fromv$open_cursor;
COUNT(*)
----------
5115
SQL> alter system setopen_cursors=10000 scope=both;
System altered.
SQL> show parameteropen_cursors
NAME TYPE VALUE
----------------------------------------------- ------------------------------
open_cursors integer 10000
修改之后,问题依旧。
查看dba_data_files 就会报错:
SQL> select * fromdba_data_files;
ERROR:
ORA-00600: internal errorcode, arguments: [ktfbhget-4], [6], [5], [], [], [],
[], []
no rows selected
根据dba_data_files视图的定义,确定了是x$tkfbhc字典出问题。
SQL>select text from dba_views whereview_name = 'DBA_DATA_FILES';
SQL> select * from x$ktfbhc;
ERROR:
ORA-00600: internal error code, arguments:[ktfbhget-4],[6], [5], [], [], [],[], []
no rows selected
这个字典的名字和我们的ORA-600 里的第一个参数名称一致。x$ktfbhc对象是Kernel Tablespace File BitmapHeader Control,也就是说记录了本地表空间的Bitmap头控制信息。
研究了半天,没能搞定这个错误。 我是用sys 用户连接的,所以权限这块的问题可能性不大。 在MOS上搜了半天,ktfbhget这个是有一些,且多与bug 有关。 我搜ktfbhget-4 这个,没有结果。 我猜这个4可能代表的是datafile 的file no。
这个库是我的测试库,DB 版本10.2.0.1, OS版本: redhat 5.4。 本是想把这个问题搞清楚,但是这个已经超出我现在的能力范围了。 最终把这个库重建了。
有些问题还是需要深入研究啊。
-------------------------------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
Email: dvd.dba@gmail.com
DBA1 群:62697716(满); DBA2 群:62697977(满) DBA3 群:62697850(满)
DBA 超级群:63306533(满); DBA4 群: 83829929 DBA5群: 142216823
DBA6 群:158654907 聊天 群:40132017 聊天2群:69087192
--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请