物理调优
影响磁盘I/O性能的主要原因有磁盘竞争、I/O次数过多和数据块空间的分配管理。
如果服务器上游多个磁盘,可将文件分散到各个可用磁盘上,减少对数据库的数据文件及事务日志文件的占用,从而有效地改善服务器的性能。
如果有多个磁盘可用,将两个事务日志成员放在不同的磁盘驱动器上,就可以消除日志文件可能产生的磁盘竞争
DB中,如果将数据文件存放在不同的位置,有助于降低磁盘I/O的等待时间,从而提高系统性能。因此,在一定条件下可以讲数据库中的数据文件改变位置。同时,将重做日志文件存放到不同的磁盘中也可以提高系统性能
查看数据库中数据文件以及所在的表空间的信息
SELECT TABLESPACE_NAME,FILE_NAME FROM DBA_DATA_FILES;
同一个表空间的数据文件位于同一磁盘中,按照原则来讲是不合适的
ALTER TABLESPACE t1 OFFLINE;
HOST MOVE E:\T1_1.DBF F:\T1.DBF
ALTER TABLESPACE t1 RENAME DATAFILE
‘E:\T1_1.DBA’
TO
‘F:\T1.DBF’;
ALTER TABLESPACE t1 ONLINE;
移动SYSTEM表空间中的数据文件的位置
SYSTEM表空间数据系统表空间,因此当数据库处于OPEN状态时不能被脱机
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE RENAME FILE
‘C:\app\HeatherYun\oradata\orcl\system.dbf’
TO
‘F:\system.DBF’;
ALTER DATABASE OPEN;
表空间改进
1) 控制用户占用的表空间值
在大型DB应用中,需要控制某个用户或者某一组用户所占用的磁盘空间,以防止磁盘空间耗竭
2) 不同类型数据放置到不同的表空间
3) 调整表空间大小
查看数据库中表空间的具体情况
SELECT A.TABLESPACE_NAME,A.BYTES "BYTES",
A.BYTES - SUM(NVL(B.BYTES,0)) "USED",
SUM(NVL(B.BYTES,0)) "FREE",
SUM(NVL(B.BYTES,0))/A.BYTES*100 "%FREE"
FROM DBA_DATA_FILES A,DBA_FREE_SPACE B
WHERE A.FILE_ID = B.FILE_ID(+)
GROUP BY A.TABLESPACE_NAME,A.BYTES
ORDER BY A.TABLESPACE_NAME
当表空间容量剩余百分比小于20%时就需要对其进行调整
查看表空间数据文件大小
SELECT TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 Mbytes
FROM DBA_DATA_FILES;
整合表空间碎片,使其自由空间连续
查询T1表空间的自由空间
SELECT * FROM DBA_FREE_SPACE WHERE TABLESPACE_NAME = ‘T1’;
由列表可估计相邻自由空间的真正数量。对每一行,用起始块的ID(BLOCK_ID)加上自由块(BLOCKS)的数量,如果它和下一行的块ID(BLOCK_ID)相等,则此两行是连续的
比如 128和136不是连续的,136和144是连续的
合并自由空间(尤其是在删除表产生很多自由空间后)
ALTER TABLESPACE T1 COALESCE;