Oracle修改表空间大小

oracle表空间满了就影响正常操作

1
2
oracle数据库被划分成称为表空间的逻辑区域,形成oracle数据库的逻辑结构。
一个oracle数据库能有1个或多个表空间,而1个表空间则能对应1个或多个物理的数据库文件。表空间是oracle数据库恢复的最小单位,容纳着许多数据库实体、视图、索引、聚簇、回退段和临时段等。
查看当前库的db_block_size大小
1
2
3
4
表空间数据文件容量与db_block_size大小有关,在初始建库时db_block_size要根据实际情况设置,一般设置为4k或者8k。
设置太大话一次读出的数据有部分是没用的,会拖慢数据库的读写时间,同时增加无必要的IO操作。
而对于数据仓库和ERP方面的应用,每个事务处理的数据量很大,所以DB_BLOCK_SIZE一般设置得比较大,一般为8K,16K或者32K,此时如果DB_BLOCK_SIZE小的话,那么I/O自然就多,消耗太大。
ORACLE的物理文件最大只允许4194304个数据块
1
2
# 查看db_block_size值
select value from v$parameter where name='db_block_size';
2种方法增加表空间大小
  • 扩容当前表空间大小(只有表空间没达上限可直接扩容)
1
2
3
4
5
6
# 查询表空间数据文件
select FILE_NAME,BYTES/1024/1024,MAXBYTES/1024/1024 fsize from dba_data_files where tablespace_name like 'FLUX_WMS';
# 修改表空间大小
alter database datafle 'D:\FLUX_TABLESPACE\FLUX_WMS.DBF' resize 30720M;
# 设置自动扩展
alter database datafile 'D:\FLUX_TABLESPACE\FLUX_WMS.DBF'AUTOEXTEND ON NEXT 1024M;
  • 新增表空间文件
1
2
3
4
# 查看表空间详情
select f.* from dba_data_files f where f.tablespace_name='FLUX_WMS';
# 新增FLUX_WMS_2.DBF初始10G,并设置自动扩容每次扩容1G,上限32G
alter tablespace FLUX_WMS add datafile 'D:\FLUX_TABLESPACE\FLUX_WMS_2.DBF' size 10240M autoextend on next 1024M maxsize 30720M;
查看当前所有表空间情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
select a.tablespace_name,c.allocation_type,c.segment_space_management,
case mod(c.initial_extent,1024*1024) when 0 then c.initial_extent/1024/1024||'M'
else c.initial_extent/1024||'K' end initial_extent,
a.total_Mbytes,a.total_Mbytes - b.free_Mbytes used_Mbytes,b.free_Mbytes,
trunc(b.free_Mbytes/a.total_Mbytes * 100,2) pct_free,null dummy
from (
select tablespace_name,sum(bytes)/1024/1024 total_MBytes
from dba_data_files
group by tablespace_name
) a, (
select tablespace_name,sum(bytes)/1024/1024 free_Mbytes
from dba_free_space
group by tablespace_name
) b, dba_tablespaces c
where a.tablespace_name = b.tablespace_name(+) and a.tablespace_name = c.tablespace_name(+);

-------------本文结束感谢您的阅读-------------
原创技术分享,感谢您的支持。