ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 查询DBA_SEGMENTS,bytes=0

查询DBA_SEGMENTS,bytes=0

原创 Linux操作系统 作者:lfree 时间:2010-05-21 16:02:53 0 删除 编辑
昨天遇到一个奇怪的问题,查询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。





来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-663346/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: grep显示加颜色
请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969578