`
LJ你是唯一LT
  • 浏览: 244066 次
社区版块
存档分类
最新评论

oracle缩小表空间

阅读更多
oracle缩小表空间:

oracle常用的此类命令Alter database datafile(tempfile)
alter database tempfile '/u01/oradata/tinadb/temp02.dbf' resize 1200M;

如果盲目去操作,oracle会报ora-03297错误。表示在所定义的空间之后有数据存在,不能收缩。
我们不得不查出最后的数据所处的位置, 然后表空间设置到稍比这位置大一点的大小。

1. 查该数据文件中数据处在最大位置
select max(block_id) from dba_extents where file_id=15;
max(block_id)
383497

select file#,name from v$datafile;
select file#,name from v$tempfile;

2. 查出最大块位置
select 383497*8/1024 from dual;
2996.0703125
这说明该文件中最大使用块位于2996M与3000M之间,

3. 缩小数据文件:
ALTER DATABASE TEMPFILE '/opt/oracle/oradata/gctwp101/temp02.dbf' RESIZE 3000M;

有时候会报错:
SQL> alter database datafile '/dba/oradata/asura/tb_check_result_idx01.dbf' resize 5g;
alter database datafile '/dba/oradata/asura/tb_check_result_idx01.dbf' resize 5g
*
ERROR at line 1:
ORA-01237: cannot extend datafile 11
ORA-01110: data file 11: '/dba/oradata/asura/tb_check_result_idx01.dbf'
ORA-19502: write error on file "/dba/oradata/asura/tb_check_result_idx01.dbf", blockno 554368 (blocksize=8192)
ORA-27072: File I/O error
Linux-x86_64 Error: 9: Bad file descriptor
Additional information: 4
Additional information: 554368
Additional information: 389120
发现是因为磁盘不足,没办法resize

4.如果还报03297的错误 可能是回收站没有清空 可以先清空回收站的记录再重新操作

用dba登陆,执行以下语句清空回收站
purge dba_recyclebin;

5.查出block_id比较高的几个表
select owner, segment_name, segment_type, tablespace_name,
       extent_id, bytes, block_id,blocks
  from dba_extents
where file_id = 8
   and block_id > '4000'
   --and segment_type = 'TABLE'
   and tablespace_name = 'MWS_FILE'

alter database datafile 'filename' resize size;
但是前提是,表空间里没有任何数据
假设表空间靠前的碎片里有点数据,靠后的片段里有点数据,那么,这种方法是压缩不了的,他只能释放前头和后头的空间,释放不了中间的


缩小表空间的实际操作:
SQL> select file_name,file_id,tablespace_name from dba_data_files where tablespace_name='TS_TINA';
FILE_NAME                           FILE_ID        TABLESPACE_NAME
----------------------------------  ----------     ------------------------------------
/u01/oradata/tinadb/ts_tina01.dbf  5             TS_TINA

SQL> select max(block_id) from dba_extents where file_id=5;
MAX(BLOCK_ID)
-------------
  128

SQL> select 128*8/1024 from dual;
128*8/1024
----------
1   这里除的单位是1m

SQL> alter database datafile '/u01/oradata/tinadb/ts_tina01.dbf' resize 5m;
Database altered.

SQL> commit;
Commit complete.


分享到:
评论

相关推荐

    Oracle 表空间 收缩

    ### Oracle 表空间收缩详解 #### 一、背景与需求 ...通过以上步骤,我们可以有效地缩小表空间的实际占用大小,并释放出更多的可用存储空间。这种方式不仅可以节省存储成本,还可以提高数据库的整体性能和可维护性。

    Oracle表空间命令

    ### Oracle表空间管理知识点 #### 一、Oracle表空间概述 在Oracle数据库中,表空间是逻辑存储单元,用于组织和管理数据文件。一个表空间可以包含多个数据文件,而每个数据文件只能属于一个表空间。Oracle中的表...

    Oracle临时表空间处理.txt

    缩小临时表空间大小 ```sql ALTER DATABASE TEMPFILE '/path/to/file' RESIZE 100M; ``` 通过上述命令可以减小指定临时文件的大小。 ##### 2. 扩展临时表空间 ###### 方法一:增加文件大小 ```sql ALTER DATABASE ...

    地震前兆Oracle数据库UNDO表空间持续增长修复.pdf

    随着数据库重启和一段时间的监控,发现UNDO表空间的增长停止,并在SMON完成死事务恢复后,空间缩小到正常水平。 此故障的解决过程表明,对于Oracle数据库的故障排查,应从日志分析开始,深入到系统视图和进程分析,...

    Oracle表删除大量数据(千万)后查询变慢问题(原因分析)

    解决方法是缩小表空间,使用 alter table XXXX move 语句可以释放表空间。 2. 索引的无效:当释放表空间后,表的行号 rowid 会发生变化,而基于 rowid 的索引则会变成无效。解决方法是重建索引,使用 alter index ...

    29.Oracle表空间和数据文件1

    在Oracle数据库中,表空间是存储数据的主要逻辑结构,它由一个或多个数据文件组成,决定了数据库的存储容量。表空间分为几种类型,包括永久表空间、临时表空间和回滚表空间,每种都有其特定的用途。 1. **SYSTEM表...

    Oracle 中表数据的存储原理浅析

    在Oracle数据库中,当用户创建一个表时,Oracle会自动在相应的表空间内为此表分配数据段以容纳其数据。用户可以通过多种方式控制数据段的空间分配与使用: - 通过设定数据段的存储参数来控制其空间分配方式; - 通过...

    oracle分区表总结

    - **易于维护**:可以通过简单地添加或删除分区来扩展或缩小表。 - **提高可用性**:如果某个分区出现问题,可以将其脱机而不影响其他分区中的数据。 - **优化空间管理**:可以通过为不同分区分配不同的表空间来更...

    Oracle分区表和锁的应用

    在企业级应用中,为了提升数据管理效率和优化查询性能,Oracle提供了分区表这一特性。同时,为了保证数据的一致性和完整性,Oracle的锁机制也是其核心功能之一。下面我们将深入探讨Oracle分区表和锁的应用。 一、...

    oracle高水位线

    例如,当我们创建一个表 PM_USER 时,首先 Oracle 会分配一区的空间给这个表,随着不断的 INSERT 数据到 PM_USER,原来的这个区容不下插入的数据时,Oracle 是以区为单位进行扩展的,也就是说再分配多少个区给 PM_...

    oracle删除哪些内容可以减少USERS01.DBF数据文件的大小

    可以使用`ALTER TABLE SHRINK SPACE`命令来缩小表的大小,这将重新组织表中的数据并回收未使用的空间。 3. **重定义表**:如果表中有大量空闲空间,可以考虑使用`CREATE TABLE AS SELECT`语句创建新表,然后交换...

    修改表空间大小

    在Oracle、MySQL、SQL Server等主流数据库系统中,管理员都需要对表空间进行管理,包括创建、扩展和缩小表空间的大小。下面将详细解释这个主题。 一、表空间的作用与类型 1. 数据存储:表空间是数据库中数据和索引...

    Oracle修改表空间大小的方法

    在Oracle数据库管理中,表空间(Tablespaces)是存储数据文件的逻辑结构,用于组织数据库对象,如表、索引等。随着数据库的使用,表空间可能会耗尽,需要进行扩展以满足存储需求。本篇文章将详细介绍如何通过Oracle...

    Virtualbox 收缩虚拟硬盘空间的办法

    - 此命令会启动VDI文件的压缩过程,释放未使用的空间,从而缩小VDI文件的实际大小。 #### 三、示例效果 以一个实际案例为例,假设初始的VDI文件大小为2.5GB,在经过上述步骤处理后,其实际大小被压缩到了1.2GB,...

    Oracle ocp 052题库

    这部分可能会介绍如何执行表和表空间的缩小操作。 ### 50. 约束 (Constraint) 约束用于定义表中数据的有效性规则。这部分可能会讲解不同类型的约束及其用法。 通过以上对题库内容的概述,可以看出此题库覆盖了...

    Oracle碎片整理

    这个命令可以缩小表或索引段的空间,释放出不再使用的空间。它会重新组织数据块,将空闲空间压缩到较小的连续区域。与`ALTER TABLE T MOVE`相比,`SHRINK SPACE`不需要创建新的表,因此对系统的影响相对较小。但是,...

    Oracle DBA必备日常维护问题大全

    缩小表空间大小** - 当 `UNDOTBS1` 表空间过大时,需要先确认其管理模式。如果是自动管理模式,则不能使用手动收缩命令。 #### 三、查询数据库信息 **1. 查询所有数据库对象** - 若要查看所有数据库对象,可以...

    oracle 闪回 flashback

    - Oracle建议为Flash Recovery Area分配足够的空间,以容纳所有数据文件、增量备份、未备份的归档日志以及Flashback Logs。 4. **Flashback Query**: - 包括Flashback Query、Flashback Version Query和...

    Oracle SAP更新技术

    Oracle Exadata还采用了混合列式压缩技术,这是一种数据压缩方法,能够显著缩小数据仓库和存档表的存储体积。在数据仓库表上平均可以将表的大小压缩至原来的1/10,在存档表上甚至可以达到1/50的压缩率。这样的数据...

Global site tag (gtag.js) - Google Analytics