Oracle 10g 基础学习

4 篇文章 0 订阅

 

一.      Oracle基础

1.    Oracle系统架构图

 mem

1)Oracle包含两部分Instance和Database

2)SGA是一内存块。

3)SGA的五个部分:Share Pool;Java Pool;Large Pool;Database Buffer Cache;Redo Log Buffer.

4)Oracle server包括Instance和Oracle Dababase

5)Instance组成:内存(SGA)和后台进程(PMON、SMON、DBWR等)

6)Connection(链接)和Session(会话):Connection是Oracle客户端和后台服务器 (service process)建立的一个TCP链接;Connection完成后开始会话。

7)Oracle Database:主要包括三种核心文件类型:Data files(存储数据);Controller files (控制文件);Redo Log files(重做日志,记录数据库的修改)。Archived Log files (归档日志文件)

8)Oracle’s memory:SGA和PGA。一个实例就有一个SGA,实例启动时分配,实例一部分;一个service process(处理Connection)启动时就启动一个PGA。

9)查看SGA:SQL> show sga

2.  memory structures
     1)SGA在Oracle9i以后可自动调节。SGA_MAX_SIZE设置SGA最大值,递增单位granules,当SGA小于128M是granules为4M,大于128M时为16M。

SQL> select component,granule_size from v$sga_dynamic_components;

2)shared Pool(共享池)

共享池存储解析好的SQL语句,包括Library Cache和Data Dictionary Cache(数据 字典) Library Cache:存储经过解析编译以后的SQL或PL/SQL语句,大小由共享池大小决定。Data Dictionary Cache:存储数据库信息,数据库字典,提高访问数据库速度

3)Data Buffer Cache:包含来自于数据文件的数据和即将写到数据文件的数据,提高访问速度,性能。体积最大。查询数据是先在Data Buffer Cache查找数据,如存在直接返回用户(Cache hit),如没有记录则从磁盘数据文件读取(Cache miss)。存储的是数据块(DB_BLOCK_SIZE参数决定)

4)Redo Log Buffer:存储对数据的修改,主要用于恢复数据。LOG_BUFFER

5)Large Pool和Java Pool

6)PGA一个server process对应一个PGA,一个实例可以对应对多个PGA,对应一个SGA


3.Process Structure
      1)三种进程:User Process;Server Process;Background Process

User Process:客户端的进程。Started at the time a database user requests connection to  the Oracle server.

Server Process:主要负责和客户端连接的进程。

Background Process:后台进程。

必须存在:DBWn,PMON,CKPT,LGWR,SMON.可选进程,根据配置不同,启动不同进程。

DBWn:将Database Buffer Cache中要写入磁盘的数据写入磁盘。

LRWR:将Redo Log Buffer中的数据写入磁盘。

SMON:系统监视已经一些系统清理及恢复工作(清理临时空间以及临时段、接合空闲空间、执行实例恢复)
    PMON:进程监控

CKPT: 检查点进程(更新控制文件,数据文件头(当log switch时))
    ARCn:归档进程(非主要进程)

2)Oracle的逻辑结构。一个Oracle Server包含一个database,一个database可以有多个Tablespace,一个Tablespace可以有多个Segment,一个Segment可以有多个Extent,一个Extent是一组连续Blocks。Blocks是Oracle最小基本单位,一个Blocks对OS多个Blocks。

logic

 

附:extents 存在的理由

 

extents的特性:
1:一个extent由相连的多个blocks组成,多个extents组成一个segment,
2:oracle在为segment分配空间时,是以extent为单位
因此extents带来的好处:
  1、空间分配、释放效率将会提升
oracle建议一个segment的extents数量一般不要超过1024,而对于big table可能包含上千万个block,如果没有extent,那么oracle就要分配上千万个block,而有了extent,只要分配上千个extents就行。extent表示大量的blocks效率很高,extent并不列出所有的block,而是列出起始两个block(因为extent是联系的,起始block就能定位一个extent),oracle分配空间的时间与extents的数目呈比例,与blocks数目没有很大关系。同理,在释放空间时,extent一样可以提高操作的效率。
对字典管理的表空间,extent作用很明显,如果没有extent,数据字典中必须记录各个block,如果big table占用上千万个block,那么数据字典也会大量占用,假设数据字典会占用上百万个block,分配或释放这些big table时,还要对这些上百万block的数据字典插入会删除,岂不会额外添加很多工作,

2、全表扫描
在进行全表扫描时,利用extent包含联系blocks的特性,可以一次读出多个字段,这样就能大大减少物理IO,极大提高扫描的效率。

every thing has two side
extent带来的负面作用
表空间碎片:
如果没有extent,oracle在给segment分配空间时以block为单位,而block总是一样大的,典型的8k,16k,这时每个block都可以得到利用。有了extent,extent就是最小的分配单元,而extent的大小并不总是相等的,假设开始的的三个segment都很小,extent也不大,例如10个blocks,如果第二个的segment释放后,在中间的那个10block就空闲出来,但是如果以后segment都要求分配至少20个block的extent时,那么这10blocks的空闲空间就得不到利用,在极端情况下,表空间由1000个10block的空闲,但无法分配20block的extent。exp/imp能消除碎片,本地管理的表空间对连续的碎片有自动处理的能力,但对不连续的碎片无能为力。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值