1. sql查询各表空间使用情况:
Select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name; SELECT df.tablespace_name "tablespace_name",totalspace "totalspace_M",(totalspace-freespace) "Usedspace_M", freespace "leftspace_M",ROUND((1-freespace/totalspace)*100,2) "Use_rate_%" FROM (SELECT tablespace_name,ROUND(SUM(bytes)/1024/1024) totalspace FROM dba_data_files GROUP BY tablespace_name) df,(SELECT tablespace_name,ROUND(SUM(bytes)/1024/1024) freespace FROM dba_free_space GROUP BY tablespace_name) fs where df.tablespace_name=fs.tablespace_name(+);
2. 表空间不足的解决办法:(表空间尽量让free百分比保持在10%以上,低于10%就增加datafile或者resizedatafile,一般数据文件不要超过2G)
- 第一种,增加/增大数据文件,扩大表空间
---增大数据文件:alter database datafile '全路径数据文件名称' resize ***M;
alter database datafile '/oracle/oradata/ora01/TBS_SYSDATA01' resize 10M;
---增加数据文件:alter tablespace 表空间名称 add datafile '全路径数据文件名称' size ***M;
alter tablespace TBS_LJB add datafile 'E:\ORADATA\ORA10\DATAFILE\TBS_LJB_02.DBF' size 100M ;
- 第二种,设置表空间为自动扩展方式
---alter database datafile '全路径数据文件名称' autoextend on;
alter database datafile 'E:\ORADATA\ORA10\DATAFILE\TBS_LJB_02.DBF' autoextend on; --如果自动扩展关闭,则为‘off’
3. 查看临时表空间使用情况
select d.tablespace_name tableSpaceName, nvl (a.BYTES / 1024 / 1024, 0) totalSize, nvl (a.BYTES / 1024 / 1024, 0) - nvl (t.BYTES, 0) / 1024 / 1024 freeSize, nvl (t.BYTES, 0) / 1024 / 1024 usedSize, round(NVL(t.BYTES / a.BYTES * 100, 0), 2) usedPercent from SYS.dba_tablespaces d, (select tablespace_name, sum(BYTES) BYTES from dba_temp_files group by tablespace_name) a, (select tablespace_name, sum(bytes_cached) BYTES from v$temp_extent_pool group by tablespace_name) t where d.tablespace_name = a.tablespace_name(+) and d.tablespace_name = t.tablespace_name(+) and d.extent_management like 'LOCAL' and d.CONTENTS like 'TEMPORARY';
4. 查看临时表空间大小(原始表空间大小)
BYTES , BLOCKS 显示的是临时文件有多少BYTE大小,包含多少个数据块。而USER_BYTES,USER_BLOCKS是可用的BYTE和数据块个数。因此,我们可以知道临时文件中有一部分是被系统占用的,大概可以理解成文件头信息,这一部分大小是128个block,如下图
SELECT tablespace_name,bytes,blocks,user_bytes,user_blocks,blocks-user_blocks AS system_userd FROM dba_temp_files;
5. 创建新的表空间
CREATE TABLESPACE TBS_SYSDATA DATAFILE '/home/DB/oracle/oradata/orcl/TBS_SYSDATA.dbf' SIZE 50M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
6. 查询当前存在哪些表空间
Select * from v$tablespace;
7. 查看数据库文件
SELECT TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 FROM DBA_DATA_FILES;
8.通过数据库文件查看表空间及表空间是否开启自动扩展,扩展了多少
SELECT TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024,STATUS,AUTOEXTENSIBLE,INCREMENT_BY FROM dba_data_files;
9. 删除表空间(包括数据文件)
DROP TABLESPACE TBS_SYS_DATA including contents and datafiles;
10. 查询用户使用的表空间
--查询imuse01用户所使用的缺省表空间 select USERNAME,DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE from dba_users where username=upper('imuse01');--用户名要大写 select distinct TABLESPACE_NAME from dba_segments where owner='SYS22';--查询用户使用过的所有的表空间 --查询imuse01用户所使用的临时表空间 select temporary_tablespace from dba_users where username=’imuse01’;
11. 删除数据文件
Alter tablespace name drop datafile ‘/telllin/orale/app/oradata/oracle/data01.bdf’;
...待持续更新