Размер датафайла в 2 раза больше размера единственной хранимой там таблички

alextov
Дата: 01.11.2008 22:15:20
Есть партиционированная таблица CS_KREDYT
CREATE TABLE "CS_OSSV"."CS_KREDYT" 
   (	"CR_ID" NUMBER NOT NULL ENABLE, 
	"CR_EDRPOU" VARCHAR2(15), 
	.........................
   ) PCTFREE 2 PCTUSED 40 INITRANS 1 MAXTRANS 255  LOGGING 
  TABLESPACE "SM_TBS" 
  PARTITION BY RANGE ("PERIOD") 
  (
  PARTITION "CS_KREDYT_ALL"  VALUES LESS THAN (MAXVALUE) 
  PCTFREE 0 PCTUSED 40 INITRANS 1 MAXTRANS 255 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "TBS_CS_KREDYT" NOCOMPRESS 
  ) 
  ENABLE ROW MOVEMENT ;

Потребовалось перелить ее в новое табличное пространство, попутно обьединяя партиции в одну
CREATE bigfile TABLESPACE TBS_CS_KREDYT DATAFILE '/opt/oracle/oradata/megadb/tbs_cs_kredyt.dbf' 
	SIZE 1024M    Autoextend on    EXTENT MANAGEMENT LOCAL     SEGMENT SPACE MANAGEMENT AUTO;

ALTER TABLE cs_KREDYT MERGE PARTITIONS cs_4567,cs_2008 INTO PARTITION cs_KREDYT_all 
PARALLEL (DEGREE 2) TABLESPACE TBS_CS_KREDYT pctfree 0;

Перелилось.
Но проверяя размеры таблички и датафайла обнаружил несоответствие
Размер таблички 30 Гиг, а размер соответствующего датафайла 55 гиг.
SQL> select segment_name,  round(sum(bytes)/1024/1024) as segment_size
  2  from dba_segments
  3  where segment_name ='CS_KREDYT'
  4  group by segment_name;
 
SEGMENT_NAME          SEGMENT_SIZE
--------------------------------
CS_KREDYT                 30251

SQL> select file_name, round(bytes/1024/1024) as file_size
  2  from dba_data_files t
  3  where t.file_name='/opt/oracle/oradata/uniteh1/tbs_cs_kredyt.dbf';
 
FILE_NAME                                                  FILE_SIZE
--------------------------------------------------------
/opt/oracle/oradata/uniteh1/tbs_cs_kredyt.dbf  55124

При том что ничего другого кроме таблицы CS_KREDYT в этом таблеспейсе не храниться
SQL> select segment_name
  2  from dba_segments
  3  where tablespace_name ='TBS_CS_KREDYT';
 
SEGMENT_NAME
--------------------------------------------------------------------------------
CS_KREDYT

И еще штрих к портрету
SQL> select * from dba_tablespace_usage_metrics t
  2  where t.tablespace_name='TBS_CS_KREDYT'
  3  ;
 
TABLESPACE_NAME                USED_SPACE TABLESPACE_SIZE USED_PERCENT
------------------------------ ---------- --------------- ------------
TBS_CS_KREDYT                     3872104      4294967293 0,0901544467
----------
Итого .
Имеем - табличка (30 гиг) перелита в новый таблспейс, датафайл которого раздулся до 55 гиг.
Что может занимать лишние 25 гиг и как от этого избавиться?
alextov
Дата: 01.11.2008 23:30:57
сорри забыл...
SQL> select banner from v$version;
 
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
PL/SQL Release 10.2.0.1.0 - Production
CORE	10.2.0.1.0	Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
 
Консерва
Дата: 02.11.2008 00:01:56
alter database datafile resize не поможет отцу российской демократии?
alextov
Дата: 02.11.2008 00:25:05
нет
не разрешает
SQL> alter database datafile '/opt/oracle/oradata/megadb/tbs_cs_kredyt.dbf' resize 50G;
 
alter database datafile '/opt/oracle/oradata/megadb/tbs_cs_kredyt.dbf' resize 50G
 
ORA-03297: file contains used data beyond requested RESIZE value
SergNsk
Дата: 02.11.2008 12:09:08
может оно? NOTE:380473.1
alextov
Дата: 03.11.2008 00:49:04
SergNsk
может оно? NOTE:380473.1

может и оно - металинка нет :(
Если можно, о чем там вкратце?
alextov
Дата: 03.11.2008 18:21:10
таки не оно, таблспейс вновьсозданный, чистый так что мусора там быть не может

Есть еще варианты?
Ааз
Дата: 04.11.2008 08:39:22
alextov
SQL> select *
  2  from dba_extents
  3  where tablespace_name ='TBS_CS_KREDYT';
не поможет? А табличное пространство, наверное, с ASSM...

Всего
AG#
Дата: 04.11.2008 11:21:22
alextov
сорри забыл...
SQL> select banner from v$version;
 
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
PL/SQL Release 10.2.0.1.0 - Production
CORE	10.2.0.1.0	Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
 


База совсем не патченная 10.2.0.1

ENABLE ROW MOVEMENT - это для чего было задумано ?
alextov
Дата: 04.11.2008 17:28:27
ENABLE ROW MOVEMENT - потому что планировалось потом делить дальше
2 ААЗ
табличное пространство таки с ASSM - это все обьясняет?