昨天遇到一个奇怪的问题,查询DBA_SEGMENTS显示的bytes=0,系统是开发商安装的,oracle版本是9.2.0.8 for windows的。
查询dba_segment 的定义如下:
CREATE OR REPLACE FORCE VIEW SYS.dba_segments (owner,
segment_name,
partition_name,
segment_type,
tablespace_name,
header_file,
header_block,
BYTES,
blocks,
extents,
initial_extent,
next_extent,
min_extents,
max_extents,
pct_increase,
FREELISTS,
freelist_groups,
relative_fno,
BUFFER_POOL
)
AS
SELECT owner, segment_name, partition_name, segment_type, tablespace_name,
header_file, header_block,
DBMS_SPACE_ADMIN.segment_number_blocks (tablespace_id,
relative_fno,
header_block,
segment_type_id,
buffer_pool_id,
segment_flags,
segment_objd,
blocks
)
* BLOCKSIZE,
DBMS_SPACE_ADMIN.segment_number_blocks (tablespace_id,
relative_fno,
header_block,
segment_type_id,
buffer_pool_id,
segment_flags,
segment_objd,
blocks
),
DBMS_SPACE_ADMIN.segment_number_extents (tablespace_id,
relative_fno,
header_block,
segment_type_id,
buffer_pool_id,
segment_flags,
segment_objd,
extents
),
initial_extent, next_extent, min_extents, max_extents, pct_increase,
FREELISTS, freelist_groups, relative_fno,
DECODE (buffer_pool_id,
0, 'DEFAULT',
1, 'KEEP',
2, 'RECYCLE',
NULL
)
FROM sys_dba_segs;
观察另外的机器,发现这个定义不对,应该是:
CREATE OR REPLACE FORCE VIEW SYS.dba_segments (owner,
segment_name,
partition_name,
segment_type,
tablespace_name,
header_file,
header_block,
BYTES,
blocks,
extents,
initial_extent,
next_extent,
min_extents,
max_extents,
pct_increase,
FREELISTS,
freelist_groups,
relative_fno,
BUFFER_POOL
)
AS
SELECT owner, segment_name, partition_name, segment_type, tablespace_name,
header_file, header_block,
DECODE
(BITAND (segment_flags, 131072),
131072, blocks,
(DECODE
(BITAND (segment_flags, 1),
1, DBMS_SPACE_ADMIN.segment_number_blocks
(tablespace_id,
relative_fno,
header_block,
segment_type_id,
buffer_pool_id,
segment_flags,
segment_objd,
blocks
),
blocks
)
)
)
* BLOCKSIZE,
DECODE
(BITAND (segment_flags, 131072),
131072, blocks,
(DECODE
(BITAND (segment_flags, 1),
1, DBMS_SPACE_ADMIN.segment_number_blocks
(tablespace_id,
relative_fno,
header_block,
segment_type_id,
buffer_pool_id,
segment_flags,
segment_objd,
blocks
),
blocks
)
)
),
DECODE
(BITAND (segment_flags, 131072),
131072, extents,
(DECODE
(BITAND (segment_flags, 1),
1, DBMS_SPACE_ADMIN.segment_number_extents
(tablespace_id,
relative_fno,
header_block,
segment_type_id,
buffer_pool_id,
segment_flags,
segment_objd,
extents
),
extents
)
)
),
initial_extent, next_extent, min_extents, max_extents, pct_increase,
FREELISTS, freelist_groups, relative_fno,
DECODE (buffer_pool_id,
0, 'DEFAULT',
1, 'KEEP',
2, 'RECYCLE',
NULL
)
FROM sys_dba_segs;
怎么会出现这样的情况下,仅仅发现如下链接:
http://www.experts-exchange.com/Database/Oracle/Q_22161891.html
并没有给出解决问题的答案。
我的感觉对方是拷贝安装的。而且版本不是9.2.0.8.
我开始重新执行catalog.sql,cateproc.sql命令,结果执行中出现如下错误:
ORA-00604: 递归 SQL 层 1 出现错误
ORA-04020: 尝试锁定对象 SYS.CDC_ALTER_CTABLE_BEFORE 时检测到死锁
关闭再打开还是依旧,查询到如下链接:
http://www.itpub.net/thread-1026878-1-1.html
按照如下方法解决:
SolutionSet the following in the INIT.ORA then restart the database:
_system_trig_enabled=false
aq_tm_processes=0
job_queue_processes=0
Then rerun CATALOG.SQL.
完成后在查看dba_segment视图,一些OK。
查询dba_segment 的定义如下:
CREATE OR REPLACE FORCE VIEW SYS.dba_segments (owner,
segment_name,
partition_name,
segment_type,
tablespace_name,
header_file,
header_block,
BYTES,
blocks,
extents,
initial_extent,
next_extent,
min_extents,
max_extents,
pct_increase,
FREELISTS,
freelist_groups,
relative_fno,
BUFFER_POOL
)
AS
SELECT owner, segment_name, partition_name, segment_type, tablespace_name,
header_file, header_block,
DBMS_SPACE_ADMIN.segment_number_blocks (tablespace_id,
relative_fno,
header_block,
segment_type_id,
buffer_pool_id,
segment_flags,
segment_objd,
blocks
)
* BLOCKSIZE,
DBMS_SPACE_ADMIN.segment_number_blocks (tablespace_id,
relative_fno,
header_block,
segment_type_id,
buffer_pool_id,
segment_flags,
segment_objd,
blocks
),
DBMS_SPACE_ADMIN.segment_number_extents (tablespace_id,
relative_fno,
header_block,
segment_type_id,
buffer_pool_id,
segment_flags,
segment_objd,
extents
),
initial_extent, next_extent, min_extents, max_extents, pct_increase,
FREELISTS, freelist_groups, relative_fno,
DECODE (buffer_pool_id,
0, 'DEFAULT',
1, 'KEEP',
2, 'RECYCLE',
NULL
)
FROM sys_dba_segs;
观察另外的机器,发现这个定义不对,应该是:
CREATE OR REPLACE FORCE VIEW SYS.dba_segments (owner,
segment_name,
partition_name,
segment_type,
tablespace_name,
header_file,
header_block,
BYTES,
blocks,
extents,
initial_extent,
next_extent,
min_extents,
max_extents,
pct_increase,
FREELISTS,
freelist_groups,
relative_fno,
BUFFER_POOL
)
AS
SELECT owner, segment_name, partition_name, segment_type, tablespace_name,
header_file, header_block,
DECODE
(BITAND (segment_flags, 131072),
131072, blocks,
(DECODE
(BITAND (segment_flags, 1),
1, DBMS_SPACE_ADMIN.segment_number_blocks
(tablespace_id,
relative_fno,
header_block,
segment_type_id,
buffer_pool_id,
segment_flags,
segment_objd,
blocks
),
blocks
)
)
)
* BLOCKSIZE,
DECODE
(BITAND (segment_flags, 131072),
131072, blocks,
(DECODE
(BITAND (segment_flags, 1),
1, DBMS_SPACE_ADMIN.segment_number_blocks
(tablespace_id,
relative_fno,
header_block,
segment_type_id,
buffer_pool_id,
segment_flags,
segment_objd,
blocks
),
blocks
)
)
),
DECODE
(BITAND (segment_flags, 131072),
131072, extents,
(DECODE
(BITAND (segment_flags, 1),
1, DBMS_SPACE_ADMIN.segment_number_extents
(tablespace_id,
relative_fno,
header_block,
segment_type_id,
buffer_pool_id,
segment_flags,
segment_objd,
extents
),
extents
)
)
),
initial_extent, next_extent, min_extents, max_extents, pct_increase,
FREELISTS, freelist_groups, relative_fno,
DECODE (buffer_pool_id,
0, 'DEFAULT',
1, 'KEEP',
2, 'RECYCLE',
NULL
)
FROM sys_dba_segs;
怎么会出现这样的情况下,仅仅发现如下链接:
http://www.experts-exchange.com/Database/Oracle/Q_22161891.html
并没有给出解决问题的答案。
我的感觉对方是拷贝安装的。而且版本不是9.2.0.8.
我开始重新执行catalog.sql,cateproc.sql命令,结果执行中出现如下错误:
ORA-00604: 递归 SQL 层 1 出现错误
ORA-04020: 尝试锁定对象 SYS.CDC_ALTER_CTABLE_BEFORE 时检测到死锁
关闭再打开还是依旧,查询到如下链接:
http://www.itpub.net/thread-1026878-1-1.html
按照如下方法解决:
SolutionSet the following in the INIT.ORA then restart the database:
_system_trig_enabled=false
aq_tm_processes=0
job_queue_processes=0
Then rerun CATALOG.SQL.
完成后在查看dba_segment视图,一些OK。