表空间使用率太高,需要添加数据文件的方法
1、查看表空间使用率
select tpsname “表空间名”,status “状态”,mgr “段管理”, maxsize “最大可扩空间(M)”,c_userd “当前使用率%”,max_used “可扩使用率%” from (
SELECT d.tablespace_name tpsname,d.status status,
d.segment_space_management mgr, d.contents type,
TO_CHAR(NVL(trunc(A.maxbytes / 1024 / 1024), 0),‘99G999G990’) maxsize,
TO_CHAR(NVL((a.bytes - NVL(f.bytes, 0)) / a.bytes * 100, 0),‘990D00’) c_userd,
TO_CHAR(NVL((a.bytes - NVL(f.bytes, 0)) / a.maxbytes * 100, 0),‘990D00’) max_used
FROM sys.dba_tablespaces d,
(SELECT tablespace_name,sum(bytes) bytes,SUM(case autoextensible when ‘NO’ then BYTES when ‘YES’ then MAXBYTES else null end ) maxbytes FROM dba_data_files GROUP BY tablespace_name) a,
(SELECT tablespace_name,SUM(bytes) bytes, MAX(bytes) largest_free FROM dba_free_space GROUP BY tablespace_name) f
WHERE d.tablespace_name = a.tablespace_name AND d.tablespace_name = f.tablespace_name(+)
)
where max_used>80
order by max_used desc;
2、查询表空间的相关内容
SQL> desc dba_data_files;
Name Null? Type
FILE_NAME VARCHAR2(513)
FILE_ID NUMBER
TABLESPACE_NAME VARCHAR2(30)
BYTES NUMBER
BLOCKS NUMBER
STATUS VARCHAR2(9)
RELATIVE_FNO NUMBER
AUTOEXTENSIBLE VARCHAR2(3)
MAXBYTES NUMBER
MAXBLOCKS NUMBER
INCREMENT_BY NUMBER
USER_BYTES NUMBER
USER_BLOCKS NUMBER
ONLINE_STATUS VARCHAR2(7)
SQL> select * from v$tablespace;
select FILE_NAME,TABLESPACE_NAME,BYTES/1024/1024/1024,AUTOEXTENSIBLE,MAXBYTES/1024/1024/1024 from dba_data_files where tablespace_name=’…’;
FILE_NAME
TABLESPACE_NAME BYTES/1024/1024/1024 AUT MAXBYTES/1024/1024/1024
/oracle/app/oradata/orcl/odc01.dbf
ODC_TPS .09765625 YES 31.9999847
修改格式
set linesize 300
col file_name for a50
SQL> /
FILE_NAME TABLESPACE_NAME BYTES/1024/1024/1024 AUT MAXBYTES/1024/1024/1024
/oracle/app/oradata/orcl/odc01.dbf ODC_TPS .09765625 YES 31.9999847
从这里可以知道了我们数据文件的存放位置以及命名方式。还有是否开启自动扩展功能,最大扩展的大小等等
3、查询所在表空间的物理磁盘剩余
df -hl
看他的可使用的还剩下多少,不能少于可扩展使用的大小
4、为这个表空间添加数据文件
alter tablespace ts_emr add datafile ‘/…/…/.dbf’ size 1g autoextend on