oracle学习笔记1

随便记记,用以备忘

oracle结构组件
1.oracle由实例和database组成
database是物理的存在,是数据的集合
实例是操作oracledatabase的异种手段

我们发出的command实际上是在内存完成的,oracle先把数据从物理上读到内存中
在内存中进行改变,再写回database中去
所有这些动作的完成都依赖实例提供的内存结构和后台进程协作完成。

如图:

SGA的全称 System global area
 包括三部分:
 share pool,database buffer cache ,redo log Buffer cache
实例的后台进程包括:
PMON,SMON,DBWR,LGWR,CKPT,Others

物理的存在database:
体现在操作系统就是实实在在的物理文件
包括:
数据文件,控制文件,redo日志文件(必须三类)
参数的物理文件,口令物理文件,以及归档物理文件。(并非必须的)

用户进程和服务器进程

用户启动某个工具(如sqlplus)实际上就是启动了一个用户进程,必须通过某种方式建立与数据库的连接.当建立链接口,oracle后台就会
启动一个server process.我们发出的command就是server process通过instance进行改变的.

oracle的启动过程
startup nomount;    启动一个实例
alter database mount;  读取控制文件
alter database open;  database物理文件,对数据文件和控制文件进行一致性验证,校验其状态

instance由两部分组成:
memory structure和background process.

database由三类文件组成:
data file 数据文件
log file日志文件
control file控制文件

任何时候一个instance只能操作一个database ,但是一个database可以由多个实例操作

命令: show sga 显示一些内存结构信息
    set wrap off
    set linesize 200
    select * from v$bgprocess 所有可能会使用到的后台进程,并不是所有后台进程在
    oracle中都是必须的
    必须的有:***,rec0(实在分布式transaction的recovery)
   
database的物理结构
control files ,data files ,redo log files
可能有多个
redo log files最少都有两个
select * from v$controlfile;
select * from v$datafile;
select * from v$logfile;//查看在线日志

oracle的内存结构:
包括:系统全局区(SGA,可共享)和程序全局区(PGA,不可共享,依据是否共享服务器,pga中内容不一样);

SGA包括:
shared pool
database buffer cache写到数据文件中
redo log buffer对数据库的操作,最终会写到online log文件中。
其他结构:eg:large pool,java pool
查看sga缓冲区参数的命令:show parameter shared
          show parameter db_cache
          show parameter log
         
oracle9i后,SGA缓存区大小可以动态调整,三个缓存区内存总和SGA_MAX_SIZE。
命令:show parameter sga

alter system set db_cache_size = 64m 如果内存不够,该操作会失败
(alter session set mls_language=american);

Share pool:
alter system set shared_pool_size = 64m;
由两部分组成:library cache和data dictionary cache
library cache包含最近经常使用的sql,pl/sql的一些执行计划,编译数及文本,主要是提高代码共享
对于性能调整很重要的一方面就是必须给library cache提供充足的内存
要求library cache的命中率达到99%以上,结构上包含两部分:shared sql area 和shared plsql area


数据字典包含用户权限,访问权限对象,database的结构信息,dictionary cache=row cache
包含数据对象的结构信息,eg:select * from authors;
首先oracle会验证authors数据对象是否存在
其次进行语法分析
还要验证是否有权限
这些信息均属于数据字典的内容

 

以上两部分都不可以单独定义,必须透过share pool加以定义

oracle9i中加入了不同块大小的定义参数,show parameter db
9i以前的:db_block_buffers
9i以后的:db_cache_size
具体使用多大内存的块,oracle会根据读取的数据取对应的块,可能是2k,4k,8k,16k,32k;
在$ORACLE_HOME/admin/pfile/init.ora文件中,db_block_size=8192指定了初始安装时的块大小

动态调整database cache的命令:alter system set db_cache_size = 96m
oracle9i中,可以通过 db_cache_advice自动设置share pool的分配
alter system set db_cache_advice=on;

 

redo buffer cache
show parameter log_buffer;要求不大


large pool buffer共享服务时,用户信息(UGA)会放到large pool里面

java pool安装或者使用java时会用到.

PGA针对服务器进程而保留的内存区域

process structure进程信息
1.用户进程(不可以直接操作数据库)
2.服务器进程(操作数据库)
3.后台进程


查看oracle归档模式信息:archivae log list

后台进程:
dbwn:database writer
log writer:lgwr,把redo buffer中的信息写到日志文件
system monitor:smon
pmon:process monitor进程监控进程
ckpt:check point实现同步的
ARcn:归档日志的进程,用来自动备份在线日志

 

 

 

你可能感兴趣的:(数据结构,oracle,sql,SQL Server,cache)