oracle表空间满了,应该怎么扩大表空间?
确定是否是表空间满,可以使用以下语句:
sqlplus / as sysdba
set linesize 200
column tablespace_name format a29
column AutoExpandStatus format a20
column MaxGBytes format 999999999
column pct_warn format a5
--上面语句是在sqlplus下执行,如果在EAS查询分析器上执行,可以执行下面的语句
select max1.tablespace_name, Total_GB,GB_used ,GB_free,trunc(pct) "UsedPercent%",trunc(maxbytes) as " MaxGBytes" ,pct_warn ,round(100*GB_used/maxbytes,2) as "growupPercent",
(case when ((GB_used/maxbytes)>0.9) then 'Almost Full' else 'Will Auto Increase' end ) AutoExpandStatus
from (select T.TABLESPACE_NAME as tablespace_name,
sum(decode(d.MAXBYTES,0,d.bytes,d.maxbytes)/1024/1024/1024) as maxbytes
from dba_tablespaces t, dba_data_files d where t.TABLESPACE_NAME=d.TABLESPACE_NAME group by T.TABLESPACE_NAME) max1,
(select tbs.tablespace_name,
ROUND((tot.bytes/1024/1024/1024),1) Total_GB,
ROUND(trunc(tot.bytes/1024/1024/1024-sum(nvl(fre.bytes,0))/1024/1024/1024),1) GB_used,
ROUND(trunc(sum(nvl(fre.bytes,0))/1024/1024/1024),1) GB_free,
(1-sum(nvl(fre.bytes,0))/tot.bytes)*100 pct,
decode(
greatest((1-sum(nvl(fre.bytes,0))/tot.bytes)*100, 90),
90, '', '*'
) pct_warn
from dba_free_space fre,
(select tablespace_name, sum(bytes) bytes
from dba_data_files
group by tablespace_name) tot,
dba_tablespaces tbs
where tot.tablespace_name = tbs.tablespace_name
and fre.tablespace_name(+) = tbs.tablespace_name
group by tbs.tablespace_name, tot.bytes/1024/1024/1024, tot.bytes) avail1
where avail1.tablespace_name=max1.tablespace_name ;
--注意上面查询语句是在sqlplus下执行,最后的tablespace_name 后面要加上 ; 这个标点符号
如果在EAS查询分析器上执行,tablespace_name 后面要去掉 ; 这个标点符号
如果查询的输出结果只是PC字段是*,但最后一个字段TABLESPACEINCRSTAT没出现“Almost Full”字样,只要操作系统有空间,则会自动扩展,表示表空间没满。
如果出现Almost Full,表示对应的表空间很快满了,要加大对应的表空间。
在确定表空间满后,需要把对应的表空间名记下来,再查询数据文件所在路径:
select
TABLESPACE_NAME, FILE_NAME from dba_data_files order by 1,2
非RAC,路径会类似这样:
RAC,路径会类似这样:
FILE_NAME列显示了路径,就可以通过下面语句扩大表空间了:
非RAC增加文件方法:
alter tablespace 表空间名 add datafile '路径/新数据库文件名.dbf'size 1g autoextend on next 1g maxsize 30g;
注意:新增加的数据库文件名必须和当前的名字不同。
例如:
RAC增加文件方法:
alter tablespace 表空间名 add datafile '+磁盘组名'size 1g autoextend on next 1g maxsize 30g;
例如:
oracle表空间满了,应该怎么扩大表空间?
本文2024-09-22 20:22:15发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-113196.html