oracle表空间不足怎么办?oracle扩展表空间的方法

发布时间:2021-01-07编辑:脚本学堂
有关oracle空间不足时的解决方法,oracle扩展表空间、增加表空间的方法,通过实例学习如何增加oracle表空间,需要的朋友参考下。

当遇到oracle表空间不足的问题时,可以参考如下方法,扩展oracle表空间大小

具体步骤:
 

--1、查看表在那个表空间
  select tablespace_name,table_name from user_talbes where table_name='test';
--2、获取用户的默认表空间
select   username,   DEFAULT_TABLESPACE from   dba_users where username='MXH';
--3、查看表空间所有的文件 
select * from dba_data_files where tablespace_name='USERS';
--4、查看表空间使用情况:
select tbs 表空间名,
sum(totalm) 总共大小m,
sum(usedm) 已使用空间m,
sum(remainedm) 剩余空间m,
sum(usedm)/sum(totalm)*100 已使用百分比,
sum(remainedm)/sum(totalm)*100 剩余百分比
from(
 select b.file_id id,
 b.tablespace_name tbs,
 b.file_name name,
 b.bytes/1024/1024 totalm,
 (b.bytes-sum(nvl(a.bytes,0)))/1024/1024 usedm,
 sum(nvl(a.bytes,0)/1024/1024) remainedm,
 sum(nvl(a.bytes,0)/(b.bytes)*100),
 (100 - (sum(nvl(a.bytes,0))/(b.bytes)*100))
 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 tbs

--5、扩展表空间
alterdatabase datafile 'D:ORACLEPRODUCTORADATATESTUSERS01.DBF' resize 50m;
--自动增长 
alterdatabase datafile 'D:ORACLEPRODUCTORADATATESTUSERS01.DBF' autoextend onnext 50m maxsize 500m;
--增加数据文件
alter tablespace USERS add datafile 'd:users02.dbf' size 5m;

第二部分,Oracle表空间不足的处理方法

1.查看所有表空间使用情况
 

select
b.file_id 文件ID号,
b.tablespace_name 表空间名,
b.bytes/1024/1024||'M'字节数,
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024||'M' 已使用,
sum(nvl(a.bytes,0))/1024/1024||'M' 剩余空间,
100 - sum(nvl(a.bytes,0))/(b.bytes)*100 占用百分比
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_id,b.bytes
order by b.file_id;

2.查看用户默认的表空间.
 

select username,default_tablespace from dba_users;

3.查看要扩展的表空间使用的数据文件路径与名字
 

select * from dba_data_files where tablespace_name like 'USERS%';

4.扩展表空间,表空间扩展有两种方法:增加数据文件;调整当前数据文件的大小或扩展的大小。
1)增加数据文件 (www.jb200.com 整理)
 

alter tablespace testtbs
add datafile 'd:/ora/datafile/users.ora' size 500m
autoextend on
next 50m
maxsize 2000m;

增加了一个500m的数据文件,并且可以自动扩展到2g,每次扩展50m。

2)增加当前数据文件的大小
 

alter database
datafile 'd:/ora/datafile/users.ora'
resize 50000m;
或使用file_id
alter database
datafile 10
resize 50000m;

3)在使用过程中,如果想改变某个数据文件的最大大小,可以
 

alter database
datafile 'd:/ora/datafile/users.ora'
autoextend on
maxsize 10240m;

第三部分,oracle表空间不足扩容的方法

1、查询当前用户的所属表空间
 

select * from user_users;

2、增加表空间有两种方法:
以sysdba登陆进数据库
语法:
 

alter tablespace 表空间名称
add datafile 表空间存放路径  size 表空间大小 autoextend on next 增长的大小 maxsize 空间最大值(如果不限制空间最大值就用unlimited)

例如:
 

alter tablespace vgsm
add datafile 'c:oracleproduct10.2.0oradatavgsmvgsm_01.dbf'
size 1024M autoextend on next 50M maxsize unlimited;

查询表空间详情:
 

select f.* from dba_data_files f where f.tablespace_name='VGSM'

以修改表空间的方式增加:

语法:
 

alter database
datafile 表空间文件路径
autoextend(自动扩展) on next 表空间满后增加的大小

例如:
 

alter database
datafile 'c:oracleproduct10.2.0oradatavgsmvgsm' autoextend on next 200m

查询表空间使用情况:
 

select f.* from dba_data_files f where f.tablespace_name='VGSM'