oracle表空间文件扩容

近期公司老项目反应附件无法上传,查询后台日志发现数据库insert报错,原因是附件以二进制存储在数据库表中导致oracle表空间文件已经达到了32G的最大值。找到了问题,坚信一个数据库肯定不会就只支持32G,来分析下表空间,看看怎么给它扩容?

oracle表空间

Oracle的表空间与数据文件是成对出现的,每一个数据文件对应一个表空间,一个表空间可以包含多个数据文件。表空间分为普通表空间和大文件表空间,普通表空间的单个数据文件最大为32G,而大文件表空间的单个数据文件最大可以为128TB。一般设计数据库时,判断普通表空间无法满足应用时就创建大文件表空间。

--创建表空间
create tablespace TABLESPACE_NAME
logging  
datafile 'D:\app\roydd\oradata\orcl\TABLESPACE_NAME.dbf'
size 50m 
autoextend on  
next 50m maxsize 20480m  
extent management local;

--创建大文件表空间
create bigfile tablespace TABLESPACE_NAME
datafile 'D:\app\roydd\oradata\orcl\TABLESPACE_NAME.dbf'
size 100G AUTOEXTEND ON;

--创建临时表空间 
create temporary tablespace TABLESPACE_NAME
tempfile 'D:\app\roydd\oradata\orcl\TABLESPACE_NAME.dbf' 
size 50m  
autoextend on  
next 50m maxsize 20480m  
extent management local; 

表空间扩容

了解了oracle表空间的定义和特性后,大概就明白,可以通过增加数据文件的方式来为表空间扩容。

第一步:查看表空间使用情况
-- 查看表空间使用情况
SELECT 
tablespace_name 表空间名,
sum(totalM) 总大小M,
sum(usedM) 已使用量M,
sum(surplusM) 剩余量M,
sum(usedM)/sum(totalM)*100 已使用率per
FROM
(
SELECT b.file_id ID,
b.tablespace_name tablespace_name ,
b.file_name file_name,
b.bytes/1024/1024 totalM,
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 usedM,
sum(nvl(a.bytes,0)/1024/1024) surplusM
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
)
GROUP BY tablespace_name ;
第二步:为指定表空间增加数据文件
ALTER TABLESPACE TABLESPACE_NAME 
ADD DATAFILE 'D:\app\Administrator\oradata\orcl\new_datafile_name.DBF' 
SIZE 512m AUTOEXTEND ON NEXT 32768m MAXSIZE UNLIMITED;

最后,再次检查表空间使用情况确认已经使用新的表空间文件了。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值