日期:2014-05-16  浏览次数:20447 次

与性能相关的数据库知识
1、数据库快照
    1)进入$ORACLE_HOME/rdbms/admin/目录
    2)在sqlplus下执行:exec dbms_workload_repository.create_snapshot;(快照收集开始和结束点)
    3)执行awrrpt,收集刚才两次执行的快照点(snapid)

2、数据库内存查看及修改方式(set linesize 180)
查看:show parameter memory
修改:alter system set sga_target=100M;

3、查看数据库链接数
查看数据库的最大链接数: show parameter process
查看每个用户占用的连接数: select count(*) count, osuser from v$session group by osuser;
修改数据库最大连接数: alter system set process = 300 scope=spfile; 重启数据库:startup force;

4、修改数据库密码
alter user sys identified by oracle;

5、查询较慢的数据库及其sql
select * from v$session_wait;

6、在Linux上查看执行计划,使用本地用户登陆
set autotrace on; (可以用sysdba用户在$ORACLE_HOME/sqlplus/admin下面grant plustrace to public副权限)
set linesize 180;
select * from table(dbms_xplan.display_cursor('09c22m2h0shcv', null, 'allstats last'));

7、追踪计划
1)观察oracle的cpu占用,使用命令top -d 1 -u oracle,进入后按F,然后选k以cpu使用率排序。
SELECT *
               FROM v$session b
              WHERE b.paddr = (SELECT addr
                                 FROM v$process c
                                WHERE c.spid = 23725);  --能查出是哪个tomcat应用在使用数据库。
2)当CPU占用率很高的时候,需要查看那句SQL导致CPU占用高,可以使用下面语句:
SELECT   /*+ ORDERED */
          sql_text
     FROM v$sqltext a
WHERE (a.hash_value, a.address) IN (
             SELECT DECODE (sql_hash_value,
                            0, prev_hash_value,
                            sql_hash_value
                           ),
                    DECODE (sql_hash_value, 0, prev_sql_addr, sql_address)
               FROM v$session b
              WHERE b.paddr = (SELECT addr
                                 FROM v$process c
                                WHERE c.spid = 14126)) 
ORDER BY piece ASC;