--- --- -----------Oracle调优--- --- --------
调优思路
1. 数据库连接最大数设置
2. 回滚段大小设置
3. 共享SGA大小设置
4. 数据切分(水平分库、垂直分库、分区表)
5. 找出执行时间长的SQL语句并优化SQL的执行计划
6、查看数据库是否有死锁
7、数据库集群
优化措施
1、查看和设置数据库最大连接数
当数据库最大连接数不够时,会出现客户端连接间歇性失败,报ORA-12519错,我们可以通过以下的SQL语句来查看当前连接数和数据库允许的最大连接数,对比一下,看是否达到了最大值。
--查看当前连接数
select count(*) from v$process;
--查看数据库允许的最大连接数
select value from v$parameter where name = 'processes';
修改数据库允许的最大连接数:
(1)使用sqlplus登陆数据库
sqlplus "sys/oracle as sysdba";
(2)设置数据库允许的最大连接数
alter system set processes = 300 scope = spfile;
(3)重启数据库
shutdown immediate;
startup;
(4)查看数据库允许的最大连接数
select value from v$parameter where name = 'processes';
6、查看数据库是否有被锁的表
SELECT A.OWNER 方案名,
A.OBJECT_NAME 表名,
B.XIDUSN 回滚段号,
B.XIDSLOT 槽号,
B.XIDSQN 序列号,
B.SESSION_ID 锁表SESSION_ID,
B.ORACLE_USERNAME 锁表用户名,
decode(D.type,
'XR',
'NULL',
'RS',
'SS(Row-S)',
'CF',
'SS(Row-S)',
'TM',
'TABLE LOCK',
'PW',
'TABLE LOCK',
'TO',
'TABLE LOCK',
'TS',
'TABLE LOCK',
'RT',
'ROW LOCK',
'TX',
'ROW LOCK',
'MR',
'S(Share)',
NULL) 锁定方式,
C.MACHINE 用户组,
C.TERMINAL 机器名,
B.OS_USER_NAME 系统用户名,
B.PROCESS 系统进程id,
DECODE(C.STATUS, 'INACTIVE', '不活动', 'ACTIVE', '活动') 活动情况,
C.SERVER,
C.SID,
C.SERIAL#,
C.PROGRAM 连接方式,
C.LOGON_TIME
FROM ALL_OBJECTS A, V$LOCKED_OBJECT B, SYS.GV_$SESSION C, v$lock d
WHERE (A.OBJECT_ID = B.OBJECT_ID)
AND (B.PROCESS = C.PROCESS)
and C.sid = d.sid
and B.LOCKED_MODE = D.LMODE
ORDER BY 1, 2;