====================================<?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#’;