日期:2014-05-16 浏览次数:20496 次
?
--- ---?-----------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;??
?
?
?
?