Oracle性能优化
一、oracle数据库优化类型
1、从未达到性能要求的数据库优化。
压力测试或者业务刚刚上线时,通过修改应用框架或者大规模的优化SQL语句进行改进,耗时最长,难度也最大。
2、量变引起质变的数据库优化
进入生产环境,随着业务的并发量、数据量的增加出现,通过增加硬件性能或存储,优化难度一般,但代价比较高。
3、突发性数据库性能故障优化
需要数据库管理员快速定位问题,提出解决方案。 优化难度最低,但时间最急迫。
二、优化目标
1、增大数据库吞吐量。如通过数据库优化增加每秒执行的事务数。
2、高效利用服务器硬件资源。如开启并行充分利用CPU和存储I/O资源加快执行速度。
三、优化方法
1、减少I/O读取次数、避免I/O争用
2、锁表问题,导致某一个业务奔溃
原因:当某一个用户正在操作一条数据时,若忘记提交,另外一个用户又要对其进行修改时。由于上个操作未提交,导致下一个修改操作一直处于等待状态,当时间长了,就会导致锁表情况的发生。
解决方法:可以通过 kill语句杀死第一个未提交的会话,或者主动对第一个窗口的修改语句进行提交,即可解除锁表情况。
3、表空间不足,即数据文件达到最大值
-----先查询对应的表空间的最大空间,和可用空间,查找出哪个表空间查找不足的情况
SELECT
UPPER
(F.TABLESPACE_NAME)
"表空间名"
,
D.TOT_GROOTTE_MB
"表空间大小(M)"
,
D.TOT_GROOTTE_MB - F.TOTAL_BYTES
"已使用空间(M)"
,
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,
2),
‘990.99‘
) ||
‘%‘
"使用比(%)"
,
F.TOTAL_BYTES
"空闲空间(M)"
,
F.MAX_BYTES
"最大块(M)"
FROM
(
SELECT
TABLESPACE_NAME,
ROUND(
SUM
(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
ROUND(
MAX
(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM
SYS.DBA_FREE_SPACE
GROUP
BY
TABLESPACE_NAME) F,
(
SELECT
DD.TABLESPACE_NAME,
ROUND(
SUM
(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM
SYS.DBA_DATA_FILES DD
GROUP
BY
DD.TABLESPACE_NAME) D
WHERE
D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER
BY
F.TABLESPACE_NAME
----根据表空间的使用情况,查询表空间对应的具体数据文件的使用情况
SELECT
t.TABLESPACE_NAME,
--表空间名
t.FILE_NAME,
--文件名
t.AUTOEXTENSIBLE,
--是否自动扩展
t.BYTES / 1024 / 1024,
--表空间初始大小
t.MAXBYTES / 1024 / 1024,
--表空间最大扩展到多少
b.CONTENTS,
--表空间类型
b.EXTENT_MANAGEMENT
--表空间管理模式
FROM
dba_data_files t, dba_tablespaces b
WHERE
t.TABLESPACE_NAME = b.TABLESPACE_NAME
alter
database
datafile
‘D:\APP\WEIHUA\ORADATA\ORCL\STUDENT1.DBF‘
resize 100M ;
2、直接再增加一个数据文件USERS02.DBF,初始化大小为100M,自动扩展,最大值为500M的数据文件
alter
tablespace STUDENT1
add
datafile
‘D:\APP\WEIHUA\ORADATA\ORCL\STUDENT1.DBF‘
size
100m
autoextend
on
next
10m maxsize 500m