20151104 shared pool,latch

oracle给用户解锁 alter user scott account unlock; 设定密码:alter user scott identified by tiger;


sql语句的三大能力:投影(projection),选择(select),连接(join);

查看oracle表空间 :select * from dba_tablespaces; 

一般来讲 默认表空间:users, 临时表空间:temp

create user student identified by oracle 
default tablespace users temporary tablespace temp

创建用户student默认表空间为users临时表空间为temp

grant connect,resource to student; 授予student用户select和resource权限

show user查看当前用户

 @I:\Users\eko\Desktop\test.sql; 在命令窗口直接执行test.sql;


SGA是sql,plsql程序进行语法分析编译执行的内存区域 由库缓存(library_chche),控制结构(control_struncture)

shared_polol_size决定大小 ,oracle10g自后采用自动管理的方式。如果过小会导致latch争用

alter system set flush shared_pool 可以清楚shared_poll内存中的信息

对于sql语句 如果以前执行过,则按照以前执行的计划执行,通常是软分析或快速软分析

通过pga提交sql语句>parse语句>softparse>执行语句>通过PGA输出

没执行过 ,oracle开始分析语句的语法,语义,按照优化器规则获得最佳执行计划,在内存中保存这个语句的执行计划等相关信息,便于下次快速调用

通过pga提交语句>parse语句>hard parsw>分析与得到优化方案cbo或rbo>根据优化方案制定执行计划>执行语句>通过pga输出

sqlplus 查看共享池大小 show parameter shared_pool_size;

show parameter sga_target :查看sga_target大小  sga_target=0即为SGA手动管理

databuffercache :通常情况下,数据块读写,undo块读写,都会经过这个区,并适当保存在缓冲区,下一次操作同样数据在缓冲区会提高相应速度

oracle11g采用了更简化的内存管理 show parameter memory 

MEMORY_TARGET--操作系统的角度上 Oracle 所能使用的最大内存值。动态参数
MEMORY_MAX_TARGET--MEMORY_TARGET所能设定的最大值。非动态可调。

oracle服务器是由数据库和实例组成的,实例是内存和后台进程的总称,但是数据库是实例和文件的总称

oracle rac多个实例,一个库 

ipcs -m可以查看oracle占用的共享内存段

共享池:主要是存放sql语句 

数据库缓冲区:db_cache_size 存放数据库的数据块 db_block_size为最小单元

日志缓冲区 log_buffer 

大型池:large_pool_size 

show large 

PGA:私有全局区 


用户进程:在数据库用户请求连接到oracle服务器时启动

服务器进程:可以连接到oracle实例,它在用户建立会话时启动

后台进程:在启动oracle实例时启动

smon:处理数据库,undo,temp,表空间回收

dbwr:主要处理数据库缓冲区的数据写到硬盘

lgwr:把log_buffer的数据写到日志文件

ckpt::出发dbwr的写脏数据到数据文件

pmon:清空用户连接上来的哪些进程

用户进程:客户端或客户发起的连接进程

服务进程:服务器端期东方的为客户发起连接的进程

数据库的连接模式:专有模式,共享模式

服务器端的内存:

数据库sqa,数据库pga,服务器端的进程

共享模式:一定是连接处理速度要快,


select * from v$controlfile; 查看控制文件的存储

show parameters control

 ps -ef|grep ora_ :查看oracle后台进程


闩锁(latch)概述 
Oracle数据库使用闩锁(latch)来管理SGA内存的分配和释放.Latch是用于保护SGA区中共享数据结构的一种串行化锁定机制。Latch的实现是与操作系统相关的,尤其和一个进程是否需要等待一个latch、需要等待多长时间有关。
Latch是一种能够极快地被获取和释放的锁,它通常用于保护描述buffer cache中block的数据结构。与每个latch相联系的还有一个清除过程,当持有latch的进程成为死进程时,该清除过程就会被调用。Latch还具有相关级别,用于防止死锁,一旦一个进程在某个级别上得到一个latch,它就不可能再获得等同或低于该级别的latch。
Latch 不会造成阻塞,只会导致等待。 阻塞是一种系统设计上的问题,等待是一种系统资源争用的问题。

你可能感兴趣的:(20151104 shared pool,latch)