性能优化(六) - 数据库

来源:互联网 发布:考研网络班 编辑:程序博客网 时间:2024/06/04 20:12

1. 调优思路:

(1). 数据库连接最大数设置

(2). 回滚段大小设置

(3). 共享SGA大小设置

(4). 数据切分(水平分库、垂直分库、分区表)

(5). 找出执行时间长的SQL语句并优化SQL的执行计划

(6)查看数据库是否有死锁

(7)数据库集群

 

2. 优化措施

(1). 查看和设置数据库最大连接数

当数据库最大连接数不够时,会出现客户端连接间歇性失败,报ORA-12519错,我们可以通过以下的SQL语句来查看当前连接数和数据库允许的最大连接数,对比一下,看是否达到了最大值。

--查看当前连接数select count(*) from v$process;--查看数据库允许的最大连接数select value from v$parameter where name = 'processes'; 


(2). 修改数据库允许的最大连接数:

a. 使用sqlplus登陆数据库
sqlplus "sys/oracle as sysdba"


b. 设置数据库允许的最大连接数

alter system set processes = 300 scope = spfile;


c. 重启数据库

shutdown immediate;
startup;


d. 查看数据库允许的最大连接数

select value from v$parameter where name = 'processes';


(3). 查看数据库是否有被锁的表

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;

参考文章: http://chenjc-it.iteye.com/blog/1565139

0 0
原创粉丝点击