首页 > 代码库 > 表空间满处理方法

表空间满处理方法

1、查看表空间使用情况

SQL> SELECT /*+NO_MERGE(A) NO_MERGE(B)*/B.TABLESPACE_NAME 表空间名称, ROUND((B.BYTES/1024)/1024,2) 总空间大小MB,  2         NVL2(A.BYTES,ROUND((B.BYTES-NVL(A.BYTES,0))/1024/1024,2),B.BYTES) 已使用大小MB,  3                NVL2(A.BYTES,ROUND(NVL(A.BYTES,0)/1024/1024,2),0) 未使用大小MB,  4         NVL2(A.BYTES,TO_CHAR(ROUND(((B.BYTES-NVL(A.BYTES,0))/B.BYTES)*100,2),990.0),100)||% 已使用率  5    FROM (SELECT TABLESPACE_NAME,SUM(BYTES) BYTES FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME)A,  6    (SELECT TABLESPACE_NAME,SUM(BYTES) BYTES FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME) B  7    WHERE B.TABLESPACE_NAME=A.TABLESPACE_NAME(+); 表空间名称                          总空间大小MB      已使用大小MB      未使用大小MB 已使用率------------------------------ ------------ ------------ ------------ --------UNDOTBS1                                165        13.19       151.81    8.0%SYSAUX                                 5510       374.56      5135.44    6.8%USERS                                     5         0.44         4.56    8.8%SYSTEM                                 5610       484.94      5125.06    8.6%RUSKY_DATA                             2048        36.94      2011.06    1.8%

2、查看除了系统用户以外有没有其它用户使用系统表空间

SQL> select username, default_tablespace,temporary_tablespace from dba_users where   (default_tablespace=SYSTEM   or   temporary_tablespace=SYSTEM)   and   username   not   in   (SYSTEM,SYS); USERNAME                       DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE------------------------------ ------------------------------ ------------------------------OUTLN                          SYSTEM                         TEMPMGMT_VIEW                      SYSTEM                         TEMP

3、查看某用户所使用的表空间

SQL> SELECT USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE FROM DBA_USERS WHERE USERNAME=‘RUSKY; USERNAME                       DEFAULT_TABLESPACE             TEMPORARY_TABLESPACE------------------------------ ------------------------------ ------------------------------RUSKY                           RUSKY_DATA                    RUSKY_TEMP

查看当前用户使用的表空间

SQL>   SELECT USERNAME,DEFAULT_TABLESPACE FROM USER_USERS; USERNAME                       DEFAULT_TABLESPACE------------------------------ ------------------------------RUSKY                              RUSKY_DATA

查看数据文件的存储位置、大小等信息:select * from v$datafile; select * from dba_data_files;

4、查看system和sysaux表空间是否是自动扩展的

 SQL>  select tablespace_name,AUTOEXTENSIBLE,INCREMENT_BY from dba_data_files; TABLESPACE_NAME                AUTOEXTENSIBLE INCREMENT_BY------------------------------ -------------- ------------USERS                          YES                     160SYSAUX                         YES                    1280UNDOTBS1                       YES                     640SYSTEM                         YES                    1280RUSKY_DATA                     YES                   65536SYSTEM                         YES                   64000SYSAUX                         YES                   64000

如果为自动扩展那么AUTOEXTENSIBLE字段的值应为YES,是否为NO;INCREMENT_BY 这个为每次自动扩展的空间大小。

5、采取的扩展表空间的做法

增加一个数据文件:
ALTER TABLESPACE SYSTEM ADD DATAFILE ‘/home/oracle/oradata/orcl/system02.dbf‘ size 5120M AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED;
ALTER TABLESPACE SYSAUX ADD DATAFILE ‘/home/oracle/oradata/orcl/sysaux02.dbf‘ size 5120M AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED;

或是重新调整数据文件的大小:
SQL> alter database datafile ‘/home/oracle/oradata/orcl/system01.dbf‘ resize 5120M autoextend on next 500M;
SQL> alter database datafile ‘/home/oracle/oradata/orcl/sysaux01.dbf‘ resize 5120M autoextend on next 500M;

参考资源:http://blog.chinaunix.net/uid-261392-id-2138978.html

表空间满处理方法