oracle数据库 修改表空间数据文件大小,优化存储-阿里云开发者社区

开发者社区> 游客oswqzne4argyi> 正文

oracle数据库 修改表空间数据文件大小,优化存储

简介: oracle数据库 修改表空间数据文件大小,优化存储
+关注继续查看

查询数据文件存储使用情况

/**  示例1 只查询*/

select b.file_id  文件ID,

         b.tablespace_name  表空间,

         b.file_name     物理文件名,

         b.bytes / 1024 / 1024       总字节数,

         (b.bytes - sum(nvl(a.bytes, 0))) / 1024 / 1024   已使用,

         sum(nvl(a.bytes, 0)) / 1024 / 1024        剩余,

         round(sum(nvl(a.bytes, 0)) / (b.bytes) * 100, 2)  剩余百分比   from dba_free_space a,

       dba_data_files b   where a.file_id = b.file_id   group by b.tablespace_name,

       b.file_name,

       b.file_id,

       b.bytes   order by b.tablespace_name;


/** 示例2 附带查询压缩脚本*/

select a.file#,

a.name,

a.bytes / 1024 / 1024 CurrentMB,

ceil(HWM * a.block_size) / 1024 / 1024 ResizeTo,

(a.bytes - HWM * a.block_size) / 1024 / 1024 ReleaseMB,

'alter database datafile ''' || a.name || ''' resize ' ||

ceil(HWM * a.block_size) / 1024 / 1024 || 'M;' ResizeCmd

from v$datafile a,

(SELECT file_id, MAX(block_id + blocks - 1) HWM

FROM DBA_EXTENTS

GROUP BY file_id) b

where a.file# = b.file_id(+)

And (a.bytes - HWM * a.block_size) >0

and rownum < 10

修改数据文件容量语句

alter database datafile 'D:\DSINSTALL\ORACLE\ORADATA\ORCL\USERS_DATA01.DBF' resize 10M;

楼主在此处遇见了一个问题,在清理了一大批数据后,发现表空间的存储大小基本没变,强行修改数据文件大小也不行,会提示“资源正在占用”,后面了解到,在删除数据时最好使用下列语句:

/* 清空表i数据*/

truncate table table_name;

注:不要使用delete删除,由于oracle自带回滚机制或者oracle处于数据保护机制,使用delete删除的数据oracle会临时保存,类似于假删除/回收站

/* 删除用户及附属数据*/

drop user user_name descade;

如果数据表曾经存在大数据情况下,还需要修改表的初始化STORAGE值,语句如下,该语句的含义是修改表/索引的初始值为64k,每次增长的幅度为32k

--

select 'ALTER TABLE '||owner||'.'||table_name||' MOVE TABLESPACE '||tablespace_name||' STORAGE(INITIAL 64K NEXT 32K);'

  from dba_tables 

where owner='AA' and initial_extent>65536  

 

 

--索引

select 'ALTER INDEX '||owner||'.'||index_name||' REBUILD STORAGE(INITIAL 64K NEXT 32K);'

  from dba_indexes 

where owner='AA'  and initial_extent>65536

 

 

--分区表

select 'ALTER table '||table_owner||'.'||table_name||' MOVE PARTITION '||PARTITION_NAME||' STORAGE(INITIAL 64K NEXT 32K);'   

  from DBA_tab_PARTITIONS 

where table_owner='AA' and initial_extent>65536

 

 

--分区索引

select 'ALTER INDEX '||index_owner||'.'||index_name||' REBUILD PARTITION '||PARTITION_NAME||' STORAGE(INITIAL 64K NEXT 32K);'   

  from DBA_ind_PARTITIONS 

where index_owner='AA' and initial_extent>65536

清空当前用户数据库表下存储大于1M的表数据脚本查询语句

select

'truncate table ' || segment_name||';',

bytes/1024/1024 MB,

u.*

from user_extents u

where bytes/1024/1024 > 1

查询数据库中各个表的实际数据存储使用情况

select

segment_name, sum(bytes)/1024/1024 MB

from user_extents u

group by segment_name




















版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
mysql 关联表修改数据
UPDATE t1 INNER JOIN t2 ON t1.c1=t2.c1  SET t1.c2=value WHERE t1`removed`=0 AND t2`removed`=0 AND t1.c3='[]'
946 0
表格存储 SQL 数据类型详解
本文主要介绍 Tablestore SQL中的数据类型与 MySQL 数据类型之间的映射关系。 ​ ## 背景介绍 ### Tablestore 数据类型 Tablestore 中的数据类型支持如下表所示,其中主键列支持的数据类型包括String、Integer和Binary,属性列支持的数据类型包括String、Integer、Double、Boolean和Binary。 - 主键列支持的数
47 0
百万用户级电商云上Oracle架构设计与数据库优化
某电子商务平台国内注册会员用户数达数百万级别,业务高峰期间一小时内可能会达到数万笔交易。在袋鼠云实施完成并优化后,该电商平台双11当天该平台的网站点击量是之前的3倍多,效果远超出预期。
4526 0
oracle修改表字段
增加字段     alter   table   docdsp     add   dspcode   char(200)     删除字段     ALTER   TABLE   table_NAME   DROP   COLUMN   column_NAME     修改字段类型     ALTER   TABLE   table_name     ALTER   COLUMN   column_name   new_data_type     改名     sp_rename     更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。
588 0
C# 以MDF文件连接数据库
由于没有安装 SQL Server 数据库服务,所以想着以MDF文件连接数据库(那么庞大的一个软件,安装之后想卸载?根本卸载不干静),是不是就可以不需要安装 SQL Server  了,可惜没有如愿以偿,必须要有  SQL Server 数据库服务,才能以MDF文件的形式连接数据库! 如果你仅仅是想查看 MDF文件 的内容,可以参考:MDF文件查看器(SQL MDF Viewer) 1.
843 0
7
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载