暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ORACLE基础学习(一)

abaoDiary 2016-03-02
311

--------------------------------------

这篇文章主要就是记录一下自己对oracle体系结构的理解,其中不免有不对的地方,请各位谅解并暴风骤雨般的指正!

--------------------------------------


oracle数据库的结构

在学习oracle数据库时,有两个概念一直很混淆,就是数据库(database)和实例(instance),采用《Oracle_Database_9i10g11g编程艺术深入数据库体系结构》一书中的解释就是:

数据库(database):物理操作系统文件或磁盘的集合。如果使用的是ASM或RAW分区时,数据库可能不是单独的操作系统文件,但定义仍然不变。

实例(instance):一组oracle后台进程/线程以及一个共享内存区,这些内存由同一计算机上运行的线程/进程所共享。

我理解的数据库(database)就是物理存在的保存数据的数据文件和一些必备的其他文件组成,一直存在的;实例(instance)就是一组共享的内存区域,随着计算机的关机而消失。(理解不对的地方,请指正!)


一、逻辑数据库结构

     oracle的逻辑数据库结构包括(从小到大):

     数据块(data block):oracle数据库中的存储的最小单元,一般是8k,数据库还支持2k,4k,16k的块

      区(extent):有相邻的多个数据块组成,空间分配的单元。

      段(segment):由多个区组成,如undo段。

      表空间(tablespace):由多个相应的段组成,包含有多个数据文件。oracle11g数据库中包含5个默认的表空间:system表空间,sysaux表空间,撤销(undo)表空间,临时(temporary)表空间,用户(user)表空间


二、物理数据库结构

      oracle的物理数据库结构包括:

      数据文件(data file):存储真实的数据(表和索引等)

      控制文件(control file):记录对数据库结构的更改信息(重要)

     重做日志文件(redo log file):联机在线的方式记录对数据操作的信息,轮训方式记录

      初始化参数文件(spfile和pfile):记录数据库的初始化参数,spfile文件为二进制服务器文件,pfile为文本文件,二者可以互相生成

      密码文件(orapwd[sid]):指定了sysdba或sysoper管理权限的数据库用户的名字

      预警日志文件(alter_[sid].log):记录实例运行期间的主要更给和事件,如日志切换、和数据库有关的错误、告警以及其他的消息

      跟踪文件(trace):记录后台进程写入的调试跟踪文件,用户进程的调试跟踪文件

     归档日志文件(archivelog):归档模式下产生的归档日志,由arch进程写入日志。

     备份文件(backup):数据库的备份


三、oracle进程

     oracle的进程主要包含了用户进程和oracle进程。

     用户进程:负责运行连接用户和数据库实例的应用,如sqlplus,pl/sql等

     oracle进程:执行oracle服务器的任务,有分为:服务器进程和后台进程。服务器进程(server process)为单独的用户进程服务的进程,每一个用户在连接数据库的时候,在会话期间创建。后台进程(backgroud process)为oracle实例真正干活的进程,最重要的包括了DBWn,LGWR,CKPT,PMON及SMON五大进程,下边分别简单介绍这五大进程的作用:

     数据库写进程(DBWn):将更改的数据从高速缓冲区写入数据文件

     日志写进程(LGWR) :将重做日志从日志缓冲区中写入联机重做日志文件

     检查点进程(CKPT):更新数据文件的头,记录检查点的详细信息,保证数据一致性

     进程监控进程(PMON):监控数据库进程,定期清理完成或失败的进程

     系统监控进程(SMON):执行实例恢复,并且合并区


    后台进程还包括其他一些进程:归档进程(ARCn),可管理进程(MMON),可管理监控进程(MMNL),内存管理进程(MMAN),作业队列调整进程(CJQO),闪回数据库进程(RVWR),跟踪数据库变化进程(CTWR),ASM进程(RBAL、ARBn、ASMB)


四、oracle内存结构

       oracle包括两种内存结构,一种为共享内存结构,一种为进程专有内存结构。共享的内存区被称为SGA(系统全局区),专有的内存区被称为PGA(程序全局区或私有内存区)

        

        SGA是实例中最重要的组成部分,其主要部件包括:

        数据库高速缓冲区(buffer cache):读取数据文件中的数据

        共享池(share pool):包含library cache,data dictionary cache等

       重做日志缓冲区(redo log buffer):包含对数据库的操作的信息

       Java池(Java pool):实例化Java对象的堆空间

       大池(large pool):存储大内存的配置,如rman

       流池(streams pool):支持oracle的流功能

     

       PGA是每个服务器进程独占的,是在用户启动会话时为每一位用户创建的一个程序全局区,可以将PGA划分为私有SQL区域和运行时区域


    

    


   

     

      

文章转载自abaoDiary,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论