====================================<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

2008-8-28 日晚数据库日志 程序全局区 排序区

大池 JAVA池 ORACLE 10G 自动共享内存管理

====================================

程序全局区:单个用户或服务器数据和控制信息的内存区域。由ORACLE 自动分配。

排序区:为由拍训的SQL语句提供内存空间 sort_area_size

select name,value from v$parameter where name like 'sort%size';
 NAME VALUE
1 sort_area_size 65536
2 sort_area_retained_size 0
内存的排序量 和磁盘的排序量 通过V$SYSSTAT数据字典查询
select name ,value from v$sysstat where name like '%sort%'
sorts (memory) 305634
sorts (disk) 0 
sorts (rows) 16529326 

大池:用于数据库备份工具----- 恢复管理器(RMAN) 由large_pool_size 确定
select name ,value from v$parameter where name like 'share%size'
  NAME VALUE
1 shared_pool_size 0
2 shared_pool_reserved_size 4823449




ORACLE 10G 自动共享内存管理

oracle 10g 中只要将参数statistics_level 设置为TYPICAL 或者ALL ,使用新参数SGA_TARGET 指出SGA内存区的总大小就可以了,不需要定义SGA数据库的每个参数的大小,数据库会根据需要在各个组件之间自动分配内存的大小


select ((select sum(value) from v$sga) -
 (select current_size from v$sga_dynamic_free_memory)) "sga_target"
 from dual
==============================================================
ORACLE 的进程结构
==============================================================
ORACLE 实例 实例包括两个部分 ,一个部分是内存中的系统全局区, 一个部分是后台进程。
oracle 实例进程结构 
 单进程ORACLE实例(一般不用)在一台机器上与性,只能一个用户
 多进程ORACLE 实例 unix /windows 2000 系统的进程分为用户进程 服务器进程 和后台进程
 数据库所占用的操作系统进程总数受参数PORCESSES 的限制
 show parameter processes 或者 select value from v$paramter where name like '%processes'
 在系统中所有进程不能超过PORCESSES的数量PROCESSES可以在参数文件中修改,在UNIX中这个数量收到系统参数semmns设置制约。
用户进程和服务器进程
  通过 数据字典 V$PROCESS,V$SESSTAT,S$SESSION 查询进程
select substr(s.sid, 1, 3) sid,
 substr(s.SERIAL#, 1, 5) ser,
 spid,
 substr(schemaname, 1, 10) schema,
 substr(type, 1, 3) typ,
 substr(decode((consistent_gets + block_gets),
 0,
 'none',
 (100 * (consistent_gets + block_gets - physical_reads) /
 (consistent_gets + block_gets))),
 1,
 4) "%hit",
 value cpu,
 substr(block_changes, 1, 5) bchng

 from v$process p, v$sesstat t, v$session s, v$sess_io i
where i.sid = s.sid
 and s.sid = t.sid
 and p.ADDR = s.PADDR(+)

SID :回话ID 号

SER :会话 序列号

SPID:对应操作系统进程

schma:数据库用户名

typ:进程类型 USE 用户 BAC 后台进程

%hit:数据缓冲区命中率

CPU: 使用CPU的时间

PCHNG:修改数据块的个数

后台进程结构

数据写入进程DBWR

日志写入进程LGWR

检查点进程CKPT

系统监控PMON

归档进程ARCH

恢复进程RECO

封锁进程LCKn

调度进程dnnn

服务器进程snnn

作业进程snp

select * from v$bgprocess


后台进程跟踪信息

设置参数文件sql_trace=true
或者alter session set sql_trace=true
tkprof 工具
 background_dump_dest 所制定的目录下
select * from v$parameter where name like '%background_dump_dest%'
然后用tkprof 工具将TRC 文件生成 txt 文件 例如:
F:\>cd F:\oracle\product\10.2.0\admin\yu10\bdump
F:\oracle\product\10.2.0\admin\yu10\bdump>tkprof yu10_lgwr_3112.trc 1.txt

锁等待问题

保持读一致性

查看数据库中目前正在等待所资源的用户,可以查询数据字典v$session v$lock

select a.username, a.sid, a.serial#, b.id1
 from v$session a, v$lock b
where a.LOCKWAIT = b.kaddr
然后用
alter system kill session ‘sid,serial#’;