oracle数据库体系

Oracle数据库有DATABASE+instance组成

其中database有datafiles、control files、redo  log files等组成

instance有memory+background组成

memory=SGA+PGA:sga是共享内存,他有shared pool、db buffer cache、redo log buffer、java pool、large pool等组成,PGA是专用的私有区域,后台进程运行时,都要有自己的内存空间。

db buffer cache:存储着从磁盘复制到数据库的数据块,它分为三种存储模式:

        db_cache_size:默认使用这种存储模式,通过LRU算法清楚不常使用的数据块;

        db_keep_cache_size:使用这种存储模式需要手动输入 alter table tab_name storage (buffer_pool keep)l在这种模式下,从磁盘提取出的表会永久的保留在内存中;

        db_recycle_cache_size:使用这种存储模式需要手动输入 alter table tab_name storage (buffer_pool recycle); 在这种模式下,从磁盘中提取出的数据用一次后直接删除;

shared_pool(共享池):有library cache和db dirctionary cache构成

         library cache:库缓存区,保存着最近最常使用的SQL语句

         database dirctionary cache:保存着最常使用的数据定义;

redo log buffer:记录了数据库的所有修改信息,其目的是为了恢复数据库

large pool:为了一些后台进程二分配的空间,主要用于RMAN的备份恢复以及并行查询。

Java pool:为了Java软件分配的内存空间;

background有pmon、smon、dbwr、lgwr、ckpt等构成,

smon:实例崩溃后自动进行修复的进程:他会根据日志进行前滚,启动数据库后,回滚未提交的事务,清理临时段等。

pmon:他与PGA有关,主要是用于清理PGA空间和回退事务。

ckpt:checkpoint(检查点),他是数据库恢复的起点,他可以手动触发,也可以自动触发,

            手动:alter system checkpoint;shutdown操作,alter  system switch logfile;都会引起完全检查点。表空间状态改变,对表空间进行备份时也会产生局部检查点;

             自动:每3S数据库都会产生一次增量检查点。

dbwr:把数据库上的脏块写到磁盘上时使用的后台进程;触发DBwr的条件有:数据库产生检查点时发生,当脏块数过大时发生,当db_buffer_cache空间不足时发生,当表空间状态改变时发生,数据库每3S会自动触发一次。

lgwr:将redo日志中的日志条目写到日志文件中;触发lgwr的条件有:当commit时发生,当redo日志1/3满时发生,在发生DBwr之前会发生一次lgwr


在database上的datafile在instance内的表现方式就是各个表空间,但是一个datafile只属于一个表空间,但是一个表空间可以有多个datafile;

数据库的表空间主要由以下五个组成,

system表空间:数据库系统表空间,记录着数据库相关的数据字典、基表等,随着数据库的创建而创建,是数据库必不可少的表空间。

sysaux表空间:系统辅助表空间,存储着以LOGMNR/MGMY/MMV等开头的数据字典。

undo表空间:回滚表空间,在数据进行DML操作之前,都会在undo表空间内留下旧的镜像,在rollback时使用。在dml没有提交之前,会在undo中创建一个CR块,在其他session读取数据时,会从undo的cr块上读取数据。但是undo表空间不能创建一个真实有数据的表。

temp表空间:临时表空间,主要是在查询时进行排序时使用。

users表空间:数据库上的业务表等都可以创建在这个表空间下。

数据库表空间在逻辑和物理上的对应关系:

               logical        physical

            database

            tablespace        OS file

            segment

            extent

            block                OS block 

块是物理I/O读取的基本单元,标准情况下1block=8K,区是分配空间的基本单元,1extent=8block,段是对象的基本单元,1segment=N extent。

表空间按功能分可以分为:永久表空间、临时表空间和undo表空间。

增加表空间的三种方式:

alter tablespace tabsp_name add datafile '目录/.dbf' size Nm;为表空间增加数据文件可以增加表空间大小。

alter database datafile db_file_num autoextent on maxsize Nm; 给表空间设置自动段增长。

alter database datafile db_file_num resize Nm;重新定义表空间大小。

undo表空间:在以下情况下会使用undo表空间:

        1.rollback时:对数据库进行DML操作时,数据库会首先将进行操作的表中的原数据记录到undo表空间中,当进行rollback操作时,从undo表空间读取操作之前表的数据。

          2.实例恢复时,会用到undo表空间

          3.为了保证数据库的读一致性:在一个会话进行dml操作并且未提交时,对表进行查询,查询会话会从undo中查询旧的镜像;
          4.在进行闪回查询时会用到undo表空间。

    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值