暂无图片
表空间数据文件没有充分利用
我来答
分享
四八老姜
2020-06-08
表空间数据文件没有充分利用

image.png
描述:每个数据文件上限是32G,可是我已经增加第5个数据文件了。总大小也只有66G,想问下为什么没有充分利用每个数据文件,然后再使用下一个?如何解决此问题?

我来答
添加附件
收藏
分享
问题补充
15条回答
默认
最新
Moone

多个数据文件默认是均衡的,这个也符合性能优化的目的。如果一定要实现你的想法:
1、等数据文件快满时在新增新文件
2、手工为对象预分配extent到指定数据文件

其实你的想法是反数据库优化理论的。

暂无图片 评论
暂无图片 有用 0
打赏 0
四八老姜

就如我截图所示,表空间使用率已经95%啦。剩余使用空间只剩下3G啦,我需要继续新增数据文件吗? 我已经新增了4个数据文件,4*32=128G

暂无图片 评论
暂无图片 有用 0
打赏 0
文成
SELECT file_name,TABLESPACE_name,bytes,autoextensible FROM dba_data_files;
复制

结果贴出来看看

暂无图片 评论
暂无图片 有用 0
打赏 0
四八老姜

image.png

暂无图片 评论
暂无图片 有用 0
打赏 0
四八老姜

image.png

暂无图片 评论
暂无图片 有用 0
打赏 0
黄伟波

用我这个SQL查,应该可以看出最大可使用的
SELECT SUBSTR(a.TABLESPACE_NAME,1,30) TablespaceName,
round(SUM(a.bytes/1024/1024/1024),2) AS “Totle_size(G)”,
round(SUM(NVL(b.free_space1/1024/1024/1024,0)),2) AS “Free_space(G)”,
round(SUM(a.bytes/1024/1024/1024),2)-round(SUM(NVL(b.free_space1/1024/1024/1024,0)),2) AS “Used_space(G)”,
ROUND((SUM(a.bytes/1024/1024/1024)-SUM(NVL(b.free_space1/1024/1024/1024,0))) *100/SUM(a.bytes/1024/1024/1024),2) AS “Used_percent%”,
round(SUM((case when a.MAXBYTES = 0 then a.bytes else a.MAXBYTES end)/1024/1024/1024),2) AS “Max_size(G)”,
ROUND((SUM(a.bytes/1024/1024/1024)-SUM(NVL(b.free_space1/1024/1024/1024,0)))*100/SUM((case when a.MAXBYTES = 0 then a.bytes else a.MAXBYTES end)/1024/1024/1024),2) AS “Max_percent%”
FROM dba_data_files a,
(SELECT SUM(NVL(bytes,0)) free_space1,
file_id
FROM dba_free_space
GROUP BY file_id
) b
WHERE a.file_id = b.file_id(+)
GROUP BY a.TABLESPACE_NAME
ORDER BY “Used_percent%” desc;

暂无图片 评论
暂无图片 有用 0
打赏 0
四八老姜

image.png

暂无图片 评论
暂无图片 有用 0
打赏 0
黄伟波

你这个表空间目前最大是78G,使用了65.9%

暂无图片 评论
暂无图片 有用 0
打赏 0
四八老姜

image.png
这个已经使用百分比,96.67%,不是真实的吗?平时都是用这个脚本查看
查询分配空间的使用情况:
SELECT tablespace_name as 表空间,round((sum_alloc - nvl(sum_free,0))/1024/1024,1) as 已用空间M,round(sum_max/1024/1024,1) as 总大小M,round(100*(sum_alloc - nvl(sum_free,0))/sum_max,1) As 使用百分比 FROM ( SELECT tablespace_name, sum(bytes) AS sum_alloc, sum(decode(bytes,0,bytes,bytes)) AS sum_max FROM dba_data_files GROUP BY tablespace_name),( SELECT tablespace_name AS fs_ts_name, sum(bytes) AS sum_free FROM dba_free_space GROUP BY tablespace_name ) WHERE tablespace_name = fs_ts_name(+) order by 使用百分比 desc;

暂无图片 评论
暂无图片 有用 0
打赏 0
四八老姜

我现在不用再新增数据文件了吗?

暂无图片 评论
暂无图片 有用 0
打赏 0
文成

如果 autoextensible 是yes ,则表明数据文件会随着使用情况自动扩展
一般生产环境直接指定最大数据文件大小,并把 autoextensible 关闭,防止由于数据文件增长导致性能瓶颈

暂无图片 评论
暂无图片 有用 0
打赏 0
四八老姜

我就想了解,到底以哪个参数作为指标。大概到90%的时候,我好及时扩容

暂无图片 评论
暂无图片 有用 0
打赏 0
文成

可以 伟波 脚本中的 max_percent% 来看

暂无图片 评论
暂无图片 有用 0
打赏 0
四八老姜

好的。感谢

暂无图片 评论
暂无图片 有用 0
打赏 0
田弼元

不是真实的,真实是65.94%。前提是剩余的存储支持这个表空间扩展到78.65G

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
bs架构的程序怎样追踪本机执行的SQL语句
回答 1
应用服务器自己写dblog,dblog中带username然后你查dblog就可以了
Oracle怎么跟sqlserver配置getaway,一直提示tns有问题?
回答 1
getway这个要通过配置ODBCforsqlserver来实现的,配置odbc之后再配置tnsnames文件
大佬们,Oracle系统的理论知识可以从哪找到啊,还有一些实战经验那些
回答 1
已采纳
可以多读点书,如果对那个问题点不懂,直接网上搜一下。实战经验的话这得实战没办法,即使看人家的故障总结报告,效果也不是太好,毕竟看和经历不是一回事儿。没事儿搭个测试环境,对有些问题做个复盘,测测,这样应
含BLOB字段的800G的非分区大表如何清理历史数据
回答 3
忘了有adg,开了附加日志,没法不记日志
oracle 创建删除触发器,不生效,还是可以删除。
回答 8
我怀疑可能和EAP用户某些权限有关。要不这样,禁用EAP下的相关DROPTRIGGER。然后在SYS用户下:createtabletbwhodrops(schemanamevarchar2(40),d
登陆数据 和关闭Oracle数据库都报错:ORA-04031 unable to allocate 2016 bytes of shared memory
回答 1
这种情况,是因为SharedPool耗尽导致的数据库工作异常,直接shutdownabort就好了。
查询处理出来的内容有缺失
回答 1
你试试plsql中用工具点开
oracle :三个字段的列的长度比较长,该怎么set,让列长短一些?
回答 1
已采纳
setlinesize200setpagesize5000coltransactiondurationformata45col列名formata20 这波操作应该覆盖你的要求了吧 
简单测试jdbc连接
回答 3
供参考https://www.modb.pro/db/603901
SQL ORDER BY READS(GETS) 和INSERT语句有关?
回答 3
已采纳
insert语句也会产生READS(GETS),因为插入一条记录,数据库就要维护他的索引,需要读索引块,你的表上有lob,至少会有一个lob的索引。另外就是oracle找空块的时候也是会产生读io的。