alter database datafile resize(+释放空间)
来源:互联网 发布:.net java 性能 编辑:程序博客网 时间:2024/05/12 08:02
转自:http://blog.csdn.net/zhouhaochen/article/details/4771554
RESIZE DATAFILE的时候会失败,因为一些OBJECT的EXTENTS已经扩展到DATAFILE的边缘(最大的地方)。
下面的SQL可以让我们找到前5个最边缘的OBJECT
select *
from (
select owner, segment_name,
segment_type, block_id
from dba_extents
where file_id =
( select file_id
from dba_data_files
where file_name = :FILE ) --用你的DATAFILE代替
order by block_id desc
)
where rownum <= 5
--这个在我的数据库里没有查出数据,先存放在这,以后会用到的
运行下面的这个脚本可以得到相应file做resize的命令
SQL> variable blocksize number;
SQL> begin execute immediate 'select value from v$parameter where name = ''db_block_size''' into :blocksize; end;
2 /
SQL>print :blocksize;
SQL> select 'alter database datafile ''' ||
2 file_name || ''' resize ' ||
3 ceil( nvl(hwm,1)*:blocksize/1024/1024 ) || 'm;' cmd
4 from dba_data_files a,
5 ( select file_id,
6 max(block_id+blocks-1) hwm
7 from dba_extents
8 group by file_id ) b
9 where a.file_id = b.file_id(+) and b.file_id in (7, 8, 10);
下面的这个是个总的,和上面的这个脚本功能类似,都可以得到alter的cmd
SELECT
a.file_id,
a.file_name
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,
'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,
(
SELECT TO_NUMBER( value ) blksize
FROM V$PARAMETER
WHERE name = 'db_block_size'
)
WHERE
a.file_id = b.file_id(+)
AND
CEIL( blocks * blksize / 1024 / 1024 ) - CEIL( ( NVL( hwm, 1 ) * blksize ) / 1024 / 1024 ) > 0
ORDER BY 5 desc
alter完后 ,可以达到释放存储空间的止的,
还可以 exp/imp expdp/impdp(自我理解没有实践:可以导出整个数据库,也可以导出要清理表空间的数据,再DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES; )
或者 一个表或者少量的表在那个表空间,可以通过creat table as select ...的方式或者move的方式,move完成后再干掉表空间,干掉表空间的时候,including contents and datefiles就可以了。
- alter database datafile resize(+释放空间)
- alter database datafile resize(+释放空间)
- Alter database datafile resize extents
- alter database create datafile ......
- alter database move datafile ......
- alter database create datafile as
- alter database move datafile ...... keep
- 计算datafile可以resize收缩的空间.
- 计算datafile可以resize收缩的空间.
- ALTER DATABASE Datafile与ALTER TABLESPACE OFFLINE的区别
- ALTER DATABASE DATAFILE和ALTER TABLESPACE的区别
- alter database datafile offline drop 与 alter tablespace drop datafile 区别
- alter database datafile offline drop 与 alter tablespace drop datafile 区别
- alter database datafile offline drop 与 alter tablespace drop datafile 区别
- alter database datafile offline drop 与 alter tablespace drop datafile 区别
- alter database datafile 'file_name' offline drop alter tablespace users drop datafile '' 区别
- alter database datafile offline drop 与 alter tablespace drop datafile 区别
- alter database datafile offline drop 与 alter tablespace drop datafile 区别
- 推荐PlayBook皮套 - ismartsim 黑莓 playbook 平板电脑 皮套 保护套 360度旋转
- CWaitCursor简介与使用
- 十个你可能不曾用过的Linux命令
- 对分查找
- 风云再起:京东商城用户资料完全泄露,刘强东提前关闭微博
- alter database datafile resize(+释放空间)
- SQLServer分割函数
- jQuery获取Select选择的Text和 Value(转)
- 如何定义Xsd文件
- 【广州】LoadRunner性能测试实战训练
- 二级缓存的配置及实例详解
- 单例模式
- 【ASP.NET】用户控件和自定义控件的主要区别
- WebService是什么