Oracle 11g 学习笔记-14(数据库性能优化)

1-熟悉几个常用的调优参数,并加以理解,结合实际项目运用。
   Oracle 11g的初始化参数分为基本参数和高级参数两类。基本参数是一组可调整的参数,如CONTROL_FILES,DB_BLOCK SIZE,PROCESSES等;高级参数是一组精细调整的参数,如共享服务器SHARED_SERVERS等。初始化参数存放在初始化参数文件SPFILE中。SPFILE是一个二进制文件,只能由Oracle系统进行读写。常用的调优参数:
   (1) buffer_pool_keep:保留池大小(从DB_ BLOCK_ BUFFERS 分配)。目的是将对象保留在内存中,以减少I/O.
   (2) buffer_pool_recycle:循环池大小(从DB_ BLOCK_ BUFFERS分配)。目的是使用对象后将其清除,以便重复使用内存。
   (3) control file_record_keep_time:控制文件中可重新使用部分中的记录必须保留的最短时间(天数)。
   (4) cursor_space_for_time:在一个游标引用共享SQL区时,确定将SQL区保留在共享池中还是从中按过期作废处理。
   (5) db_block_buffers:缓冲区高速缓存中Oracle块的数量,该参数会显著影响个例程的SGA总大小。
   (6) db_keep_cache_size:指定KEEP缓冲池中的缓冲区数,KEEP缓冲池中的缓冲区大小是主要块大小(即db_block_size 定义的块大小)。

2-x$kccle 存放了什么信息?

SQL> desc x$kccle;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 ADDR                                               RAW(8) 
INDX                                               NUMBER 
INST_ID                                            NUMBER   --表示instance_id 
LENUM                                              NUMBER   --等同于v$log中group# 
LESIZ                                              NUMBER   --logfile size, 用blocks来计数 
LESEQ                                              NUMBER   --等同于v$log中sequence# 
LEHWS                                              NUMBER   
LEBSZ                                              NUMBER  -- block size 
LENAB                                              NUMBER 
LEFLG                                              NUMBER   --flag, 表示日志的状态 
LETHR                                              NUMBER   --等同于v$log中thread# 
LELFF                                              NUMBER   --log file forward, log file的前向链表,指向下一个log file 
LELFB                                              NUMBER   --log file backward, log file的后向链表,指向上一个log file 
LELOS                                              VARCHAR2(16)  --low scn, 等同于v$log中first_change# 
LELOT                                              VARCHAR2(20)  --low time, 等同于v$log中first_time 
LENXS                                              VARCHAR2(16)  --next scn, 与下一个logfile的low scn相同 
LENXT                                              VARCHAR2(20)  --next time 
LEPVS                                              VARCHAR2(16)  --prev scn, 与上一个logfile的low scn 
LEARF                                              NUMBER        --archive link forward 
LEARB                                              NUMBER        --archive link backward 
LEFNH                                              NUMBER        
LEFNT                                              NUMBER 
LEDUP                                              NUMBER   --等同于v$log中members

3-共享池三个主要组件是什么?分别说明…
共享池中的主要组件有以下三个。
(1)库缓存(library cache):主要缓存共享SQL和PL/SQL语句的相关信息。
(2)数据字典缓存(data dictionary cache):缓存数据字典表(如,DBA_TABLES、DBA_USERS等)的信息,用于解释权限、表结构等。
(3)UGA(user globa area):在共享服务器模式下,当没有配置大池时(即larger_pool_size=0),UGA会占用共享池(shared pool)的空间。

4-v$librarycache 存放了什么信息?

SQL> desc v$librarycache;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 NAMESPACE                                          VARCHAR2(64)
 GETS                                               NUMBER
 GETHITS                                            NUMBER
 GETHITRATIO                                        NUMBER
 PINS                                               NUMBER
 PINHITS                                            NUMBER
 PINHITRATIO                                        NUMBER
 RELOADS                                            NUMBER
 INVALIDATIONS                                      NUMBER
 DLM_LOCK_REQUESTS                                  NUMBER
 DLM_PIN_REQUESTS                                   NUMBER
 DLM_PIN_RELEASES                                   NUMBER
 DLM_INVALIDATION_REQUESTS                          NUMBER
 DLM_INVALIDATIONS                                  NUMBER

如下所示,库缓冲请求数和不命中数,可以计算命中率。

SQL> select sum(pins) 请求存取数,sum(reloads) 不命中数 from V$librarycache;

请求存取数   不命中数
---------- ----------
   1654727       1355

5-v$sysstat 存放了什么信息?

   Oracle启动后不断地收集和统计数据存取的情况,并将其存放在动态性能视图V$SYSSTAT中,其中有以下几项统计。
(1)dblock gets:该统计值为数据请求的总数。
(2)consistent gets:该统计值为通过对内存缓冲区存取即能满足的请求数。
(3)physical reads:该统计值为磁盘文件存取的总数。

6-PGA是什么?起什么作用?
   专有模式下ORACLE会给每个连接分配一个服务进程(Server Process),这个服务进程将为这个连接服务。为这个服务进程分配的内存叫做PGA。PGA不需要Latch也不需要Lock,永远不会发生竞争。
PGA组成中主要包括两部分:Session Area和Private SQL Area。

  • Session Area:包括会话跟踪信息,使用alter session命令修改的环境参数、打开的DB Links、会话特有的角色等。

  • Private SQL Area:Server Process每执行一个SQL都需要申请一个Private SQLArea,就是Cursor。Private SQL Area可以分成两个部分Persistent Area和Run-TimeArea。Private SQL Area中保存的是每个Session私有的信息,例如Cursor行数。SharedPool中有一个Public SQL Area,保存的是执行计划等共享信息。两者截然不同。

7-pag_aggregate_target 存放了什么信息?

SQL> show parameter pga_aggregate_target;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target                 big integer 0

8-查看本地数据库的PGA管理模式并写出SQL…

SQL> show parameter workarea_size_policy;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
workarea_size_policy                 string      AUTO

9-哪四种情况Oracle会进行排序操作?
当使用CREATE INDEX,ORDER BY 或GROUP BY语句时,Oracle数据库将自动执行排序的操作。通常,在以下情况Oracle会进行排序操作。
(1)在创建索引时。
(2)使用Order by的SQL语句。
(3)使用Group by的SQL语句。
(4)进行table join时,由于现有索引的不足而导致SQL优化器调用MERGE SORT。

这个章节可能概念比较多,学习来也比较吃力和模糊,原因是多方面的。在一些大项目中,系统的性能也是一个瓶颈。所以学习数据库性能调优,将来为开发也是积累了一定的性能调优技巧。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值