我有一个Oracle XE数据库,SYSAUX.DBF文件是14GB。
我运行这个脚本:
select occupant_desc, space_usage_kbytes
from v$sysaux_occupants
where space_usage_kbytes > 0 order by space_usage_kbytes desc;
这就是结果:
XDB 385920
Server Manageability - Automatic Workload Repository 92608
Server Manageability - Optimizer Statistics History 68352
Oracle Spatial 48896
Unified Job Scheduler 29888
LogMiner 12544
Server Manageability - Advisor Framework 7808
Server Manageability - Other Components 6720
Oracle Text 6272
Transaction Layer - SCN to TIME mapping 3328
SQL Management Base Schema 1728
PL/SQL Identifier Collection 1664
OLAP API History Tables 1536
Analytical Workspace Object Table 1536
Logical Standby 1408
Oracle Streams 1024
Automated Maintenance Tasks 320
所以,它只有655MB。
当我尝试运行时:
alter database datafile 'C:\oraclexe\app\oracle\oradata\XE\SYSAUX.DBF' resize 1000m;
我收到了这个错误:
SQL Error: ORA-03297: file contains used data beyond requested RESIZE value
03297. 00000 - "file contains used data beyond requested RESIZE value"
*Cause: Some portion of the file in the region to be trimmed is
currently in use by a database object
*Action: Drop or move segments containing extents in this region prior to
resizing the file, or choose a resize value such that only free
space is in the trimmed.
有人可以帮助我如何减少我的SYSAUX.DBF文件?
答案 0 :(得分:1)
使用的空间在文件的开头不是一组连续的块,而是分散在整个文件中。
这意味着“要修剪的区域中的某些文件部分当前正由数据库对象使用”
还给出了解决方案:“在调整文件大小之前,在此区域中删除或移动包含范围的段,或者选择一个调整大小值,使得只有空闲区域在修剪中。”
因此,您必须删除段,这几乎意味着删除表和/或索引,或移动它们。这不一定是一件容易的事,所以我首先想知道你为什么要这么做?