收缩Oracle数据文件
最近有网友提到收缩Oracle数据文件的问题,这是DBA经常碰到的一个常见问题。通常我们需要收缩相应的数据文件以减少来自磁盘空间的压力以及提高数据库的整体性能。但这并非对于所有情形都是适用的,尤其是生产环境。因为生产环境数据清洗相当较少,因此空间浪费也比较小,而且一旦收缩之后又要重新自动扩展数据文件,浪费系统资源。对于UAT,DEV环境,多DB,磁盘空间压力大的情形,收缩一下非常有必要。勒紧裤带过日子也是常有的事情,哈哈。总之收缩数据文件会使得磁盘空间得以释放以及加快数据迁移,RMAN备份等。本文分享了Tom大师的收缩脚本以及给出了undo,临时表空间,表段收缩的链接。
几种收缩的情形:
收缩表段(shrink space)
收缩临时表空间
收缩undo表空间
1、演示收缩数据文件
- robin@ORADB:~/dba_scripts/custom/sql> sql
- SQL*Plus: Release 10.2.0.3.0 - Production on Wed Oct 30 15:05:18 2013
- Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
- Connected to:
- Oracle Database 10g Release 10.2.0.3.0 - 64bit Production
- goex_admin@USBOTST> @shrink_data_files;
- VALUE
- --------------------
- 8192
- Smallest
- Size Current Poss.
- FILE_NAME Poss. Size Savings
- -------------------------------------------------- -------- -------- --------
- /u02/database/USBOTST/oradata/sysUSBOTST.dbf 605 650 45
- /u02/database/USBOTST/oradata/USBOTST_archive_idx. 725 1,871 1,146
- dbf
- /u02/database/USBOTST/oradata/USBOTST_his_idx.dbf 1 32 31
- /u02/database/USBOTST/oradata/USBOTST_ipo_idx.dbf 7 10 3
- /u02/database/USBOTST/oradata/USBOTST_account_tbl. 6,293 6,293 0
- dbf
- /u02/database/USBOTST/oradata/USBOTST_rpt_tbl.dbf 21 373 352
- /u02/database/USBOTST/oradata/USBOTST_audit_tbl.db 938 966 28
- f
- /u02/database/USBOTST/oradata/tbs_rman01.dbf 13 50 37
- /u02/database/USBOTST/undo/undotbsUSBOTST.dbf 358 7,350 6,992
- /u02/database/USBOTST/oradata/USBOTST_archive_tbl. 760 1,950 1,190
- dbf
- /u02/database/USBOTST/oradata/USBOTST_rpt_idx.dbf 10 359 349
- /u02/database/USBOTST/oradata/USBOTST_vou_tbl.dbf 4 145 141
- /u02/database/USBOTST/oradata/USBOTST_stock_l_tbl. 4 20 16
- dbf
- /u02/database/USBOTST/oradata/USBOTST_ca_idx.dbf 1 22 21
- /u02/database/USBOTST/oradata/USBOTST_his_tbl.dbf 1 959 958
- /u02/database/USBOTST/oradata/USBOTST_vou_idx.dbf 2 90 88
- /u02/database/USBOTST/oradata/sysauxUSBOTST.dbf 697 800 103
- /u02/database/USBOTST/oradata/spot_data.dbf 81 95 14
- /u02/database/USBOTST/oradata/USBOTST_tx_tbl.dbf 16 103 87
- /u02/database/USBOTST/oradata/USBOTST_tx_his_tbl.d 88 878 790
- bf
- /u02/database/USBOTST/oradata/USBOTST_ca_tbl.dbf 1 60 59
- /u02/database/USBOTST/oradata/USBOTST_imp_exp_tbl. 60 108 48
- dbf
- .........................................................................
- --------
- sum 29,686 -->可被释放的总空间
- 44 rows selected.
- Database altered.
- Database altered.
- Database altered.
- Database altered.
- alter database datafile '/u02/database/USBOTST/oradata/USBOTST_ipo_idx.dbf'
- *
- ERROR at line 1:
- ORA-03297: file contains used data beyond requested RESIZE value
- ---> Author : Leshami --->Blog : http://blog.csdn.net/leshami
- ...........................................
- --可能存在个别文件出现无法收缩的情形,提示超出最小的size。
2、收缩脚本
- --此脚本可用于Oracle 10g,11g
- robin@ORADB:~/dba_scripts/custom/sql> more shrink_data_files.sql
- set verify off
- col value format a20
- column file_name format a50 word_wrapped
- column smallest format 999,990 heading "Smallest|Size|Poss."
- column currsize format 999,990 heading "Current|Size"
- column savings format 999,990 heading "Poss.|Savings"
- break on report
- compute sum of savings on report
- column value new_val blksize
- select value from v$parameter where name = 'db_block_size'
- /
- select file_name,
- ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) smallest,
- ceil( blocks*&&blksize/1024/1024) currsize,
- ceil( blocks*&&blksize/1024/1024) -
- ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) savings
- from dba_data_files a,
- ( select file_id, max(block_id+blocks-1) hwm
- from dba_extents
- group by file_id ) b
- where a.file_id = b.file_id(+)
- /
- column cmd format a75 word_wrapped
- set heading off feedback off termout off
- spool /tmp/tmp_shrink_data_files.sql
- select 'alter database datafile '''||file_name||''' resize ' ||
- ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) || 'm;' cmd
- from dba_data_files a,
- ( select file_id, max(block_id+blocks-1) hwm
- from dba_extents
- group by file_id ) b
- where a.file_id = b.file_id(+)
- and ceil( blocks*&&blksize/1024/1024) -
- ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) > 0
- /
- spool off;
- set heading on feedback on termout on
- @/tmp/tmp_shrink_data_files.sql
收缩Oracle数据文件的更多相关文章
- Oracle DBA的神器: PRM恢复工具,可脱离Oracle软件运行,直接读取Oracle数据文件中的数据
Oracle DBA的神器: PRM恢复工具,可脱离Oracle软件运行,直接读取Oracle数据文件中的数据 PRM 全称为ParnassusData Recovery Manager ,由 诗檀软 ...
- oracle数据文件不小心被删除,导致对应的表空间删不掉的处理方法
问题现象:数据文件被无意删除,导致数据库表空间无法删除,并且重新刷表空间提示表空间已经存在:解决方法:1.oracle用户登录服务器,使用sysdba连接数据库 >sqlplus / as sy ...
- Oracle数据文件在open状态被删除的恢复记录
1.查看当前状态: SQL> select status from v$instance; STATUS------------OPEN SQL> show parameter name; ...
- 批量迁移Oracle数据文件,日志文件及控制文件
有些时候需要将Oracle的多个数据文件以及日志文件重定位或者迁移到新的分区或新的位置,比如磁盘空间不足,或因为特殊需求.对于这种情形可以采取批量迁移的方式将多个数据文件或者日志文件实现一次性迁移.当 ...
- 数据文件个数大于1024时ORACLE数据文件FILE_ID及RELATIVE_FNO的变化示例
通过ROWID计算数据块的相关信息: --详见: 数据文件头块保留大小.ROWID.数据文件最大大小等数据库限制的说明 根据small file tablespace的ROWID,计算出表空间.数据 ...
- Oracle 数据文件 reuse 属性 说明(转载)
Oracle 表空间 创建参数 说明 http://blog.csdn.net/tianlesoftware/archive/2011/01/27/6166928.aspx 当我们对表空间添加数据文件 ...
- Oracle 数据文件迁移
背景 这两天做一个oracle数据库迁移,以前都是用exp.imp来走,这次用到了expdp.impdp,的确有些优势,但同时又想起了只是拷贝数据文件迁移的方式,其实这个方式不常用做迁移,更多用在磁盘 ...
- oracle数据文件迁移
这篇文章是从网络上获取的,然后根据内容一步步操作, 1.目前的疑问:移动日志文件的时候,为何要先进行切换? 2.move操作后,再进行rename操作的原理 --------------------- ...
- Oracle数据文件迁移到裸设备
本文主要描述如何将Oracle表空间的文件系统形式的数据文件迁移到LV裸设备上. 前提条件 1.oracle运行正常. 2.已使用LVM命令规划好LV文件.如/dev/vgoracle/lvdatat ...
随机推荐
- 矩阵快速幂 POJ 3735 Training little cats
题目传送门 /* 题意:k次操作,g:i猫+1, e:i猫eat,s:swap 矩阵快速幂:写个转置矩阵,将k次操作写在第0行,定义A = {1,0, 0, 0...}除了第一个外其他是猫的初始值 自 ...
- My SQL InnoDB 1217 - Cannot delete or update a parent row:aforeign key constraint fals
InnoDB 允许有外键 MyISAM 不允许有外键 InnoDB修改成MyISAM 证明有外键 一张表如果有其他表的外键关联的是它 它也不能是MyISAM 来自为知笔记(Wiz)
- C++虚函数的缺陷
MFC中的消息机制没有采用C++中的虚函数机制,原因是消息太多,虚函数内存开销太大.在Qt中也没有采用C++中的虚函数机制,原因与此相同,其实这里还有更深层次上的原因,大体说来,多态的底层实现机制只有 ...
- Mysql笔记——DQL
DQL就是数据查询语言,数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端. 语法: SELECTselection_list /*要查询的列名称*/ FROM table_lis ...
- MyBatis学习总结_05_实现关联表查询
一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...
- 机器人学 —— 轨迹规划(Sampling Method)
上一篇提到,机器人轨迹规划中我们可以在 Configuration Space 中运行A* 或者 DJ 算法.无论A* 还是DJ 算法,都必须针对邻域进行搜索,如果2自由度则有4邻域,2自由度则有8邻 ...
- VNC+SSH相关应用
1.安装vnc-server vncviewer2.执行vncserver 输入密码3.执行vncserver -kill :1 杀死1号屏幕4.修改/root/.vnc/xstartup u ...
- 展讯NAND Flash高级教程【转】
转自:http://wenku.baidu.com/view/d236e6727fd5360cba1adb9e.html 展讯NAND Flash高级教程
- vmware 虚拟机 桥接 设置静态 IP
最简单的方式: 图形界面下,进入设置IP的地方,设置一个静态IP. 然后再转入命令行继续工作.. 不行就 重启
- asp存储过程
dim s_ip,MyComm s_ip=request.ServerVariables("REMOTE_ADDR") Set MyComm = Server.CreateObje ...