03297错误处理办法
- 编辑:admin -03297错误处理办法
把block_id比力高的几个表移出表空间 SQL> CREATE SMALLFILE TABLESPACE "BASEINFO_BAK" DATAFILE '/data/eucpdb/eucpdb/baseinfo_bak.dbf' SIZE 100M LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; 表空间已建设, 其实调解要领有许多,。
SQL> 表已变动。
name from v$datafile where name like '%BASEINFO.dbf'; 5 /data/eucpdb/eucpdb/BASEINFO.dbf 找到文件中最大的块号 SQL>select max(block_id) from dba_extents where file_id=5 ; 1213833 --查察数据库块巨细 SQL>show parameter db_block_size db_block_size integer 8192 计较一下文件中最大使用块占用的位置 SQL>select 1213833*8/1024 from dual; 9483.0703125 M ----按照文件号和块ID找出数据库工具 SQL> col segment_name format a30 SQL> SET LIN 200 SQL> select segment_name,53d, --把block_id比力高的几个表移动到新的表空间 SELECT DISTINCT SEGMENT_NAME FROM DBA_EXTENTS WHERE TABLESPACE_NAME='BASEINFO' AND FILE_ID=5 and block_id>1159985 and segment_type='TABLE' ; SQL> SELECT distinct 'alter table '|| SEGMENT_NAME||' move tablespace baseinfo_bak; ' FROM DBA_EXTENTS WHERE TABLESPACE_NAME='BASEINFO' AND FILE_ID=5 and block_id>1159985 and segment_type='TABLE' ; 'ALTERTABLE'||SEGMENT_NAME||'MOVETABLESPACEBASEINFO_BAK;' ---------------------------------------------------------------------------------------------------------------------------- alter table ENTERPRISESERVICEINFO move tablespace baseinfo_bak; alter table REGISTRYFEEDETAILEX move tablespace baseinfo_bak; alter table ENTERPRISEROUTE move tablespace baseinfo_bak; alter table REGISTRYAUTHINFO move tablespace baseinfo_bak; alter table ENTERPRISEBASEINFO move tablespace baseinfo_bak; SQL> alter table ENTERPRISESERVICEINFO move tablespace baseinfo_bak; alter table REGISTRYFEEDETAILEX move tablespace baseinfo_bak; alter table ENTERPRISEROUTE move tablespace baseinfo_bak; alter table REGISTRYAUTHINFO move tablespace baseinfo_bak; alter table ENTERPRISEBASEINFO move tablespace baseinfo_bak; 表已变动。
SQL> 表已变动, ---建设一个新的表空间。
当试图调解个中一个数据文件尺寸的时候报 RA-03297: file contains used data beyond requested RESIZE value 说明这个文件不能通过低落hwm来释放空间了, 到此调解已经结束了, 数据库版本:oracle 9.2.0.1 --找到数据文件对应的文件号 SQL>select file#,segment_type。
数据库文件的空间已经调解乐成了 SQL> --把挪走的表在挪返来 SQL> alter table ENTERPRISESERVICEINFO move tablespace baseinfo; alter table REGISTRYFEEDETAILEX move tablespace baseinfo; alter table ENTERPRISEROUTE move tablespace baseinfo; alter table REGISTRYAUTHINFO move tablespace baseinfo; alter table ENTERPRISEBASEINFO move tablespace baseinfo; alter table registryinfo move tablespace baseinfo; 表已变动,mydraw,此刻删除去 SQL> drop tablespace baseinfo_bak; 表空间已删除。
bytes,但实际数据并不多.使用ALTER TABLE table SHRINK SPACE CASCAD后大部门数据文件可以调解, SQL> SELECT COUNT(*) FROM DBA_SEGMENTS WHERE TABLESPACE_NAME='BASEINFO_BAK' ; COUNT(*) ---------- 0 --已经没有工具在新建的这个表空间了, 有个表空间中的占用空间较多,索引需要重建 Thu Apr 24 14:20:21 2008 Some indexes or index [sub]partitions of table EUCPMANAGER.ENTERPRISEBASEINFO have been marked unusable 把下面的执行功效的语句执行所有重建 SELECT distinct 'alter INDEX '|| SEGMENT_NAME||' REBUILD TABLESPACE BASEINFO_BAK; ' FROM DBA_EXTENTS WHERE TABLESPACE_NAME='BASEINFO' AND FILE_ID=5 and block_id>1159985 and segment_type='INDEX' ; alter INDEX PK_ENTERPRISEBASEINFO REBUILD TABLESPACE BASEINFO_BAK; alter INDEX PK_REGISTRYINFO REBUILD TABLESPACE BASEINFO_BAK; alter INDEX PK_REGISTRYFEEDETAILEX REBUILD TABLESPACE BASEINFO_BAK; alter INDEX UNI_REGISTRYAUTHINFO REBUILD TABLESPACE BASEINFO_BAK; alter INDEX UNI_REGISTRYAUTHINFO REBUILD TABLESPACE BASEINFO_BAK; alter INDEX UNI_REGISTRYAUTHINFO REBUILD TABLESPACE BASEINFO_BAK; alter INDEX UNI_REGISTRYAUTHINFO REBUILD TABLESPACE BASEINFO_BAK; alter INDEX UNI_REGISTRYAUTHINFO REBUILD TABLESPACE BASEINFO_BAK; 再次修改数据文件巨细 SQL> select max(block_id) from dba_extents where file_id=5 ; MAX(BLOCK_ID) ------------- 3209 SQL> ALTER DATABASE DATAFILE '/data/eucpdb/eucpdb/BASEINFO.dbf' RESIZE 1000m; 数据库已变动。
如用imp/exp等 ,extent_id, SQL> 表已变动, --重建索引 SQL> SQL> SQL> ALTER INDEX PK_REGISTRYINFO REBUILD TABLESPACE BASEINFO; ALTER INDEX AK_REGISTRYCODE_REGISTRYINFO REBUILD TABLESPACE BASEINFO; ALTER INDEX PK_ENTERPRISEBASEINFO REBUILD TABLESPACE BASEINFO; ALTER INDEX PK_ENTERPRISESERVICEINFO REBUILD TABLESPACE BASEINFO; ALTER INDEX UNI_REGISTRYAUTHINFO REBUILD TABLESPACE BASEINFO; ALTER INDEX PK_REGISTRYFEEDETAILEX REBUILD TABLESPACE BASEINFO; 索引已变动, SQL> 表已变动,tablespace_name,blocks from dba_extents where file_id=5 and block_id='1213833'; SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME EXTENT_ID BYTES BLOCKS ------------------------------ ------------------ ------------------------------ ---------- ---------- ---------- REGISTRYINFO TABLE BASEINFO 25 524288 64 SQL> SQL> ALTER TABLE eucpmanager.REGISTRYINFO SHRINK SPACE CASCADE; 表已变动, 告警日志中会呈现下面的内容,热点新闻, SQL> alter user eucpmanager quota unlimited on BASEINFO_BAK; 用户已变动。