首页 > 数据库 > Oracle > 表空间利用率及表空间的补充
--生成库的表空间占用率一般不会超过90%,下面的脚本执行要查看下,不需要进行实际的修改。 --查看表空间及临时表空间的使用情况 --表空间的使用情况 select a.tablespace_name, a.bytes / 1024 / 1024 "sum MB", (a.bytes - b.bytes) / 1024 / 1024 "used MB", b.bytes / 1024 / 1024 "free MB", round(((a.bytes - b.bytes) / a.bytes) * 100, 2) "used%" from (select tablespace_name, sum(bytes) bytes from dba_data_files group by tablespace_name) a, (select tablespace_name, sum(bytes) bytes, max(bytes) largest from dba_free_space group by tablespace_name) b where a.tablespace_name = b.tablespace_name order by ((a.bytes - b.bytes) / a.bytes) desc; /* tablespace3 880 848.5 31.5 96.42 tablespace2 770 729.3125 40.6875 94.72 tablespace1 78783.359375 67939.359375 10844 86.24 */ --临时表空间的使用情况 SELECT d.tablespace_name "Name", d.status "Status", TO_CHAR (NVL (a.BYTES / 1024 / 1024, 0), '99,999,990.90') "Size (M)", TO_CHAR (NVL (t.BYTES, 0) / 1024 / 1024, '99999999.99') USE, TO_CHAR (NVL (t.BYTES / a.BYTES * 100, 0), '990.00') "Used %" 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'; /* TEMP ONLINE 6,627.00 6626.00 99.98 TEMP1 ONLINE 4,700.00 4696.00 99.91 */ --增加表空间,临时表空间,临时表空间组 --根据第4步查询出来的结果,如果Used %大于80%,查询数据文件所在的路径 --查询表空间的数据文件所在的路径 --查看表空间的名字及文件所在位置 select tablespace_name, file_id, file_name, round(bytes / (1024 * 1024), 0) total_space, AUTOEXTENSIBLE from sys.dba_data_files order by tablespace_name; /* tablespace1 8 /u01/app/oracle/product/11.2.0/dbhome_1/dbs/tablespace1.DBF 300 YES tablespace2 9 /u01/app/oracle/product/11.2.0/dbhome_1/dbs/tablespace2.dbf 200 YES tablespace3 6 /u01/app/oracle/product/11.2.0/dbhome_1/dbs/Etablespace3 13248 YES tablespace4 12 /u01/app/oracle/product/11.2.0/dbhome_1/dbs/tablespace4 32768 YES */ --查询临时表空间的数据文件所在的路径 SELECT * FROM DBA_TEMP_FILES; /* /oradata/easytongdb/temp01.dbf 1 TEMP 6948913152 848256 ONLINE 1 YES /u01/app/oracle/product/11.2.0/dbhome_1/dbs/temp1.dbf 2 temp1 4928307200 601600 ONLINE 1 YES */ --常用的增加表空间,临时表空间的sql语句 --增加表空间的sql语句(datafile的文件名以查询出来的路径为准) --手工改变已存在数据文件的大小 分配大小resize ALTER DATABASE DATAFILE '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/tablespace4_1.dbf' RESIZE 1024M; --ALTER DATABASE DATAFILE '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/tablespace4' RESIZE 1024m; -- 1024M=1G,一个数据文件最大为32G 添加数据文件 --在原有表空间对应的数据文件上扩充的,每次扩50m, --但是这个数据文件的最大大小是32G,但是每个数据文件会有两个块存储其他信息,指定maxsize为31G。 ALTER TABLESPACE ET_BASIC ADD DATAFILE '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/tablespace4_1.dbf' SIZE 5G AUTOEXTEND ON NEXT 50M MAXSIZE 31G; --允许已存在的数据文件自动增长 ALTER DATABASE DATAFILE '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/tablespace4.dbf' AUTOEXTEND ON NEXT 50M MAXSIZE 31G; --修改临时表空间文件大小 --增加临时表空间大小,增加数据文件 ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/temp1.dbf' SIZE 3G AUTOEXTEND ON NEXT 128M MAXSIZE 5G; --将临时数据文件从1G大小调整为2G,根据时间情况修改 ALTER DATABASE TEMPFILE '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/temp1.dbf' RESIZE 8G; ALTER DATABASE TEMPFILE '/oradata/easytongdb/temp01.dbf' RESIZE 10G; --创建临时表空间指定临时表空间组 create temporary TABLESPACE Temp2 tempfile '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/Temp1.dbf' size 1G tablespace GROUP TempGroup; create temporary TABLESPACE Temp3 tempfile '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/Temp2.dbf' size 1G tablespace GROUP TempGroup; --修改临时表空间到临时表空间组 alter TABLESPACE Temp1 tablespace GROUP TempGroup; --修改默认临时表空间为临时表空间组 alter database default temporary TABLESPACE TempGroup;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69903557/viewspace-2749891/,如需转载,请注明出处,否则将追究法律责任。