`

修改oracle数据文件大小

 
阅读更多
我们在136上的oracle数据库进行压力测试时,发现数据库的数据文件占用物理空间达到20多个G,但是在我们清掉各个表的数据后(truncate掉各个日志表),发现数据库实际数据占用的空间只有20多M,但物理文件仍然20多G。
经查资料,这个是oracle的表和表空间的“高水位”问题造成的,解决方案如下:

前提知识:
1. Oracle数据库中的物理存储空间是以块(segment)为单位的
2. 修改数据库表空间大小的语句:
ALTER DATABASE DATAFILE 'D:\ORADATA\ECSS20' RESIZE 206M
但是直接运行该语句的话会报如下错误:
Failed to commit: ORA-03297: 文件包含在请求的 RESIZE 值以外使用的数据

解决方案(以136上的ECSS20表空间为例):
1. 查询oracle数据文件及其编号。SQL语句如下
select file#,name from v$datafile;
查询出数据库的所有数据文件,其中包含如下,正是达到20多G的数据文件
     FILE# NAME
------------------------------------------------------------------------------------------
     6 D:\ORADATA\ECSS20
2. 查找该数据文件的最大块号。语句如下:
select max(block_id) from dba_extents where file_id=6;
查询结果如下:
MAX(BLOCK_ID)
-------------
       534785
3. 计算该表空间目前实际占用的空间(不是物理文件的大小)
显示每个数据块的大小。语句如下:
show parameter db_block_size;
结果为8192,就是8K。
然后计算所有数据块占用的物理空间(拿计算器计算也一样)
select 534785*8/1024 from dual;
结果为4178.00781M,就是4G多
4. 然后我们知道目前用了4G多,我们就可以把数据文件大小Resize到4G多一点
ALTER DATABASE DATAFILE 'D:\ORADATA\ECSS20' RESIZE 4200M;
数据库已更改。正常。
到此为止,实际数据文件的大小就由20多G到4G多了。
5. 继续往下走,因为我们实际数据占用了几十M,但数据文件还有4G多,还是我们把之前的表truncate掉后才能得到的。现在查一下占用最大块(segment 534785)的是什么。语句如下:
select distinct owner, segment_name, segment_type,tablespace_name from dba_extents where file_id =6 and block_id=534785;
查到的结果如下:
OWNER SEGMENT_NAME SEGMENT_TYPE       TABLESPACE_NAME
------------------------------------------------------------------------------------------------------
AJITA BIZTALKINGINFO TABLE             ECSS
说明目前占用最大块的对象是表BIZTALKINGINFO
6. 把表挪动一下,把表从当前表空间转移到了另外一个表空间(要已经存在的),语句如下:
alter table biztalkinginfo move tablespace ECSS_LUCIFER;
再次查询物理文件中的最大块号(步骤2),本次查询结果为534761,结果已经变小了,再查询该块的数据时BizTalkingInfo的主键。
7. 分析可知,在我们数据表已经插入大量数据后,才建表BizTalkingInfo,然后该表占用的块就偏大。然后我们resize数据文件时就不能小于该块。最简单的办法是删掉该表相关的东西,然后重建即可。当然也有比较复杂的办法可以办到。
8. 有一个结论就是:建表一般要放在数据表初始化之前进行,最好不要再初始化了大量数据,尤其是日志数据后再建表。
分享到:
评论

相关推荐

    Oracle 主要配置文件介绍

    保护数据考虑的 尤其在 CAMS 双机应用模式下 能够保证数据的一致性 具体的修改操作可参考 Linux与 Oracle 安装手册 初始化参数文件是一个包含实例配置参数的文本文件 这些参数被设置为特 定的值 用于...

    Oracle如何设置表空间数据文件大小

    Oracle数据文件默认大小上限是32G,如果要数据文件大于32G,需要在数据库创建之初就设置好。 表空间数据文件容量与DB_BLOCK_SIZE有关,在初始建库时,DB_BLOCK_SIZE要根据实际需要,设置为 4K,8K、16K、32K、64K等几...

    ORACLE11G宝典.rar 是光盘里面的内容,书太厚咧没法影印啊

    程序设计,第5~9章分别介绍了Oracle11g的体系结构、表空间与数据文件的管理、启动和关闭数据库、网络服务与管理,第10—13章介绍了有关安全的几个内容(权限、角色、概要文件、用户的管理),第14—17章介绍了几种...

    大型数据库应用oracle实验报告.pdf

    大型数据库应用oracle实验报告.pdf

    Oracle11g从入门到精通2

    9.3.1 增加数据文件大小 9.3.2 创建新表空间 9.3.3 动态增加表空间 9.3.4 三种方法的区别与比较 9.4 合理利用存储空间 9.4.1 采用正确的数据类型 9.4.2 存储参数的正确设置 9.4.3 定期回收无用表空间 ...

    Oracle数据库学习指南

    30. 没有备份、只有归档日志,如何恢复数据文件 31. 哪些初始化参数最影响Oracle系统性能 32. 如何查看数据库的字符集 33. 如何启动ARCHIVELOG模式 34. 如何使‘CREATE TABLE AS SELECT’能支持ORDER BY ? 35....

    Oracle数据库管理员技术指南

    7.8.2 包含活动回退段的数据文件的丢失 7.8.3 其他数据文件的丢失 7.8.4 执行表空间恢复 7.8.5 执行数据文件恢复 7.8.6 在没有数据文件备份时怎样进行 恢复 7.8.7 恢复丢失的临时表空间 7.8.8 只读表空间丢失...

    Oracle自学(学习)材料 (共18章 偏理论一点)

    8-14 缺省临时表空间 8-15 缺省临时表空间的限制 8-16 脱机状态 8-17 只读表空间 8-19 删除表空间 8-20 改变表空间的大小 8-21 允许数据文件的自动增长 8-22 手工改变数据文件的大小 8-23 给表空间添加数据文件 8-24...

    北大青鸟Oracle教程集1

    为数据库信息提供了实际的物理存储器 操作系统文件有三种类型: 操作系统文件有三种类型: – 数据库文件或数据文件 – 控制文件 – 恢复日志文件 物理组件 4-2 数据库文件或数据文件 – 它们是物理操作系统文件,它们...

    北大青鸟Oracle教程集2

    为数据库信息提供了实际的物理存储器 操作系统文件有三种类型: 操作系统文件有三种类型: – 数据库文件或数据文件 – 控制文件 – 恢复日志文件 物理组件 4-2 数据库文件或数据文件 – 它们是物理操作系统文件,它们...

    从一个“普通”的Oracle DBA(Oracle数据库管理员)转变为Oracle Applications DBA(Oracle应用程序数据库管理员)

    Oracle E-Business Suite还有一些特性需要DBA去完成,比如从外部资源里灌数据到Apps database里,或支持开发人员从已有数据中提取数据。 接着工作内容的转变 作为一个Oracle Applications DBA(Oracle应用程序...

    ORACLE9i_优化设计与系统调整

    §3.4.20 对大卸出文件大小(MAX_DUMP_FILE_SIZE) 76 §3.4.21 对大回滚段数(MAX_ROLLBACK_SEGMENTS) 77 §3.4.22 打开的光标数(OPEN_CURSORS) 77 §3.4.23 优化方式(OPTIMIZER_MODE) 77 §3.4.24 进程数(PROCESSES) ...

    赤兔Oracle数据库恢复软件 v11.6.zip

    24.全面支持64位系统,支持超过4G大小的数据文件。 25.支持复制操作系统命令不能复制的坏文件 26.支持同一个库中不同块大小的数据文件。 27.支持多种字符集之间的转换,能够正确的转换CLOB、NCLOB、NVARCHAR2列...

    Oracle11g从入门到精通

    9.3.1 增加数据文件大小 9.3.2 创建新表空间 9.3.3 动态增加表空间 9.3.4 三种方法的区别与比较 9.4 合理利用存储空间 9.4.1 采用正确的数据类型 9.4.2 存储参数的正确设置 9.4.3 定期回收无用表空间 9.4.4 ...

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    13.5.2数据文件脱机与恢复 13.5.3表空间脱机与恢复 13.6本章小结 第14章 RAC安全性 14.1数据访问安全性 14.1.1 Oracle安全性解决方案 14.1.2 VPD和OLS策略 14.2 Database Vault部署 14.2.1 Database Vault...

    Oracle.11g.从入门到精通 (2/2)

    9.3.1 增加数据文件大小 9.3.2 创建新表空间 9.3.3 动态增加表空间 9.3.4 三种方法的区别与比较 9.4 合理利用存储空间 9.4.1 采用正确的数据类型 9.4.2 存储参数的正确设置 9.4.3 定期回收无用表空间 9.4.4 归档历史...

    最全的oracle常用命令大全.txt

    执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置, 但此时不对数据文件和日志文件进行校验检查。 3、startup open dbname 先执行“nomount”,然后执行“mount”,再打开包括Redo log文件...

    Oracle.11g.从入门到精通 (1/2)

    9.3.1 增加数据文件大小 9.3.2 创建新表空间 9.3.3 动态增加表空间 9.3.4 三种方法的区别与比较 9.4 合理利用存储空间 9.4.1 采用正确的数据类型 9.4.2 存储参数的正确设置 9.4.3 定期回收无用表空间 9.4.4 归档历史...

Global site tag (gtag.js) - Google Analytics