暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle dba_hist_tbspc_space_usage返回HWM而不是实际大小!?

ASKTOM 2021-01-29
1671

问题描述

嗨,汤姆

我从我公司的数据库中发现了一个奇怪的东西

我写了一个这样的脚本来报告我的虚拟机上的操作

SQL> !cat a.sql
select a.tablespace_id
 , c.tablespace_name
 , a.tablespace_size * c.block_size /1024/1024 as tbspc_size
 , d.datafile_size
from
 dba_hist_tbspc_space_usage a
join
 v$tablespace b on a.tablespace_id = b.ts#
join
 dba_tablespaces c on b.name = c.tablespace_name
join
 (select tablespace_name, sum(bytes)/1024/1024 as datafile_size
 from dba_data_files
 group by tablespace_name
 ) d on c.tablespace_name = d.tablespace_name
where
 a.snap_id = (select max(snap_id) from dba_hist_snapshot)
and
 a.tablespace_id  = 6
order by 1
/




像这样的实验室

SQL> @a

TABLESPACE_ID TABLESPACE_NAME                TBSPC_SIZE DATAFILE_SIZE
------------- ------------------------------ ---------- ----------
            6 TBS1                                   10         10


SQL> alter tablespace  tbs1 add datafile '/oracle/app/oradata/orcl11/tbs1b.dbf' size 10m;

Tablespace altered.

SQL> alter tablespace  tbs1 drop datafile '/oracle/app/oradata/orcl11/tbs1b.dbf'  ;

Tablespace altered.

SQL> alter database datafile '/oracle/app/oradata/orcl11/tbs1.dbf' resize 12m;

Database altered.

SQL> @a

TABLESPACE_ID TABLESPACE_NAME                TBSPC_SIZE DATAFILE_SIZE
------------- ------------------------------ ---------- ----------
            6 TBS1                                   10         12


SQL> EXEC dbms_workload_repository.create_snapshot;

SQL> @a

TABLESPACE_ID TABLESPACE_NAME                TBSPC_SIZE DATAFILE_SIZE
------------- ------------------------------ ---------- ----------
            6 TBS1                                   22         12



对吗!?


专家解答

是的,这看起来像一个错误-我在19c上复制了它

SQL> create tablespace XXX datafile 'X:\ORACLE\ORADATA\DB19\XXX.DBF' size 10m;

Tablespace created.

SQL> EXEC dbms_workload_repository.create_snapshot;

PL/SQL procedure successfully completed.

SQL> select ts#
  2  from   v$tablespace
  3  where  name = 'XXX';

       TS#
----------
         6

SQL> select * from dba_hist_tbspc_space_usage
  2  where tablespace_id = 6
  3  and con_id = 1
  4  @pr
==============================
SNAP_ID                       : 14124
DBID                          : 741782391
TABLESPACE_ID                 : 6
TABLESPACE_SIZE               : 1280
TABLESPACE_MAXSIZE            : 1280
TABLESPACE_USEDSIZE           : 128
RTIME                         : 02/01/2021 09:22:54
CON_DBID                      : 741782391
CON_ID                        : 1


SQL> alter tablespace XXX add datafile 'X:\ORACLE\ORADATA\DB19\XXX2.DBF' size 10m;

Tablespace altered.

SQL> alter tablespace XXX drop datafile 'X:\ORACLE\ORADATA\DB19\XXX2.DBF';

Tablespace altered.

SQL> EXEC dbms_workload_repository.create_snapshot;

PL/SQL procedure successfully completed.

SQL> select * from dba_hist_tbspc_space_usage
  2  where tablespace_id = 6
  3  and con_id = 1
  4  @pr
==============================
SNAP_ID                       : 14124
DBID                          : 741782391
TABLESPACE_ID                 : 6
TABLESPACE_SIZE               : 1280
TABLESPACE_MAXSIZE            : 1280
TABLESPACE_USEDSIZE           : 128
RTIME                         : 02/01/2021 09:22:54
CON_DBID                      : 741782391
CON_ID                        : 1
==============================
SNAP_ID                       : 14125
DBID                          : 741782391
TABLESPACE_ID                 : 6
TABLESPACE_SIZE               : 2560
TABLESPACE_MAXSIZE            : 2560
TABLESPACE_USEDSIZE           : 256
RTIME                         : 02/01/2021 09:25:07
CON_DBID                      : 741782391
CON_ID                        : 1
==============================



深入了解表空间信息来自X $ KTTEFINFO-我怀疑它没有被清理掉的数据文件
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论