随笔 - 138  文章 - 3 评论 - 95 阅读 - 54万

在设置数据库表空间自动扩展时,需要注意以下几个关键事项,以确保数据库的稳定性和性能:


确保足够的可用空间
在启用表空间自动扩展之前,必须确保磁盘上有足够的可用空间来容纳扩展后的数据文件。

--磁盘组空间占用百分比查询
SELECT GROUP_NUMBER, NAME, TYPE, STATE
, TOTAL_MB/1024 as 磁盘组总空间
, FREE_MB/1024 as 磁盘组未使用容量
,OFFLINE_DISKS as 离线磁盘数
,round((TOTAL_MB-FREE_MB)/TOTAL_MB*100,2) as 占用百分比
  FROM V$ASM_DISKGROUP;

 

避免高峰期扩展
如果可能的话,应避免在数据库使用高峰期进行表空间自动扩展操作。因为扩展操作可能会消耗大量的系统资源,导致数据库性能下降。可以选择在数据库使用低峰期进行扩展操作,以减少对业务的影响。


设置合理的扩展步长
自动扩展的步长(即每次扩展的大小)需要根据数据库的增长速度和业务需求来设置。步长设置过大可能导致磁盘空间浪费,步长设置过小则可能频繁触发自动扩展操作,增加系统开销。 
示例,新建表空间文件,设置步长为2G。

alter tablespace CPOE_DATA add datafile '+DATA' size 2048M autoextend on next 2048M;

特别注意带大字段的表

大字段(如BLOB、CLOB等)通常会存储大量的二进制数据或字符数据。如果这些数据频繁变动,可能会导致数据文件频繁扩展,从而影响数据库的性能。自动扩展虽然方便,但每次扩展都可能需要额外的I/O操作,这些操作可能会对数据库性能产生负面影响。

直接给32G,相当于自动扩展不用。新建表空间文件。

alter tablespace CPOE_DATA add datafile '+DATA' size 32736M autoextend on next 1024M;

 

对已存在表空间数据文件设置新的大小,单位M。示例:

alter database datafile  '/vdb2/service/oracle/data/oracle/oradata/orcl/user04.dbf' resize 32736m 

如果报错:ORA-01144: File size (5242880 blocks) exceeds maximum of 4194303 blocks

那就是超出最大限制了,如果此时的表空间已经最大化了,建议新增一个对应表空间的数据文件并设定大小。

由于Oracle的Rowid中使用22位来代表Block号,这22位最多只能代表2^22-1(4194303)个数据块,而在我们一般情况下使用的数据块大小为8k,所以数据文件的理论大小最大为: 31.9999924G。

 

查单个表空间情况
select df.BYTES/1024/1024/1024,df.* from dba_data_files df where df.TABLESPACE_NAME='CPOE_DATA'

 

添加数据文件后,检查一下。查看表空间文件列表名和创建时间

select vdf.name,vdf.CREATION_TIME from v$datafile vdf;

 

posted on   yi-sheng  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2020-01-20 centos7.4上使用crontab定时清理文件
点击右上角即可分享
微信分享提示